Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何使用嵌套for循环计算多个平均值?_C - Fatal编程技术网

C 如何使用嵌套for循环计算多个平均值?

C 如何使用嵌套for循环计算多个平均值?,c,C,我尝试使用嵌套for循环计算多个平均值。内部的一个单独工作很好,但是当我尝试将它嵌套在外部for循环中以计算多个学生时,程序会正确地显示第一个平均值,但超出该值时,程序不会计算平均值。谁能告诉我哪里出了问题 #include <stdio.h> int main(void) { int ctr = 0, i, mark, grades, s, students; float average, gradeTotal = 0, mark; printf("

我尝试使用嵌套for循环计算多个平均值。内部的一个单独工作很好,但是当我尝试将它嵌套在外部for循环中以计算多个学生时,程序会正确地显示第一个平均值,但超出该值时,程序不会计算平均值。谁能告诉我哪里出了问题

#include <stdio.h>

int main(void)

{

    int ctr = 0, i, mark, grades, s, students;
    float average, gradeTotal = 0, mark;

    printf("how many students?\n");
    scanf("%i", &students);

    for (s = 1; s <= students; s++)
    {
        printf("Enter number of grades:\n");
        scanf("%f", &grades);

        for (i = 1; i <= grades; i++)
        {
            printf("enter mark: \n");
            scanf("%i", &mark);

            gradeTotal += mark;
        }
        average = gradeTotal/grades;
        printf("The average is %.2f\n", average);
    }

    return(0);
}
#包括
内部主(空)
{
int ctr=0,i,分数,年级,s,学生;
浮动平均值,等级合计=0,标记;
printf(“有多少学生?\n”);
scanf(“%i”和“学生”);

对于(s=1;s而言,简单的解决方法是在外循环开始时将
gradeTotal
重新初始化为零

否则,
gradeTotal
将保留所有学生的运行总数,因此打印的值将是当前学生和之前所有学生的运行总数除以
成绩
,而您需要每个学生的平均值


您可能还希望考虑变量的限制范围。例如,在外循环中定义和初始化<代码> Grand总计< /C> >(而不是在循环外定义它)将防止在循环迭代之间意外误用其值。一般来说,最好在尽可能小的范围内定义变量,因为这有助于消除诸如忘记重新初始化等问题,同时防止在其他代码中意外使用。

mark
i
在内环外需要。
s
gradestotal
gradestotal
average
在外环外不需要。
ctr
根本不需要。

在外环开始时将
gradestotal
重新初始化为零。否则,打印的平均值将是当前周期内的总和学生和所有之前的学生除以
成绩
,而你想要的是每个学生的平均成绩。它现在起作用了!非常感谢Peter!@Peter,将其作为答案发布,因为我不想因为你的努力而获得荣誉。