c语言scanf问题
不一样的,这么都是格式字符,意义如下:格式字符 意 义 d 以十进制形式输出带符号整数(正数不输出符号) o 以八进制形式输出无符号整数(不输出前缀0) x,X 以十六进制形式输出无符号整数(不输出前缀Ox) u 以十进制形式输出无符号整数 f 以小数形式输出单、双精度实数 e,E 以指数形式输出单、双精度实数 g,G 以%f或%e中较短的输出宽度输出单、双精度实数 c 输出单个字符 s 输出字符串前面加个%,你自己对照下吧 长度:长度格式符为h,l两种,h表示按短整型量输出,l表示按长整型量输出。你这个“%lf”,是在定义输入的类型为double(双精度)是用的,不明白,你可以测试下: #include void main() { double i; scanf("%lf",&i); printf("%f
",i); } 和 #include void main() { double i; scanf("%f",&i); printf("%f
",i); } 我这里用了2个编译器分别测试了下,一个如果定义double行,输入的时候必须要用%lf,一个就不用了,用%f也行,但是精度还是有区别的,综合以上,如果定义double型数据,输入最好是用"%lf" .
scanf是C语言中的一个输入函数,与printf函数一样,都被声明在头文件stdio.h里,因此在使用scanf函数时要加上#include 。(在有一些实现中,printf函数与scanf函数在使用时可以不使用预编译命令#include 。)它是格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。scanf函数返回成功读入的数据项数,读入数据时遇到了“文件结束”则返回EOF。
scanf会返回正确输入变量的个数,一般来说用不到
这只是一个警告,无视就可以了,不影响正确运行
如果想要不出现,可以用变量接收scanf的返回值,或者在编译选项里关掉-Wunused-result
scanf中间不要加逗号,
输入的时候只要两个数字用逗号或者空格分开,scanf就能得到正确的结果
另外注意这里ab必须为float型,以对应%f
如果是int型,需用%d
double型,需用%lf
关于c语言中scanf的问题?
(2)如果:scanf中%f之间用逗号,即:scanf("%f,%f,%f",&a,&b,&c);应该输入1,2,3(中间有,)但不能没有分隔符号,您的写法,要求3个数连续输入,这样:人都没办法分辨,机器更没法分了,如:你输入12.345.67.89,是啥意思?12.34 5.6 7.89?12.3 45.6 7.89?
c语言scanf的问题?
scanf(),其调用格式为: scanf("<格式化字符串>",<地址表>);如果只按你题目说将变量C赋值为283.19,直接用scanf("%f",&c);也是正确的。此外,输出时可用 printf("%.2f\\n",c); 来控制显示小数点后两位。
问几个C语言scanf函数和printf函数问题?
第二个问题:在使用scanf()输入字母时,字母和字母之间不能有空格的(否则每二个字符就会读到空格,除非在格式串中也写明空格)。字母后面遇到数字可以用空格隔开,遇到字母不能用空格隔开的。scanf("%d%d",&x1,&x2);scanf("%c%c",&y1,&y2);正确的输入格式,答案是10空格20AB,但是这个答案...
C语言,语句scanf("","");
原问题是“C语言,语句scanf("7.2f",&a);是一个合法的scanf函数?”,我猜测这里"7.2f"应该问的是"%7.2f",但是也可能就是"7.2f",所以对这两种情况均进行分析。网上说“使用scanf函数对实型变量进行赋值时,在格式%f中不得控制小数位的精度,但在printf函数中可以使用,并且经常使用”,因此...
问一下C语言scanf的题 这道题为什么不能用scanf输入字符串? 是根本就...
当scanf读字符串的时候,空格是scanf的终止符,即读到空格scanf函数就会结束
C语言关于scanf函数的问题?
scanf("%3d",&a);是通过十进制整数3指定输入的宽度,即字符数,超出部分不赋值,故题中只把123赋值给a。scanf("%3c",&ch);通常%3c可以用来读入三个连续的字符,由于这里ch是一个变量,而不是一个数组,所以只能放下一个字符,即题中将4作为一个字符型数据,赋值给ch变量。超出的部分没有被保存...
C语言scanf()问题。为什么我输入非数字,比如字母之类的会死循环...
scanf叫做“格式化输入”函数,这个函数是“脆弱型”的输入处理,在遇到非法输入的时候,只会跳过,不会清理输入缓冲区,造成了你在while中这样做就是死循环,因为缓冲区一直有“已经输入的并且未清除的内容”。解决办法很简单,在printf语句之前,清理一下缓冲区即可:flushall();printf(...);...
C语言scanf问题
第一题答案: i:10,x:0.300000,j:5 第二题答案:x:12.300000,i:45,y:0.600000 scanf遇空格表示一个变量的输入结束.若连续输入而无空格,它会根据变量的类型来取值;第一题中,先输的是10.3,而i是整型,所以scanf认为数据是连续输入,会先根据类型来选择变量的值,所以i为10,那么.3就是下...
C语言中用scanf函数输入字符时,为什么要在输入控制符%c前面加空格?用s...
例如:scanf(" %c" ,&c),你输入了' a'(a前面有个空格),a就能被c接受。但控制符前如果没空格,那c就接受了空格,这个可以防止误操作,忽略空格输入,接受第一个非空格输入。注意事项:对于scanf()而言,%c是个较为特殊的说明符。 %c前没空格,scanf()将读取标准输入流中的第一个字符,%c...
scanf在c语言中的用法
scanf在c语言中的用法有两种,一种是输入控制符和参数;另一种是输入控制符、非输入控制符和参数。1、输入控制符和参数 输入控制符和参数是scanf函数的最简单用法,也是最常用、最基本、最重要的用法。这样通过scanf就可以在程序运行的过程中由用户来指定变量的值。该用法是从键盘输入的字符转化为“输入...
堵狡人免: (1)我初学c语言时也碰到了跟你一样的问题, 那是因为scanf函数的一个天生的毛病, 你在调用scanf()时,输入一个数字,并按下回车, 你的本意是只想让scanf接受一个数字, 但同时scanf()把那个回车也送入了缓冲区中, 你可以这样改...
方山县18038625505: C语言中关于scanf的问题 - ?
堵狡人免: #include"stdio.h" main() { int a; printf("%d",scanf("%d",&a)); // 这个很明显的告诉我们 scanf()返回的并非我们输入的数值,而返回的是输入了几个数字,这里只输入了一个数 所以返回值为1 如果改为 scanf("%d",&a); printf("%d",a); 则是把我们输入的值A存储在内存中,通过printf()语句显示出来 // }
方山县18038625505: C语言关于scanf函数问题?
堵狡人免: 第一个问题,因为你的scanf函数使用了域宽来指定读入的格式.所谓域宽,就是说读入的时候把某个宽度内的值付给某变量.那么.你第一个参数读入规则是%3c,意思是设置域宽为3,读入一个char型数据.你输入的是abcde.那么前面的abc将作为第一个参数给一个char型数据.而char型数据只需要一个字符,所以a就给了c1,其间的bc被忽略.后面同理了.第二个问题,楼上大致说明白了.不解释.
方山县18038625505: C语言 格式输入scanf函数 中的问题 - ?
堵狡人免: scanf("%d%d%d" -- %d 表示按整型 输入一个数,%d%d%d 表示按整型 输入三个数. scanf("%d%d%d",&a,&b,&c); 后面的 三个参数 &a,&b,&c 表示把依次输入的三个数,按次序 存到 a的地址里,b的地址里,c的地址里.3<回车>4<回车>5<回车> -- 输入的第一个数是 3,第二个数是 4,第三个数是 5.输入数据 的分隔符 是 <回车> 键第一个数是 3,存到 a 第二个数是 4,存到 b 第三个数是 5, 存到 c
方山县18038625505: C语言中关于scanf输入字符问题大神速来 - ?
堵狡人免: 原因是在input函数里面有接受用户输入的动作,而输入一定是以回车结束,那么这个回车就会残留在缓存中,而当你的scanf读取flag的时候,程序会自动获取前面的那个回车符号,这就是用%c会自动跳过的原因,而用%s的话,程序就会等待下一行输入,回车符号并不会被接收,建议在scanf("%c", &flag);修改为: fflush(stdin); //清空缓存 scanf("%c", &flag);
方山县18038625505: c语言,scanf 输入字符串问题 - ?
堵狡人免: scanf("%s",str2)的实际操作是将str2作为一个指针,按照字符串(%s)来读取和识别标准输入的内容,并将读取到的内容存储到指针str2所指地址中. 你的str1被赋值为空(null),即为0,所有的系统均不会允许读写地址0上的内容,所以报...
方山县18038625505: 有关C语言scanf的问题 - ?
堵狡人免: 应该是:scanf("%d%c%d%c“,&a1,&c1,&a2,&c2);%d是要跳过空白符的,而%c是不跳过空白符的 空白符包括空格,横向制表符,换行符,回车符,纵向制表符和换页符.所以要使c1=x,c2=y,那么在x,y之前不应该出现任何空白符,而10和20之前就无所谓了 符合上面条件的只有D,所以正确答案应该是D
方山县18038625505: c语言关于scanf的小问题 - ?
堵狡人免: scanf中%c不会跳过开头的空白字符,因此,需要一个空格来跳过所有空白字符.其实,如果用%d就可以不写这个空白字符,只是数据类型要改一下.
方山县18038625505: C语言的scanf问题?
堵狡人免: 这是你的输入方式惹的祸.如果你这样输入就不会有问题了:3 7 8.5 71.82 A a↓ 原因很简单,回车也是一个字符,它被当做 %c 储存在c1里面了.而你加上空格之后,回车被忽略掉了——先读入一个空格,然后把下一个字符储存在ch里面. 这样类似的情况有很多,回车啊,NULL啊这些都是惹祸精. 有一个不错的方法建议你使用:在每一个scanf的下一行,多加一个指令,getchar();.这样,输入时的回车就被getchar();拿走了,就不会再出现储存不该储存的东西这种情况了.
方山县18038625505: c语言scanf问题! - ?
堵狡人免: 这个说的结束,意思就是这一个数据的结束.而不是一个录入的结束. 比如你输入“19 20 21 22”之后回车, 电脑会读入19,然后有空格,记录完成,继续读下一个数据20;之后以此类推