主题:帮我我检查
abcctvtv
[专家分:0] 发布于 2008-10-28 10:38:00
#include<stdio.h>
main()
{
char name;
int age;
float fsf;
printf("请输入你的姓名:");
scanf("c%",&name);
printf("请输入你的年龄:");
scanf("d%",&age);
printf("请输入你的分数:");
scanf("f%",&fsf);
getch();
}
这是我的作业,我用WIN-TC工具,我的想编一个人机对话的模式程序,首先会叫你输入姓名,然后年龄最后分数,姓名到年龄没有问题,但年龄到分数却出现在同一行,给位高手帮我检查下哪里出错了,谢谢
回复列表 (共5个回复)
沙发
tr0217 [专家分:730] 发布于 2008-10-28 13:57:00
你那个名字是一个字符,你的输入超过了1个,后面的字符由后面的输入语句读取。如果名字的输入超过两个字符的话去掉结尾的getch();你的程序会一闪而过。
遇到不知道原因的问题,你可以在中间添加输出语句把中间的变量显示出来看看,是不是你想要的结果。
还有scanf("%f",dd);是%+字母,不是字母+%
改写如下
#include<stdio.h>
main()
{
char name[12];
int age;
float fsf;
printf("请输入你的姓名:");
gets(name);
printf("%s\n",name);
printf("请输入你的年龄:");
scanf("%d",&age);
printf("%d\n",age);
printf("请输入你的分数:");
scanf("%f",&fsf);
printf("%f\n",fsf);
getch();
}
看书仔细点啊。
板凳
abcctvtv [专家分:0] 发布于 2008-10-28 15:15:00
名字下面为什么不能用scanf,而要用gets,我试过了,其他地方没问题了,就只是我只要把gets换成scanf就失败
3 楼
mht@ [专家分:1260] 发布于 2008-10-28 15:53:00
因为第二个scanf 吃回车的原因
你第一个scanf遇到回车就结束输入,然而回车还在输入缓冲区内,下一个scanf就吃掉这个回车,也就
直接停止输入,跳过了,所以后面两个一起了
4 楼
moke9 [专家分:30] 发布于 2010-09-02 08:00:00
你好.我是全职网赚工作者.
如果你有时间有电脑.
想在网络上创业.请联系我..
项目绝对真实.详情QQ空间资料
加盟请联系 QQ908889846
5 楼
moke9 [专家分:30] 发布于 2010-09-02 08:00:00
你好.我是全职网赚工作者.
如果你有时间有电脑.
想在网络上创业.请联系我..
项目绝对真实.详情QQ空间资料
加盟请联系 QQ908889846
我来回复