莫名陷入死循环OvO
#include <stdio.h>int main()
{
int ch, n = 0, sum = 0, j;
float a;
while(n <50)
{
printf("请输入第%d个同学的英语成绩(输入q可提前退出):", n+1);
scanf("%d", &ch);
if(ch == 'q')
{
break;
}
elseif(ch < 0 || ch > 100)
{
printf("非法输入请重新再试\n");
continue;
}
n++;
sum += ch;
}
for(j = 0;j <=n;j++)
{
printf("结果是第%d同学英语成绩是:%d",j,ch);
}
a = sum / (n+1);
printf("平均分是:%.2f", a);
return 0;
}
为啥输出q不应该是退出循环吗{:10_285:}
怎么还一直陷入死循环
有没有大佬知道提醒一下{:10_297:} 你的 'q' 是字符,而 ch 是整形数组 liuzhengyuan 发表于 2020-4-23 20:53
你的 'q' 是字符,而 ch 是整形数组
强制转换一下ch成字符能成不 沐丶心 发表于 2020-4-23 20:55
强制转换一下ch成字符能成不
建议搞个输入 -1 退出 liuzhengyuan 发表于 2020-4-23 20:56
建议搞个输入 -1 退出
换成if(ch == 0)貌似也不行{:10_285:} 沐丶心 发表于 2020-4-23 21:00
换成if(ch == 0)貌似也不行
我这里是可以运行的 输入-1就提前结束输入就好了!为什么要输入字符退出呢! 本帖最后由 superbe 于 2020-4-24 19:18 编辑
输入q,读取整数就会失败,陷入死循环。可以改成判断是否正确输入了整数。
还有其它问题。修改过的完整代码:
#include <stdio.h>
int main()
{
int ch, n = 0, sum = 0, j;
float a;
while (n < 50)
{
printf("请输入第%d个同学的英语成绩(输入q可提前退出):", n + 1);
if (scanf("%d", &ch) != 1)
break;
elseif (ch < 0 || ch > 100)
{
printf("非法输入请重新再试\n");
continue;
}
sum += ch;
n++;
}
for (j = 0; j < n; j++)
{
printf("第%d个同学英语成绩是: %d\n", j + 1, ch);
}
a = (float)sum / n;
printf("平均分是:%.2f\n", a);
return 0;
}
页:
[1]