测试分数平均值和没有指针的A,B,C,D,F等级的学生人数

时间:2018-04-15 23:28:08

标签: c++

我正在尝试制作一个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;
}

1 个答案:

答案 0 :(得分:2)

因为您只是将Fcount初始化为零。你也需要分配所有其他的。

int Acount=0,Bcount=0,Ccount=0,Dcount=0,Fcount=0;

您可能已经知道,如果没有此分配,变量将具有随机数。

您应该收到有关使用未初始化值的警告。尽可能以最严格的模式编译是一种很好的做法。这样做有助于避免这些微不足道但又耗时的错误。