【时时三省】(C语言基础)习题2 scanf函数
山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省
用下面的scanf函数输入数据,使a = 3,b = 7,x = 8.5,y = 71.82,c1 = 'A',c2 ='x'在键盘上应如何输入?
分析第一个 scanf 函数:
第一个 scanf 函数为 scanf("a=%db=%d",&a,&b); 。
它的格式要求输入的内容必须严格按照 a=数字b=数字 的形式,这样才能正确地将数字分别赋值给 a 和 b 。
要使 a = 3 , b = 7 ,那么在键盘上应输入 a=3b=7 。这里注意,中间没有空格,因为格式字符串中没有规定空格。如果输入了空格, scanf 函数会认为输入不符合格式要求,导致数据赋值错误。
分析第二个 scanf 函数:
第二个 scanf 函数为 scanf("%f%e",&x,&y); 。
它要求输入两个浮点数, %f 用于接收一般形式的浮点数, %e 用于接收指数形式的浮点数。
要使 x = 8.5 , y = 71.82 ,那么在键盘上接着输入 8.5 71.82 。这里两个数之间用空格隔开,因为格式字符串中两个格式控制符之间没有其他特殊字符,所以默认用空格分隔两个输入值。如果不隔开, scanf 函数会将连续输入的字符当作一个整体来解析,导致数据赋值错误。
分析第三个 scanf 函数:
第三个 scanf 函数为 scanf("%c%c",&c1,&c2); 。
它要求输入两个字符,并且会读取输入缓冲区中的字符。
要使 c1 = 'A' , c2 = 'a' ,在输入完前面的数字后,紧接着输入 Aa ,中间不要有空格。因为如果有空格,空格也会被 c1 读取,导致 c1 为空格, c2 为 A ,不符合要求。
所以,在键盘上应按如下方式输入
a=3b=7 8.5 71.82Aa