官渡区星耀路119号:有关c语言的一道课后题

来源:百度文库 编辑:神马品牌网 时间:2024/04/28 00:23:33
定义三个变量 int a=0,b=0,c=0;
三个输入语句scanf("%d",&a);scanf("%d",&b);scanf("%d",&c);
运行输入8.13
结果为 a=8 b=0 c=0
若输入一个. 则全是0
好像和什么键盘缓冲区有关
谁能解释清楚啊
谢谢

c语言的scanf接收变量时,判断一个变量结束的条件有:遇到1、空格;2、回车;3、非法字符
你所举出的例子就属于第三种。
程序会把8.13读入到缓冲区,然后解释:当第一个参数读入8,到.时遇到非法字符,结束。
后面两个字符都是遇到.直接结束接收,默认值为0;

这很正常吧!输入一个8.13,肯定是给a了,不过由于是整型变量,所以只会得到8,但是b,c仍为0啊!
输入一个0,还是给a了,b和C仍为0啊!

键盘的内部有一块微处理器,它控制着键盘的全部工作,比如主机加电时键盘的自检、扫描,扫描码的缓冲以及与主机的通讯等等。当一个键被按下时,微处理器便根据其位置,将字符信号转换成二进制码,传给主机和显示器。如果操作人员的输入速度很快或CPU正在进行其它的工作,就先将键入的内容送往内存中的键盘缓冲区,等CPU空闲时再从缓冲区中取出暂存的指令分析并执行。