新手求助!
c语言吧
全部回复
仅看楼主
level 10
#include<stdio.h>
int main(){
double zcd = 1400;
double qs , qcd;
int i = 1;
while(i == 1){
printf("请输入圈长度后按回车键\n圈长度:");
if(scanf("%lf",&qcd) == 1){
qs = zcd / qcd;
printf("圈数为%.1lf\n",qs);
return 0;}
else{
printf("输入有误,请重新输入\n");};
}
}
输数字没问题,可是一输字母就这样[不高兴][不高兴]
2016年09月15日 11点09分 1
level 10
有人吗?在线等,谢谢!
2016年09月15日 11点09分 2
level 10
2016年09月15日 11点09分 3
level 10
1个葫芦
2016年09月15日 11点09分 4
level 10
2个葫芦
2016年09月15日 11点09分 5
level 10
3个葫芦
2016年09月15日 11点09分 6
level 10
4个葫芦
2016年09月15日 11点09分 7
level 6
i永远等于1
2016年09月15日 11点09分 8
level 6
懂了吗?大兄弟,外层循环 i永远等于1
2016年09月15日 11点09分 9
知道啊,有个return 0输对了可以直接结束
2016年09月15日 11点09分
问题是输字母后循环时不执行scanf了
2016年09月15日 11点09分
@傲娇型中二病℃ 直接显示错误
2016年09月15日 11点09分
程序运行。while为真且是个没有出口的循环 即死循环 i永远等于1。scanf 为假。向下运行 。
2016年09月15日 11点09分
level 8
你要结束内部循环用break,不能用return
2016年09月15日 11点09分 12
没用,还是不行,输字母一样无线错误
2016年09月15日 11点09分
因为你有个条件永远成立的循环啊,去掉循环就没有无限错误了
2016年09月15日 11点09分
@萧瑟枫520 它不是应该再次执行scanf,如果再次输入的是数字就可以打破循环了啊
2016年09月15日 11点09分
@萧瑟枫520 问题是它没有给我再次输入的机会
2016年09月15日 11点09分
level 10
按道理讲,输入字母 if条件为假 ,再次循环。这时应该会再次执行scanf再次输入,而事实上scanf并没有执行,一直错误
2016年09月15日 11点09分 13
2016年09月15日 11点09分
2016年09月15日 11点09分
@傲娇型中二病℃ 给你说了,去掉循环就不一直错误了,数字不循环是因为你写了个return
2016年09月15日 11点09分
@萧瑟枫520 那么说如果去掉return输数字也会一直循环喽?
2016年09月15日 11点09分
level 10
然而结果是这样的
2016年09月15日 11点09分 14
2016年09月15日 11点09分
level 15
这与缓冲区有关,另外你可能有些概念没掌握好
2016年09月15日 12点09分 15
请教大神[乖]我才刚学1天
2016年09月15日 12点09分
@傲娇型中二病℃ 等等你进度好快[啊]我当初学都没那么快
2016年09月15日 12点09分
回复 aaaaaaa421 :我之前学过java,虽然也是个半吊子[心碎]
2016年09月15日 12点09分
level 6
while (scanf("%lf", &qcd) == 1)
{
qs = zcd / qcd;
printf("圈数为%.1lf\n", qs);
}
puts("请重新输入");
2016年09月15日 12点09分 16
这样输对了不就真的死循环了吗。。。。。。
2016年09月15日 12点09分
@傲娇型中二病℃ 加个出口条件。 if(qcd == 'q') break;
2016年09月15日 12点09分
level 15
你想要的估计是这个效果
2016年09月15日 12点09分 17
天啊终于有懂我的了,就是这个效果,跟楼上的那个大神说的一样,原来是缓冲区的问题
2016年09月15日 12点09分
多谢了!
2016年09月15日 12点09分
呃,那个,再问一下,为什么用fflush不行啊[疑问]
2016年09月15日 12点09分
@傲娇型中二病℃ 那是vc6的方案了,据说rewind可以,但我没试过
2016年09月15日 12点09分
1 2 尾页