starfei1314 发表于 2009-4-3 15:28:35

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);
谢谢各位!!

王梦瑶 发表于 2009-4-3 16:15:58

这道题是C语言书上的吧
***10***20Aa*1.5*-3.75,67.8(*代表空格)

starfei1314 发表于 2009-4-3 17:57:48

呵呵你是老师吧
#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);
}
为什么算出的结果 和预计的不一样 !
谢谢

王梦瑶 发表于 2009-4-3 18:17:53

呵呵,我不是老师,我是学生,你用的教材是谭浩强编写的C程序设计吧,这道题在书上89页4.7题,是吧,我也在用这本书,只会一点.
哪里不一样

w.wei 发表于 2009-4-3 19:17:23

两个牛人,梦瑶版主你太强了,连在那一页都知道,学习真认真,佩服

yangxi1215 发表于 2009-5-2 13:51:46

直接输不就行了每输一个回车或者空格就可以呀,还有a前面少个&,去地址嘛!

毒毒 发表于 2009-5-10 00:23:22

谭浩强这本书基本上学校都用的它我们也是啦...

qinghe.uestc 发表于 2009-6-16 00:30:33

我试了一下,按照这样输入是可以达到要求的:
输入:10*20Aa1.5*-3.75*0,67.8(其中*代表空格)
当然这只是其中一种输入方式。
在这个地方需要注意的地方是:
1,b与c1之间,c1与c2之间不能有其他任何字符(包括空格,回车,制表符,因为他们也是合法的char型字符)
2,x,y,z因为都是浮点数,所以他们之间有(空格,回车,制表符)是没问题的。但是要注意,scanf在接受到y之后,还要额外多接受一个浮点数(我在此处用的0),此处的0不会赋值给任何一个变量,然后是一个逗号,最后是z的值。

二楼的朋友好像是不小心,漏掉了逗号前面的那个浮点数,所以结果稍微有点偏差。

cdj423 发表于 2009-6-18 21:04:45

输入时不能限制位数,sannf(“%d。。。”)就行了, 看到后试试

jiangzuku 发表于 2009-6-22 21:55:50

有时是这样的,运行C的版本不同,结果会有不同,我用的也是同样的教材,遇到过同样的情况,照样输了,运行结果不对,是版本问题!
页: [1] 2
查看完整版本: scanf函数