-1 c++
在这个小程序中,我希望用户提示5个整数,并打印最小值和最大值。逻辑看起来还算不错,尽管如此,该min值仍打印出一个奇怪的负数。
我试图错误地更改变量的名称,以为'min'可能指的是C ++中允许的最小整数值,但结果没有改变。
#include <iostream>
using namespace std;
int main() {
int numbers[5], min = 0, max = 0;
cout << "Enter five numbers: "; // Type a number and press enter
for (int i = 0; i < 5; i++) {
cin >> numbers[i]; // Get user input from the keyboard
for ( int i = 0; i < 5; i ++ ) {
if (numbers[i] < min) {
min = numbers[i];
} else if (numbers[i] > max) {
max = numbers[i];
}
}
}
cout << "Min " << min << " Max " << max << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出:
Enter five numbers: 4 59 3 34 3
Min -447342104 Max 59
Run Code Online (Sandbox Code Playgroud)
在数组完全填充之前,您正在搜索min/ max值。
您应该使用一个循环读取5个整数,然后在第一个循环结束后查找最小/最大值:
#include <iostream>
using namespace std;
int main() {
int numbers[5], minNum, maxNum;
cout << "Enter five numbers: "; // Type a number and press enter
for (int i = 0; i < 5; i++) {
cin >> numbers[i]; // Get user input from the keyboard
}
minNum = maxNum = numbers[0];
for ( int i = 1; i < 5; i ++ ) {
if (numbers[i] < minNum) {
minNum = numbers[i];
}
if (numbers[i] > maxNum) {
maxNum = numbers[i];
}
}
cout << "Min " << minNum << " Max " << maxNum << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
或者,您可以改用标准std::minmax_element()算法:
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int numbers[5];
cout << "Enter five numbers: "; // Type a number and press enter
for (int i = 0; i < 5; i++) {
cin >> numbers[i]; // Get user input from the keyboard
}
pair<int*, int*> nums = minmax_element(numbers, numbers + 5);
cout << "Min " << *(nums.first) << " Max " << *(nums.second) << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
或者,你可以使用一个单一的一切循环,不使用多个在所有的循环:
#include <iostream>
using namespace std;
int main() {
int numbers[5], minNum = 0, maxNum = 0;
cout << "Enter five numbers: "; // Type a number and press enter
for (int i = 0; i < 5; i++) {
cin >> numbers[i]; // Get user input from the keyboard
if (i == 0) {
minNum = maxNum = numbers[i];
}
else {
if (numbers[i] < minNum) {
minNum = numbers[i];
}
if (numbers[i] > maxNum) {
maxNum = numbers[i];
}
}
/* or simpler:
minNum = std::min(minNum, numbers[i]);
maxNum = std::max(maxNum, numbers[i]);
*/
}
cout << "Min " << minNum << " Max " << maxNum << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
要么:
#include <iostream>
using namespace std;
int main() {
int numbers[5], minNum, maxNum;
cout << "Enter five numbers: "; // Type a number and press enter
cin >> numbers[0]; // Get user input from the keyboard
minNum = maxNum = numbers[i];
for (int i = 1; i < 5; i++) {
cin >> numbers[i]; // Get user input from the keyboard
if (numbers[i] < minNum) {
minNum = numbers[i];
}
if (numbers[i] > maxNum) {
maxNum = numbers[i];
}
/* or simpler:
minNum = std::min(minNum, numbers[i]);
maxNum = std::max(maxNum, numbers[i]);
*/
}
cout << "Min " << minNum << " Max " << maxNum << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
62 次 |
| 最近记录: |