
C语言关于scanf用法的问题
是这样一道题:设有定义:inta;floatb;执行scanf("%2d%f",&a,&b);语句时,若从键盘输入876543.0<回车>,a和b的值分别为(87和6.0...
是这样一道题:
设有定义:int a;float b;执行 scanf("%2d%f",&a,&b);语句时,若从键盘输入
876 543.0< 回车>,a和b的值分别为 ( 87和6.000000)
这是如何得出结果的呢?
1 scanf里规定了数值的宽度,如果实际输入的宽度要大于规定宽度,就会舍去多余的数字或符号么?如果是这样,就刚好和printf此种用法相反吧?
2 那个b值是怎么出来的呀,我只知道float型数据确实是有7为有效数字。但那个6的来路我实在是不清楚。
谢谢高手们的帮助~ 展开
设有定义:int a;float b;执行 scanf("%2d%f",&a,&b);语句时,若从键盘输入
876 543.0< 回车>,a和b的值分别为 ( 87和6.000000)
这是如何得出结果的呢?
1 scanf里规定了数值的宽度,如果实际输入的宽度要大于规定宽度,就会舍去多余的数字或符号么?如果是这样,就刚好和printf此种用法相反吧?
2 那个b值是怎么出来的呀,我只知道float型数据确实是有7为有效数字。但那个6的来路我实在是不清楚。
谢谢高手们的帮助~ 展开
4个回答
展开全部
记住一点,scanf认为遇到“非法输入”就结束。
scanf("%2d%f",&a,&b);中第一个格式控制字符2d的意思是读取2位,作为一个整数输入到给对应的变量a的地址中。输入876,当然只读取前2位87。这是2的作用,后面输入对于2来说,相当于非法输入。
对于%f,后面输入的是7 543.0,对于浮点型数据是不可能得到空格的,所以遇到空格,认为是非法输入,结束输入。所以b的值是6,即是6.000000
scanf("%2d%f",&a,&b);中第一个格式控制字符2d的意思是读取2位,作为一个整数输入到给对应的变量a的地址中。输入876,当然只读取前2位87。这是2的作用,后面输入对于2来说,相当于非法输入。
对于%f,后面输入的是7 543.0,对于浮点型数据是不可能得到空格的,所以遇到空格,认为是非法输入,结束输入。所以b的值是6,即是6.000000
展开全部
scanf认为遇到“非法输入”就结束
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
只有在需要格式输入和格式输出时,我们才要求写数字。(这样可以规范输入,同时可以按格式输出)。如果没有这方面的要求,直接去掉数字, 即可。另外 空格 表示下一个变量的读入。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
%2d---a:在876这个数字中取两位赋给a于是a=87,同时把876中的6自动划为下一个数字,%f---b把87后面的数字给b也就是6于是b=6
lz把2去掉就可以了
lz把2去掉就可以了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |