使用cout并平均错误或bug < >我使用DEV C++ +5.5.3编写了一些程序。其中一个程序是关于得到一些数字(整数)直到零,然后打印最大值、最小值、平均值。在我的电脑里一切都很好。在其他计算机中,它没有显示正确的平均值,它显示非常奇怪的数字4.612521 e+8,诸如此类。我定义了一个变量avg,计算出它的值,然后打印出来。另一个在调用cout时直接计算平均值。有人可以检查以下程序: 程序1未显示正确答案: #include <iostream> using namespace std; int main(int argc, char** argv) { int n; int max , min , count = 0 , s; float avg; cout<<"This program gets some numbers until zero and then prints maximum, minimum and average of them"<<endl<<"Please enter a number : "; cin>> n; max = n; min = n; while (n!= 0) { count ++; s+=n; if (n>max) { max = n; } if (n<min) { min = n; } cout<< "Please enter a number : "; cin>>n; } cout<<"ZERO DETECTED!\n\n"<<endl; cout<<"Maximum: "<<max<<endl; cout<<"Minimum: "<<min<<endl; avg = (float) s/count ; cout<<"Average: "<<avg<<endl; // NOTE NOTE NOTE NOTE return 0; } #include <iostream> using namespace std; int main(int argc, char** argv) { int n; int max , min , count = 0 , s; float avg; cout<<"This program gets some numbers until zero and then prints maximum, minimum and average of them"<<endl<<"Please enter a number : "; cin>> n; max = n; min = n; while (n!= 0) { count ++; s+=n; if (n>max) { max = n; } if (n<min) { min = n; } cout<< "Please enter a number : "; cin>>n; } cout<<"ZERO DETECTED!\n\n"<<endl; cout<<"Maximum: "<<max<<endl; cout<<"Minimum: "<<min<<endl; //avg = (float) s/count ; cout<<"Average: "<<(float) s/count<<endl; //NOTE NOTE NOTE NOTE return 0; } #包括 使用名称空间std; int main(int argc,字符**argv){ int n; int max,min,count=0,s; 浮动平均值; cout

使用cout并平均错误或bug < >我使用DEV C++ +5.5.3编写了一些程序。其中一个程序是关于得到一些数字(整数)直到零,然后打印最大值、最小值、平均值。在我的电脑里一切都很好。在其他计算机中,它没有显示正确的平均值,它显示非常奇怪的数字4.612521 e+8,诸如此类。我定义了一个变量avg,计算出它的值,然后打印出来。另一个在调用cout时直接计算平均值。有人可以检查以下程序: 程序1未显示正确答案: #include <iostream> using namespace std; int main(int argc, char** argv) { int n; int max , min , count = 0 , s; float avg; cout<<"This program gets some numbers until zero and then prints maximum, minimum and average of them"<<endl<<"Please enter a number : "; cin>> n; max = n; min = n; while (n!= 0) { count ++; s+=n; if (n>max) { max = n; } if (n<min) { min = n; } cout<< "Please enter a number : "; cin>>n; } cout<<"ZERO DETECTED!\n\n"<<endl; cout<<"Maximum: "<<max<<endl; cout<<"Minimum: "<<min<<endl; avg = (float) s/count ; cout<<"Average: "<<avg<<endl; // NOTE NOTE NOTE NOTE return 0; } #include <iostream> using namespace std; int main(int argc, char** argv) { int n; int max , min , count = 0 , s; float avg; cout<<"This program gets some numbers until zero and then prints maximum, minimum and average of them"<<endl<<"Please enter a number : "; cin>> n; max = n; min = n; while (n!= 0) { count ++; s+=n; if (n>max) { max = n; } if (n<min) { min = n; } cout<< "Please enter a number : "; cin>>n; } cout<<"ZERO DETECTED!\n\n"<<endl; cout<<"Maximum: "<<max<<endl; cout<<"Minimum: "<<min<<endl; //avg = (float) s/count ; cout<<"Average: "<<(float) s/count<<endl; //NOTE NOTE NOTE NOTE return 0; } #包括 使用名称空间std; int main(int argc,字符**argv){ int n; int max,min,count=0,s; 浮动平均值; cout,c++,syntax,cout,dev-c++,C++,Syntax,Cout,Dev C++,两个程序都有未定义的行为,因为s在您第一次尝试读取之前没有初始化,也没有分配值: [……] s+=n; 你所看到的所有行为,以及它显然在你的计算机上“起作用”而在别人的计算机上“不起作用”的事实,或多或少都是随机发生的 这里有一个简单的解决方法: int max , min , count = 0 , s = 0; 请注意,编译器应该向您发出有关未初始化变量的警告。如果没有,那么您可能应该选择更高的警告级别 还请注意,您的程序中还有许多其他缺陷,例如使用使用命名空间std,在同一行上声明多个

两个程序都有未定义的行为,因为
s
在您第一次尝试读取之前没有初始化,也没有分配值:

[……]

s+=n;
你所看到的所有行为,以及它显然在你的计算机上“起作用”而在别人的计算机上“不起作用”的事实,或多或少都是随机发生的

这里有一个简单的解决方法:

int max , min , count = 0 , s = 0;
请注意,编译器应该向您发出有关未初始化变量的警告。如果没有,那么您可能应该选择更高的警告级别

还请注意,您的程序中还有许多其他缺陷,例如使用
使用命名空间std
,在同一行上声明多个变量,或者某些变量名不具有很强的描述性

int max , min , count = 0 , s = 0;