|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- #include <stdio.h>
- int main()
- {
- int ch[50], n = 0, sum = 0, j;
- float a;
- while(n <50)
- {
- printf("请输入第%d个同学的英语成绩(输入q可提前退出):", n+1);
- scanf("%d", &ch[n]);
- if(ch[n] == 'q')
- {
- break;
- }
- else if(ch[n] < 0 || ch[n] > 100)
- {
- printf("非法输入请重新再试\n");
- continue;
- }
- n++;
- sum += ch[n];
- }
- for(j = 0;j <=n;j++)
- {
- printf("结果是第%d同学英语成绩是:%d",j,ch[j]);
- }
- a = sum / (n+1);
- printf("平均分是:%.2f", a);
- return 0;
- }
复制代码
为啥输出q不应该是退出循环吗
怎么还一直陷入死循环
有没有大佬知道提醒一下
本帖最后由 superbe 于 2020-4-24 19:18 编辑
输入q,读取整数就会失败,陷入死循环。可以改成判断是否正确输入了整数。
还有其它问题。修改过的完整代码:
- #include <stdio.h>
- int main()
- {
- int ch[50], n = 0, sum = 0, j;
- float a;
- while (n < 50)
- {
- printf("请输入第%d个同学的英语成绩(输入q可提前退出):", n + 1);
- if (scanf("%d", &ch[n]) != 1)
- break;
- else if (ch[n] < 0 || ch[n] > 100)
- {
- printf("非法输入请重新再试\n");
- continue;
- }
- sum += ch[n];
- n++;
- }
- for (j = 0; j < n; j++)
- {
- printf("第%d个同学英语成绩是: %d\n", j + 1, ch[j]);
- }
- a = (float)sum / n;
- printf("平均分是:%.2f\n", a);
- return 0;
- }
复制代码
|
|