C ';对于';无限循环

C ';对于';无限循环,c,infinite-loop,C,Infinite Loop,我知道以前有人问过这个问题,但我一直无法找到一个适用于我的案例的答案 我无法让这个For循环结束。我相信这很简单,有人能告诉我我做错了什么吗 #include <stdio.h> int main () { /* variable definition: */ char StudentName[100]; float ExamValue, Sum, Avg; int students, exams; int Total_Students; printf(

我知道以前有人问过这个问题,但我一直无法找到一个适用于我的案例的答案

我无法让这个For循环结束。我相信这很简单,有人能告诉我我做错了什么吗

#include <stdio.h>
int main ()
{
  /* variable definition: */
  char StudentName[100];
  float ExamValue, Sum, Avg;
  int students, exams;
  int Total_Students;

    printf("Enter total number of students: \n");
    scanf("%d", &Total_Students);

   // Loop through x students
  for (students = Total_Students; students++;)
  {
     // reset Sum to 0
     Sum =0.0;  
     printf("Enter Student Name \n");
     scanf("%s", StudentName); 

     // Nested Loop for Exams
    for (exams=0; exams < 3; exams++)
    {
        printf ("Enter exam grade: \n");
        scanf("%f", &ExamValue);
        Sum += ExamValue;
    }   
    Avg = Sum/3.0;
    printf( "Average for %s is %f\n",StudentName,Avg);
  }
  return 0;
}
#包括
int main()
{
/*变量定义:*/
char StudentName[100];
浮点ExamValue、总和、平均值;
学生,考试;
国际学生总数;
printf(“输入学生总数:\n”);
scanf(“%d”和学生总数);
//循环通过x个学生
用于(学生=学生总数;学生++;)
{
//将总和重置为0
总和=0.0;
printf(“输入学生姓名”);
scanf(“%s”,学生姓名);
//考试的嵌套循环
用于(考试=0;考试<3;考试++)
{
printf(“输入考试成绩:\n”);
scanf(“%f”和ExamValue);
总和+=ExamValue;
}   
平均值=总和/3.0;
printf(“%s的平均值为%f\n”,学生姓名,平均值);
}
返回0;
}

在外部循环中,预期在x个学生身上循环,实际上是从x个学生开始,然后到无穷大。你应该从零开始,用“学生总数”来限定它。

这段代码可以解决你的问题。 你应该这样创造条件,准确地设定起点和终点

#include <stdio.h>
int main()
{
/* variable definition: */
char StudentName[100];
float ExamValue, Sum, Avg;
int students, exams;
int Total_Students;

printf("Enter total number of students: \n");
scanf_s("%d", &Total_Students);

// Loop through x students
// you should make condition like this, set the start, end point accurately
for ( students = Total_Students; students>0; students--)
{
    // reset Sum to 0
    Sum = 0.0;
    printf("Enter Student Name : \n");
    scanf_s("%s", StudentName,sizeof(StudentName));
    getchar();

    // Nested Loop for Exams
    for (exams = 0; exams < 3; exams++)
    {
        printf("Enter exam grade: \n");
        scanf_s("%f", &ExamValue);
        Sum += ExamValue;
    }
    Avg = Sum / 3.0;
    printf("Average for %s is %f\n", StudentName, Avg);
}
return 0;
}
#包括
int main()
{
/*变量定义:*/
char StudentName[100];
浮点ExamValue、总和、平均值;
学生,考试;
国际学生总数;
printf(“输入学生总数:\n”);
scanf_s(“%d”和学生总数);
//循环通过x个学生
//你应该这样创造条件,准确地设定起点和终点
对于(学生=学生总数;学生>0;学生--)
{
//将总和重置为0
总和=0.0;
printf(“输入学生姓名:\n”);
scanf_s(“%s”,StudentName,sizeof(StudentName));
getchar();
//考试的嵌套循环
用于(考试=0;考试<3;考试++)
{
printf(“输入考试成绩:\n”);
scanf_s(“%f”和ExamValue);
总和+=ExamValue;
}
平均值=总和/3.0;
printf(“%s的平均值为%f\n”,学生姓名,平均值);
}
返回0;
}

什么是
(学生=学生总数;学生++)
应该做什么?您可能想要(students=0;students之类的东西,不是吗?现在是学习调试器的好时机。请解释原始代码行为不正常的原因。代码@Matthieu 1中只有两个更正。对于(students=Total_students;students>0;students--)->使学生总计并与学生迭代--2。scanf_s(“%s”,StudentName,sizeof(StudentName));->据我所知,它不会出错。你只需要明确地说出哪些是,为什么是,这样你的答案才有意义。现在,这只是一段代码,上面写着“现在去想想你自己”…不要编辑评论,编辑你的答案来包含你的解释。好了,兄弟,现在酷了?它不是“无限大”,而是结束了。。。