博文纲领:
- 1、C语言问题:输入一个数,多次回车没反应,要再次输入才有反应,为什么?而且...
- 2、C++运行了输入按回车没反应?
- 3、c语言运行时按回车没反应,只是换行了?
- 4、c语言运行时按回车没反应,只是换行了
C语言问题:输入一个数,多次回车没反应,要再次输入才有反应,为什么?而且...
第1个问题的原因是因为scanf遇到“\n”会忽略这个空白符,并期望遇到一个非空白符来终止scanf函数,所以你在输入1后再按回车也没反应,不过再输入一个非空白符就没问题了。
没有反应的原因有很多种。比如错误输入,类型错误,代码逻辑错误。不同的情况应该分开分析。例如 scanf(%lf %lf\n,&x,&e);这样的语句在回车后就没有反应,必须输入\n后才会有反应。因为非输出控制符必须原样输入。\n在scanf函数当中并不是控制符,这里没当成换行符使用。
需要两次的原因:while (getline(cin, line)) //程序停(阻塞)在这里等待输入。你输入后,返回一个长度(非零值){ cout line endl; // 程序执行 } //到这里后,程序将继续回到while (getline(cin, line)) 处等待。
相当于第一个变量接收的值是123,而后边的两个变量还没有值,所以才提示你继续输入,而没有运行结果。解决方法如下:利用空格分隔变量,输入的时候输一个变量空一格,比如:1 2 3,这样输入的才表示三个变量分别接收。利用回车分隔,输一个数字回车一次,如:1 2 3 如有疑问,欢迎追问。
将i=i++修改为i++,让i值自增。题主代码中i = i++有问题,i值不会自增,循环不会结束。会先使用i值,即将1赋值给i,所以在while循环中i的值会一直是1,循环无法停止,所以回车后不会结束。
C++运行了输入按回车没反应?
没有反应的原因有很多种。比如错误输入,类型错误,代码逻辑错误。不同的情况应该分开分析。例如 scanf(%lf %lf\n,&x,&e);这样的语句在回车后就没有反应,必须输入\n后才会有反应。因为非输出控制符必须原样输入。\n在scanf函数当中并不是控制符,这里没当成换行符使用。
将i=i++修改为i++,让i值自增。题主代码中i = i++有问题,i值不会自增,循环不会结束。会先使用i值,即将1赋值给i,所以在while循环中i的值会一直是1,循环无法停止,所以回车后不会结束。
逻辑错误。while(x=0),输入的x为非负整数时,一直执行循环体内语句s=s+x;k++;陷入死循环。
所以可能是你输入的数据不满足自己写的程序的规范 比如,程序写 scanf(“%d”,&a);scanf(“%d”,&b);假设你的a 要分别赋值1 2 这时 你的输入应该是1空格或者换行2,而非12。当然,这只是一个简单的例子,有它的不规范之处,但我觉得还是可以说明一些问题的。
亲,直接输入一个串数字,表示的变量是第一个变量哦,相当于第一个变量接收的值是123,而后边的两个变量还没有值,所以才提示你继续输入,而没有运行结果。解决方法如下:利用空格分隔变量,输入的时候输一个变量空一格,比如:1 2 3,这样输入的才表示三个变量分别接收。
建议您查看确认下C按键是否详细卡住,或按键下方是否有灰尘杂物堵住的情况。更新杀毒软件补丁并全盘查杀病毒。出现这个问题之前是否有进行系统优化或清理,是否有误删个别系统文件或驱动的情况。
c语言运行时按回车没反应,只是换行了?
例如 scanf(%lf %lf\n,&x,&e);这样的语句在回车后就没有反应,必须输入\n后才会有反应。因为非输出控制符必须原样输入。\n在scanf函数当中并不是控制符,这里没当成换行符使用。用scanf 不要加入“\n”非输入控制符,系统在运行时会自动换行。
逻辑错误。while(x=0),输入的x为非负整数时,一直执行循环体内语句s=s+x;k++;陷入死循环。
你这个是输入一个字符【需要回车来确认输入】 ,getchar() 是得到 一个字符 ,你输入的是一串字符 。建议把getchar 改成 getch 【不需要回车确认】。
C语言程序中,正常情况下按ENTER键为运行键。如果出现按ENTER键换行的现象肯定是C语言代码有异常,仔细查询错误。
在scanf的双引号里面,建议只写各种输入格式控制符,也就是各种以%开头的符号,不要出现其他字符,否则在真正从键盘输入的时候也必须把那些字符对应输入,很麻烦的。像你这个程序,在scanf中有\n,那么就必须在输入的时候输入回车,把这个\n抵消掉,然后再次输入一个回车,才相当于正常输入完毕。
就说明光标在等着你的输入……所以可能是你输入的数据不满足自己写的程序的规范 比如,程序写 scanf(“%d”,&a);scanf(“%d”,&b);假设你的a 要分别赋值1 2 这时 你的输入应该是1空格或者换行2,而非12。当然,这只是一个简单的例子,有它的不规范之处,但我觉得还是可以说明一些问题的。
c语言运行时按回车没反应,只是换行了
没有反应的原因有很多种。比如错误输入,类型错误,代码逻辑错误。不同的情况应该分开分析。例如 scanf(%lf %lf\n,&x,&e);这样的语句在回车后就没有反应,必须输入\n后才会有反应。因为非输出控制符必须原样输入。\n在scanf函数当中并不是控制符,这里没当成换行符使用。
逻辑错误。while(x=0),输入的x为非负整数时,一直执行循环体内语句s=s+x;k++;陷入死循环。
你这个是输入一个字符【需要回车来确认输入】 ,getchar() 是得到 一个字符 ,你输入的是一串字符 。建议把getchar 改成 getch 【不需要回车确认】。
C语言程序中,正常情况下按ENTER键为运行键。如果出现按ENTER键换行的现象肯定是C语言代码有异常,仔细查询错误。
在scanf的双引号里面,建议只写各种输入格式控制符,也就是各种以%开头的符号,不要出现其他字符,否则在真正从键盘输入的时候也必须把那些字符对应输入,很麻烦的。像你这个程序,在scanf中有\n,那么就必须在输入的时候输入回车,把这个\n抵消掉,然后再次输入一个回车,才相当于正常输入完毕。