回 帖 发 新 帖 刷新版面

主题:帮我我检查

#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个回复)

沙发

你那个名字是一个字符,你的输入超过了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();
}

看书仔细点啊。

板凳


名字下面为什么不能用scanf,而要用gets,我试过了,其他地方没问题了,就只是我只要把gets换成scanf就失败

3 楼


因为第二个scanf 吃回车的原因

你第一个scanf遇到回车就结束输入,然而回车还在输入缓冲区内,下一个scanf就吃掉这个回车,也就

直接停止输入,跳过了,所以后面两个一起了

4 楼

你好.我是全职网赚工作者.
如果你有时间有电脑.
想在网络上创业.请联系我..
项目绝对真实.详情QQ空间资料
加盟请联系 QQ908889846

5 楼

你好.我是全职网赚工作者.
如果你有时间有电脑.
想在网络上创业.请联系我..
项目绝对真实.详情QQ空间资料
加盟请联系 QQ908889846

我来回复

您尚未登录,请登录后再回复。点此登录或注册