【发布时间】:2018-11-26 07:26:56
【问题描述】:
所以我试图制作一个使用数组输入等级的程序,这是主循环。问题是它成功询问输入但是在第5个学生,第1个科目之后,它崩溃了,我哪里出错了???
当 studloop=4 时崩溃开始;毕业循环=2
float data[4][7];
for(studLoop = 0; studLoop < 5; studLoop++){
ave=0;
printf("\nStudent %d ID#", studLoop+1);
data[studLoop][0] = inputNum();
for(gradLoop = 1; gradLoop < 7; gradLoop++){
printf("Subject %d: ", gradLoop);
data[studLoop][gradLoop] = inputNum();
gradLoop = checkGrade(data[studLoop][gradLoop], gradLoop, ave);
}
data[studLoop][7] = ave / 6;
printf("press any key to continue...");
getch();
system("cls");
}
【问题讨论】:
-
studLoop < 5;应该是studLoop < 4;因为数组float data[4][7];只允许 4 个学生。您可能还想要gradLoop = 0;而不是gradLoop = 1;而且data[studLoop][7]也打破了数组界限。 -
学号是5,不用改了。如果我将其更改为 4,它不会询问学生 5 的成绩
-
好的,所以我们的任务是二维数组问题
-
没有学生 5 的房间,只有 4 个学生。如果你想要 5 名学生,你需要
float data[5][7]; -
想象一下网格类比,第一列(data[0][])将包含学生ID号,第二到第六列将包含学生的成绩(data[][1-6 ]) 最后一列(data[][7]) 将包含平均成绩