阅读:1700回复:19
怪谈
我知道我很菜,可是我还是想弄个明白,请各位编程大虾指教:
#include\"stdio.h\" void main() { char op; float num1,num2; printf(\"num1=\"); scanf(\"%f\",&num1); printf(\"num2=\"); scanf(\"%f\",&num2); printf(\"the operation is \"); scanf(\"%c\",&op); printf(\"\\n\"); switch(op) { case\'+\': printf(\"num1+num2=%f\\n\",num1+num2); break; case\'-\': printf(\"num1-num2=%f\\n\",num1-num2); break; case\'*\': printf(\"num1*num2=%f\\n\",num1*num2); break; case\'/\': if(num2==0) { printf(\"Devided by Zero!\\n\"); break; } printf(\"num1-num2=%f\\n\",num1/num2); break; default: printf(\"Unknown operator\\n\"); } } 我始终想不明白结果。问题出在 scanf(\"%c\",&op); ,这句压根就不执行。 把%c改成%s程序就没问题了。可是书上明明写着%c也可以呀! 很弱智的问题,大侠们灌水灌累了,不防想想,也挺有意思的。 |
|
|
沙发#
发布于:2002-05-27 22:36
在VC下和TURBO C下调试都是一个结果,真的很奇怪,谁能指点一下呀!
|
|
|
板凳#
发布于:2002-05-27 23:23
问题不怪,你提怪! ;) 为进一步,确定原因,把多余成分(语句),都去掉先! :P |
|
|
地板#
发布于:2002-05-28 08:05
因为执行scanf(\"%f\",&num2);时还有一个字符(\\xa)留在键盘缓冲区。
所多执行一次 scanf(\"%c\",&op); 就OK了。 |
|
地下室#
发布于:2002-05-28 08:23
高手!
(\\xa)是什么? |
|
|
5楼#
发布于:2002-05-28 08:26
(\\xa)就是换行符呀
|
|
6楼#
发布于:2002-05-28 18:00
因为执行scanf(\"%f\",&num2);时还有一个字符(\\xa)留在键盘缓冲区。 请问高手,那为什么用%s的时候没有这问题呢,虽然%s是字符串,但也应该从键盘缓冲区读,那也应该从换行符开始呀,它为什么不呢? |
|
|
7楼#
发布于:2002-05-28 18:03
[quote]因为执行scanf(\"%f\",&num2);时还有一个字符(\\xa)留在键盘缓冲区。 请问高手,那为什么用%s的时候没有这问题呢,虽然%s是字符串,但也应该从键盘缓冲区读,那也应该从换行符开始呀,它为什么不呢? [/quote] 你什么时候跑这里来了?竟然不理我??? |
|
|
8楼#
发布于:2002-05-28 18:39
读一个字符为什么不用getch() ?
|
|
9楼#
发布于:2002-05-28 18:43
//////////////////////
因为执行scanf(\"%f\",&num2);时还有一个字符(\\xa)留在键盘缓冲区。 所多执行一次 scanf(\"%c\",&op); 就OK了。 ////////////////////// 那执行scanf(\"%f\",&num1);后是否也在缓冲区中留有一个回车, 给num2??? 在scanf(\"%f\",&num2)时如何处理的?? 小弟不才,望指点啊! :) |
|
|
10楼#
发布于:2002-05-29 08:44
执行scanf(\"%f\",&num1);后同样留有一个换行符给num2。但是\"%f\",\"%d\"等等,是用空格或者回车作为分隔符,它会自动忽略掉前面留下的分隔符。\"%s\"用回车作为分隔符,它当然忽略掉前面的换行符啦。\"%c\"接收任意一个字符,换行符当然照收不误啦。
例如: 你可以这样输入num1和num2: num1=1.1 2.2 上面一行就可以同时输入num1和num2了。 |
|
11楼#
发布于:2002-05-29 08:58
收到,多谢!
|
|
|
12楼#
发布于:2002-05-29 09:15
收到,多谢! 不客气 |
|
|
13楼#
发布于:2002-05-29 09:18
收到谁的呀?花猫别跟人抢。
|
|
14楼#
发布于:2002-05-29 09:27
收到谁的呀?花猫别跟人抢。 灌水而已 :D |
|
|
15楼#
发布于:2002-05-29 09:31
:D :D :D
|
|
16楼#
发布于:2002-05-29 11:00
收到谁的呀?花猫别跟人抢。 收到你的指导,多谢 这次说的够明白了吧:) |
|
|
17楼#
发布于:2002-05-29 11:12
呵呵,有没有分呀?
|
|
18楼#
发布于:2002-05-29 11:16
花猫又调皮了!
|
|
|
19楼#
发布于:2002-05-29 11:18
楼上兄弟,请问怎样才能升到中级?
|
|