计算机技术论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

  • 欢迎访问 计算机技术论坛-电脑迷与初学者的家园!由于论坛管理严格,新注册会员可能遇到各种问题,无法解决的请发邮件 admin@jsjbbs.cn
查看: 10131|回复: 10

scanf函数

[复制链接]
发表于 2009-4-3 15:28:35 | 显示全部楼层 |阅读模式
请教一个题目
用下面的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(*代表空格)
 楼主| 发表于 2009-4-3 17:57:48 | 显示全部楼层
呵呵你是老师吧
#include <stdio.h>
void main()
{
int a,b;
char c1,c2;
float  x,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题,是吧,我也在用这本书,只会一点.
哪里不一样
发表于 2009-4-3 19:17:23 | 显示全部楼层
两个牛人,梦瑶版主你太强了,连在那一页都知道,学习真认真,佩服
yangxi1215 该用户已被删除
发表于 2009-5-2 13:51:46 | 显示全部楼层
直接输不就行了每输一个回车或者空格就可以呀,还有a前面少个&,去地址嘛!
发表于 2009-5-10 00:23:22 | 显示全部楼层
谭浩强这本书  基本上学校都用的它  我们也是啦...
发表于 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的值。

二楼的朋友好像是不小心,漏掉了逗号前面的那个浮点数,所以结果稍微有点偏差。
发表于 2009-6-18 21:04:45 | 显示全部楼层
输入时不能限制位数,sannf(“%d。。。”)就行了, 看到后试试
发表于 2009-6-22 21:55:50 | 显示全部楼层
有时是这样的,运行C的版本不同,结果会有不同,我用的也是同样的教材,遇到过同样的情况,照样输了,运行结果不对,是版本问题!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

无图版|手机版|计算机技术论坛 JSJBBS.CN @ 2008-2024 ( 鲁ICP备17021708号 )

技术支持 : 北京康盛新创科技有限责任公司

快速回复 返回顶部 返回列表