背景:输入10个学生的成绩(范围在[0,100]内)并用数组保存输入的成绩,降序打印学生的成绩;计算平均分(保留一位小数),并统计不及格(成绩低于60分)的学生人数,降序打印成绩后,平均分和不及格学生人数各占一行。
我的代码如下:
int main(void)
{
int i = 0; j = 0, k=0, sum = 0, fail=0;
int score[10] = {};
printf("请输入10个同学的成绩:\n");
do {
for (i = 0; i < 10; i++)
{
scanf("%d", &score[i]);
if (score[i] < 0 || score[i]>100)
printf("请输入1~100的数:");
}
} while (score[i] < 0 || score[i]>100);
for (k = 0; k < 9; k++)
{
for (j = 9; j > k; j--)
{
if (score[j] > score[j - 1])
{
int temp = score[j];
score[j] = score[j - 1];
score[j - 1] = temp;
}
}
}
printf("成绩降序为:");
for (k = 0; k < 10; k++)
{
printf("%d ", score[k]);
sum += score[k];
if (score[k] < 60)
fail++;
}
printf("\n平均分:%.1f\n", (double)(sum / 10.0));
printf("不及格的人数:%d", fail);
}
运行结果:当第二次重新输入的时候,后面的代码就运行不了了,如图所示:
但如果我把do while()注释掉,这个代码能正常运行,但此时又不符合题目中只能输入0~100的成绩
不知道为什么错了可以帮我看一下吗 谢谢