这是我的计划:
#include <iostream>
using namespace std;
int main(){
int num;
int numtotal = 0;
int numcount = 0;
int big = 0;
int low = 0;
cout<<"enter number or 0 to exit"<<endl;
cin>>num;
while(num != 0){
numtotal = numtotal + num;
numcount++;
big = num;
low = num;
cout<<"enter number or 0 to extit"<<endl;
cin>>num;
if(num < low){
low = num;
}
else if(num > big){
big = num;
}
}
cout<<"total of numbers: "<<numtotal<<endl;
cout<<"totoal of numbers entered: "<<numcount<<endl;
cout<<"biggest number: "<<big<<endl;
cout<<"lowest number: "<<low<<endl;
}
“低”和“大”输出始终是用户输入的最后2个数字,例如:
( 5, 4, 3, 2)
biggest number: 2
lowest number: 0
我在这做错了什么?谢谢
如果用户在while循环内输入big
以获得所需结果,则无需将low
和num
设置为0
。
否则,如果你不这样做,你输出的最低数字将始终是0
,如果用户只输入正数,我认为你不想要:
#include <iostream>
using namespace std;
int main() {
int num;
int total = 0;
int count = 0;
cout << "Enter number or 0 to exit" << endl;
cin >> num;
int biggest = num;
int lowest = num;
while (num != 0) {
total += num;
count++;
cout << "Enter number or 0 to exit" << endl;
cin >> num;
if (num != 0) {
if (num < lowest) {
lowest = num;
} else if (num > biggest) {
biggest = num;
}
}
}
cout << "Total of numbers: " << total << endl;
cout << "Amount of numbers entered: " << count << endl;
cout << "Biggest number: " << biggest << endl;
cout << "Lowest number: " << lowest << endl;
return 0;
}
用法示例:
Enter number or 0 to exit
5
Enter number or 0 to exit
4
Enter number or 0 to exit
3
Enter number or 0 to exit
2
Enter number or 0 to exit
0
Total of numbers: 14
Amount of numbers entered: 4
Biggest number: 5
Lowest number: 2
您始终将它们设置在循环的顶部。尝试将它们放在循环之外,如下所示:
cout<<"enter number or 0 to exit"<<endl;
cin>>num;
// move them here
big = num;
low = num;
while(num != 0){
numtotal = numtotal + num;
numcount++;
cout<<"enter number or 0 to extit"<<endl;
cin>>num;
if(num < low){
low = num;
} else if(num > big){
big = num;
}
}
你总是用当前的数字覆盖你的循环中的大和低。
这可以通过初始化big
和low
一次(在循环中)来修复,如下所示:
#include <limits>
int big = std::numeric_limits<int>::min();
int low = std::numeric_limits<int>::max();
并通过将您的循环更改为
while(num != 0) {
numtotal += num;
numcount++;
cout << "enter number or 0 to exit" << endl;
cin >> num;
if(num < low)
low = num;
// note that this isn't in the else branch anymore
// to also work if num is the biggest and lowest number
if(num > big)
big = num;
}