想求 n 个数中的最小值,程序先读 n,再把第二个数直接当 mn 的初值:
int n, x, mn;
cin >> n >> mn;
for (int i = 2; i <= n; i++) {
cin >> x;
if (x > mn) {
mn = x;
}
}
cout << mn << endl;
输入 5 3 1 4 1 5,程序却输出了 5。病根是( )。
- A. 比较方向写反了:求最小值应该用 x < mn,写成 x > mn 会一路把更大的数换进来
- B. 初值不该用第二个数,应该把 mn 设成 0
- C. 循环少读了一个数,应该从 i = 1 跑到 i = n
- D. 循环干不了找最值的活,得先把 n 个数排好序