计算平均成绩

时间:2014-01-23 03:01:36

标签: c loops do-while

我的任务是:

  1. 输入班级中的学生人数,然后
  2. 输入他们的成绩列表,然后计算每个学生的平均成绩。
  3. 我写了以下程序:

    int main()
    {
        int s, i, grade, total, gradenum, finalgrade;
    
        printf("How many students?\n");
        scanf("%d", &s);
        i = 0;
    
        do
        {
            printf("Enter grade. Enter x when done.");
            scanf("%d", grade);
            total = 0;
            if (grade != 'x')
            {
                total = total + grade;
                gradenum++;
            }
            else
            {
                finalgrade = total / gradenum;
                printf("The final grade is %d", finalgrade);
                i++;
            }
        }
        while (i <= s);
        return 0;
    }
    

    这个想法是你通过用户输入获得学生数量,然后do循环应该只重复那么多次。

    但是当我编译程序时,我收到一条警告消息“未使用'总计'(据我所见,正在使用它!)。然后当我尝试运行该程序时,我陷入无限循环。

    我做错了什么?

    该类是C的简介,我们没有介绍cout,数组或类似的东西,所以我认为我不希望将它们用于此任务。仅循环(do,for,if / else)。

2 个答案:

答案 0 :(得分:0)

我认为你可以使用

char grade;
scanf("%c",&grade);
然后比较。

答案 1 :(得分:0)

你有几个问题,在这里:

  1. 您使用gradenum未初始化,出于同样的原因,您没有为每次迭代重置它,因此您的平均计算结果会出错。

  2. 您使用i初始化0,但一直持续到i <= s,因此对于3名学生,您实际上循环了4次。

  3. 您错过了为学生收集个人成绩的循环。

  4. scanf("%d", grade)应为scanf("%d", &grade)

  5. 您将整数与字符混合,最简单的解决方法是输入-1之类的东西来退出,而不是'x'

  6. 以下是修改后的版本:

    #include <stdio.h>
    
    int main()
    {
        int s, i, grade, total, gradenum, finalgrade;
    
        printf("How many students?\n");
        scanf("%d", &s);
        i = 1;
    
        do
        {
            printf("Enter grades for student %d\n", i);
            gradenum = 0;
            grade = 0;
            total = 0;
    
            while ( grade != -1 ) {   
                printf("Enter grade. Enter -1 when done.\n");
                scanf("%d", &grade);
                if (grade != -1)
                {
                    total = total + grade;
                    gradenum++;
                }
                else
                {
                    finalgrade = total / gradenum;
                    printf("The final grade is %d\n", finalgrade);
                    i++;
                }
            }
        }
        while (i <= s);
    
        return 0;
    }
    

    输出:

    paul@MacBook:~/Documents/src/scratch$ ./grades
    How many students?
    3
    Enter grades for student 1
    Enter grade. Enter -1 when done.
    77
    Enter grade. Enter -1 when done.
    68
    Enter grade. Enter -1 when done.
    71
    Enter grade. Enter -1 when done.
    -1
    The final grade is 72
    Enter grades for student 2
    Enter grade. Enter -1 when done.
    55
    Enter grade. Enter -1 when done.
    58
    Enter grade. Enter -1 when done.
    70
    Enter grade. Enter -1 when done.
    -1
    The final grade is 61
    Enter grades for student 3
    Enter grade. Enter -1 when done.
    22
    Enter grade. Enter -1 when done.
    25
    Enter grade. Enter -1 when done.
    30
    Enter grade. Enter -1 when done.
    -1
    The final grade is 25
    paul@MacBook:~/Documents/src/scratch$ 
    

    看起来像你想要的。