首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何计算C语言中的ABCDE总数

如何计算C语言中的ABCDE总数
EN

Stack Overflow用户
提问于 2021-10-16 05:32:05
回答 1查看 39关注 0票数 0

我正在尝试编写一个C程序,它可以读取学生的分数,直到用户输入文件末尾(EOF),并确定他们的成绩是A、B、C、D还是E。我在计算A、B、C、D和E的总和时遇到了麻烦。总和总是0(零)。

这就是我尝试过的

代码语言:javascript
复制
#include<stdio.h>

int main()
{

int num_stu, score, counter, total,grade;
int aCount = 0, bCount=0, cCount=0,
    dCount=0, eCount=0;

total = 0;
counter = 1;

printf("Enter how many number of students: ");
scanf("%d",&num_stu);
while (counter <=num_stu){
    printf("Enter student score: ");
    scanf("%d",&score);
if(score>=80)
    printf("Student's grade is A\n");
else
if(score>=70)
    printf("Student's grade is B\n");
else
if(score>=60)
    printf("Student's grade is C\n");
else
if(score>=50)
    printf("Student's grade is D\n");
else
    printf("Student's grade is E\n");

counter=counter+1;
}

while ((grade=getchar()) !=EOF) {

 switch (grade){

 case 'A':case'a':
 ++aCount;
 break;

 case'B': case'b':
 ++bCount;
 break;

 case'C': case'c':
 +cCount;
 break;

 case'D':case'd':
 ++dCount;
 break;

 case'E':case'e':
 ++eCount;
 break;

 case'\n': case' ':
 break;

 default:
 printf("Incorrect letter grade entered.");
 printf("Enter a new grade.\n");
 break;
}
}
printf("\n Totals for each letter grade are: \n");
printf("A: %d\n",aCount);
printf("B: %d\n",bCount);
printf("C: %d\n",cCount);
printf("D: %d\n",dCount);
printf("E: %d\n",eCount);

return 0; }

我是不是做错了什么?提前感谢!

EN

回答 1

Stack Overflow用户

发布于 2021-10-16 05:50:26

每次按enter键时,都需要删除'\n'。因此,为了消除这些问题,将一个getchar()放在while循环之前,将一个get char放在while循环中。

代码语言:javascript
复制
#include<stdio.h>

int main()
{

    int num_stu, score, counter, total,grade;
    int aCount = 0, bCount=0, cCount=0,
        dCount=0, eCount=0;

    total = 0;
    counter = 1;

    printf("Enter how many number of students: ");
    scanf("%d",&num_stu);
    while (counter <=num_stu){
            printf("Enter student score: ");
            scanf("%d",&score);
        if(score>=80)
            printf("Student's grade is A\n");
        else
        if(score>=70)
            printf("Student's grade is B\n");
        else
        if(score>=60)
            printf("Student's grade is C\n");
        else
        if(score>=50)
            printf("Student's grade is D\n");
        else
            printf("Student's grade is E\n");

        counter=counter+1;
    }

        getchar();
    while ((grade=getchar()) !=EOF) {
        getchar();

        switch (grade){

            case 'A':case'a':
            ++aCount;
            break;

            case'B': case'b':
            ++bCount;
            break;

            case'C': case'c':
            +cCount;
            break;

            case'D':case'd':
            ++dCount;
            break;

            case'E':case'e':
            ++eCount;
            break;

            case'\n': case' ':
            break;

            default:
            printf("Incorrect letter grade entered.");
            printf("Enter a new grade.\n");
            break;
        }
    }
        printf("\nTotals for each letter grade are: \n");
        printf("A: %d\n",aCount);
        printf("B: %d\n",bCount);
        printf("C: %d\n",cCount);
        printf("D: %d\n",dCount);
        printf("E: %d\n",eCount);

    return 0; 
}   
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69592950

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档