我正在尝试制作一个C ++程序,在不使用指针的情况下计算A,B,C,D,F等级的数量。我认为这很容易,但仍有问题。我的代码正确计算了C,D,F等级的数量,但每当我输入A(90-100)和B(80-89)分数时,它会显示奇怪的数字,如907517809.为什么这样工作?它计算平均得分吧。 这可能是一个基本问题,但我很好奇..提前抱歉。
#include <iostream>
using namespace std;
int main(){
int i,testscore,N;
int sum=0;
int Acount,Bcount,Ccount,Dcount,Fcount=0;
std::cout<<"How many test scores? " <<endl;
cin>> N;
if(N<1){
std::cout<<"Invalid input. try again"<<endl;
}
else if(N>25)
{
std::cout<<"1-25 only."<<endl;
}
else if(N>0 && N<25){
std::cout<<"Total number of test is: "<< N << endl;
}
for(i = 0; i < N; i++)
{
cout << "Enter the score of students " << i + 1 << ": ";
cin >>testscore;
if(testscore >= 90 && testscore < 100){
Acount++;
}
else if(testscore >= 80 && testscore < 90){
Bcount++;
}
else if(testscore >= 70 && testscore < 80){
Ccount++;
}
else if(testscore >= 60 && testscore < 70){
Dcount++;
}
else if(testscore <60){
Fcount++;
}
sum+=testscore;
}
std::cout<<"The average test score is: "<<sum/N<<endl;
std::cout<<"The number of A grades: " <<Acount<<endl;
std::cout<<"The number of B grades: " <<Bcount<<endl;
std::cout<<"The number of C grades: " <<Ccount<<endl;
std::cout<<"The number of D grades: " <<Dcount<<endl;
std::cout<<"The number of F grades: " <<Fcount<<endl;
return 0;
}
答案 0 :(得分:2)
因为您只是将Fcount初始化为零。你也需要分配所有其他的。
int Acount=0,Bcount=0,Ccount=0,Dcount=0,Fcount=0;
您可能已经知道,如果没有此分配,变量将具有随机数。
您应该收到有关使用未初始化值的警告。尽可能以最严格的模式编译是一种很好的做法。这样做有助于避免这些微不足道但又耗时的错误。