scanf函数
请教一个题目用下面的scanf函数输入数据,使 a=10,b=20,c1='A',c2='a',x=1.5,y=-3.75,z=67.8,请问在键盘上如何输入数据?
scanf("%5d%5d%c%c%f%f%*f,%f",&a,&b,&c1,&c2,&x,&y,&z);
谢谢各位!! 这道题是C语言书上的吧
***10***20Aa*1.5*-3.75,67.8(*代表空格) 呵呵你是老师吧
#include <stdio.h>
void main()
{
int a,b;
char c1,c2;
floatx,y,z;
scanf("%5d%5d%c%c%f%f*f,%f", &a,&b,&c1,&c2,&x,&y,&z);
printf("a=%d,b=%d,c1=%c,c2=%c,\n,x=%f,y=%f,z=%f",a,b,c1,c2, x,y,z);
}
为什么算出的结果 和预计的不一样 !
谢谢 呵呵,我不是老师,我是学生,你用的教材是谭浩强编写的C程序设计吧,这道题在书上89页4.7题,是吧,我也在用这本书,只会一点.
哪里不一样 两个牛人,梦瑶版主你太强了,连在那一页都知道,学习真认真,佩服 直接输不就行了每输一个回车或者空格就可以呀,还有a前面少个&,去地址嘛! 谭浩强这本书基本上学校都用的它我们也是啦... 我试了一下,按照这样输入是可以达到要求的:
输入:10*20Aa1.5*-3.75*0,67.8(其中*代表空格)
当然这只是其中一种输入方式。
在这个地方需要注意的地方是:
1,b与c1之间,c1与c2之间不能有其他任何字符(包括空格,回车,制表符,因为他们也是合法的char型字符)
2,x,y,z因为都是浮点数,所以他们之间有(空格,回车,制表符)是没问题的。但是要注意,scanf在接受到y之后,还要额外多接受一个浮点数(我在此处用的0),此处的0不会赋值给任何一个变量,然后是一个逗号,最后是z的值。
二楼的朋友好像是不小心,漏掉了逗号前面的那个浮点数,所以结果稍微有点偏差。 输入时不能限制位数,sannf(“%d。。。”)就行了, 看到后试试 有时是这样的,运行C的版本不同,结果会有不同,我用的也是同样的教材,遇到过同样的情况,照样输了,运行结果不对,是版本问题!
页:
[1]
2