小白初学C语言,求大神指点。。
c语言吧
全部回复
仅看楼主
level 3
qaz1253055078 楼主
我是想输入的是整数或者浮点数可以继续,输入的是其他字符就能提示输入错误并返回重新输入,但是我写出了返回命令之后,输入其他字符,回车之后是提示错误了,但是不能重新输入,无论按什么键就直接提示错误。我这个哪里错了,求大神指点指点,谢谢。
2014年01月26日 05点01分 1
level 6
我也是小白,但是这个问题遇到过,你试试getchar
2014年01月26日 05点01分 2
额··这个···能不能帮我修改一下··这个我不知道怎么写
2014年01月26日 05点01分
回复 qaz1253055078 :你试试这样, while(1) { printf("请输入任意数字。。。。"); fflush(stdin); scanf("%f",&a); }
2014年01月26日 12点01分
回复 Royal罗 :貌似也不行... while(1){ printf("输入任意数字,整数或小数都行,按回车继续(下同)\n"); fflush(stdin); scanf("%f",&a); printf("输入有误,请重新输入\n"); system("pause");} 这样连输入数字也不行了...
2014年01月27日 03点01分
level 6
getchar貌似有点问题,得在想哈马上
2014年01月26日 05点01分 3
level 6
楼主我思维比较复杂,写的代码不是那么简洁哈,见谅
2014年01月26日 06点01分 4
没事。。你写出来我琢磨一下。。顺便学习一下
2014年01月26日 06点01分
level 12
你得继续研究scanf
2014年01月26日 06点01分 5
嗯。。
2014年01月26日 09点01分
回复 qaz1253055078 :scanf。。
2014年01月26日 10点01分
level 10
学习C一起研究~秋秋 114 777 23
2014年01月26日 06点01分 8
level 13
[啊]莫非是Scanf把你的回车键吃掉了?在程序里面加一个Printf a看会输出什么
—我是一条很乖很可爱的小尾巴~
—我是一条可以吃的小尾巴~
—小尾巴当然是越多越好~
2014年01月26日 06点01分 9
在哪里加呢?
2014年01月26日 09点01分
level 6
楼主,我啥都发不出来……→_→
2014年01月26日 07点01分 12
[乖]那写好截图也成啊····
2014年01月26日 09点01分
level 11
回复 qaz1253055078 :scanf。。
2014年01月26日 10点01分 13
[乖]scanf那里错了?
2014年01月26日 10点01分
回复 qaz1253055078 :
2014年01月27日 11点01分
level 8
嗯,我的看看整个程序,能不能麻烦楼主贴出来看看
2014年01月27日 13点01分 14
[乖]发了···
2014年01月28日 02点01分
回复 qaz1253055078 :[不高兴]在哪?
2014年01月28日 12点01分
level 9
很好解释,scanf("%f",&a);比如输入j的话 会进入循环,但是输入流中没变还是j,因为读入不成功。 然后你懂得。。。
2014年01月27日 13点01分 15
什么叫输入流?求指点..[委屈]
2014年01月28日 02点01分
level 13
你需要在循环里加一句fseek(stdin, 0, SEEK_END);
2014年01月27日 13点01分 16
太高端了0 0 吓跑新人的
2014年01月27日 14点01分
回复 hehewsw :[乖]不懂
2014年01月28日 02点01分
level 3
qaz1253055078 楼主
@s小屋 初学者请见谅,求不笑,写这个是为了逗逗个朋友[委屈]。。。
2014年01月28日 02点01分 17
level 10
这个程序牛X啊
2014年01月28日 02点01分 18
大神就别笑我这个小白了。。
2014年01月28日 03点01分
level 10
其实是因为你的循环条件设置的不对,进入死循环了
2014年01月28日 02点01分 19
怎么解决。。求指点
2014年01月28日 03点01分
回复 qaz1253055078 :while(1)里面的1表示循环条件永远成立的,这不是作死吗?你应该设置为当达到某种条件的时候就不成立了才行
2014年01月28日 11点01分
level 11
在printf("输入有误");后面加getchar();
2014年01月28日 03点01分 20
这个貌似用来停顿的吧。。
2014年01月28日 09点01分
level 1
你搜索一下scanf的函数使用方法就知道了,这个很明显是对的scanf不了解导致的
2014年01月28日 04点01分 21
好的。。
2014年01月28日 09点01分
回复 qaz1253055078 :简单说scanf读取到非匹配字符后会将其放回原处,等待下次使用,比如scanf("%d",&i),你输入100A后,将会将100传给i,剩下的A后再下一次scanf调用时处理,而不会消失。如你例子,j不会和%d匹配,下次调用scanf还会传入j这个字符,自然也不会匹配。你可以输入j100试试结果。
2014年01月28日 10点01分
回复 zhkailing :j100也同样不会传入100.这个是scanf函数的工作方式
2014年01月28日 10点01分
level 8
楼主学C多久了,什么基础呀!我一只瞧着,不知往那方面学呀!还望楼主指点呀!
2014年01月28日 11点01分 23
level 8
楼主学C多久了,什么基础呀!我一只瞧着,不知往那方面学呀!还望楼主指点呀!
2014年01月28日 11点01分 24
level 13
a不为1,while的条件一直成立,所以一直循环。可以试试在用break跳出循环,或者在while里加入输入a的语句。希望能帮到楼主
2014年01月28日 11点01分 25
或者直接吧scanf语句放在while之前试试
2014年01月28日 11点01分
1 2 尾页