为什么我的c语言程序第一个要输入两行才能运行下一步?

我是初学者并且为什么这个程序无法输入输出汉字?全部代码为#include"stdio.h"#include"conio.h"main(){charname[1];prin... 我是初学者 并且为什么这个程序无法输入输出汉字?
全部代码为 #include "stdio.h"
#include "conio.h"

main ()
{
char name[1];
printf("what is your name?\n");
scanf("%s\n",&name);
printf("are you a boy or a girl?\n");
scanf("%s\n");
printf("are you sure?\n");
scanf("%s\n");
printf("your weight is ?\n");
scanf("%s\n");
printf("how tall are you?\n");
scanf("%s\n");
printf("oh my god! are you a fat fat pig?i'm sure that.\n");
scanf("%s\n");
printf("in the end,wish you happy everyday!\n");
printf("please press any key to close this window,ok?");
getch();
return 1 ;
}
展开
 我来答
沧海雄风2009
2011-08-30 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8525
采纳率:79%
帮助的人:2832万
展开全部
scanf("%s\n");
因为你的scanf("%s\n");
每个%s后面都多了一个换行

也就数说出了输入一个字符串以外

还需要再输入一个换行

输入字符串 回车 这是输入了一个字符串

然后再回车 才是输入了换行

有疑问请追问 满意请记得采纳哦
追问
可是除了第一步需要输入两行,其他的都不需要
追答
因为输入流有这个问题

会把回车也存进去 所以只有第一个有问题

因为第一个前面没有回车。

我们一般处理正确的方法是

char name[1];
printf("what is your name?\n");
scanf("%s",&name); //注意这里我都去掉了\n
printf("are you a boy or a girl?\n");
getchar();//接收掉第一次的回车 否者字符串内容就是回车 而且直接就略过 无法输入
scanf("%s"); //注意这里我都去掉了\n

而且你这个程序错误很多

第一 字符数组 长度1
汉字一个也两个长度

第二 只有第一个scanf("%s\n",&name);
是输入
下面那些 scanf("%s\n");
根本没用 没有指定输入到那个字符数组

你的程序正确大概应该是这样(因为我不知道你接受这些参数要干什么)

#include "stdio.h"
#include "conio.h"

main ()
{
char name[20];
char sex[5];
int weight;
int tall;
printf("what is your name?\n");
scanf("%s",&name);
printf("are you a boy or a girl?\n");
scanf("%s",&sex);
printf("are you sure?\n");
//scanf("%s\n"); //这两处的确认有什么意义?
printf("your weight is ?\n");
scanf("%d",&weight);
printf("how tall are you?\n");
scanf("%d",&tall);
printf("oh my god! are you a fat fat pig?i'm sure that.\n");
//scanf("%s\n"); //这两处的确认有什么意义?
printf("in the end,wish you happy everyday!\n");
printf("please press any key to close this window,ok?");
getch();
return 1 ;
}
公西尔春
2011-08-30 · TA获得超过104个赞
知道答主
回答量:163
采纳率:0%
帮助的人:84.1万
展开全部
LZ您好,有区别的。请注意getchar()函数,它会接收所有字符串,当然也包括空格、回车等,下面给您分析一下每个getchar()分别读取到了什么内容(按照您的输入"A、D"):
第一个程序
int main()
{
char adfc;
adfc=getchar(); //getchar()先得到A,并赋值给adfc
putchar(adfc);
putchar('\n');
getchar(); //此时getchar()得到的是由上面putchar()输出的回车键'\n'
putchar(getchar()); //getchar()先了得到d
putchar('\n');
system("pause");
return 0;
}

第二个程序(我设先输入A为第一种情况,先输入回车键再输入A为第二种情况)
int main()
{
getchar(); //第一种情况时此处得到的是A,第二种情况得到的是回车键
putchar(getchar()); //第一种情况此处得到的是回车键,第二种情况得到的才是a(要注意这里的getchar()不等于刚才那个!!!getchar()具有"实时性")
putchar('\n');
getchar(); //得到了回车键
putchar(getchar()); //先得到了D
putchar('\n');
system("pause");
return 0;
}

如有问题请追问~~~希望可以帮助您!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友186ad15
2011-08-30
知道答主
回答量:17
采纳率:0%
帮助的人:10.1万
展开全部
我觉得 scanf中的%s格式是以字符中的空白字符结束,当你输入字符串时,第一个回车完成字符串的输入,而程序中的”\n“又是一个回车,所以输入要有两行,才继续下一步。这是我的理解,希望对你有帮助!
追问
可是除了第一个要输入两行其他的都不需要
追答
这个确实比较奇怪,但是在这个程序中,你第一行的输入格式中的变量不对吧,我觉得应该是name而无需加&符号,而后面如果输入的我觉得有用的还是要放在具体的存储设备中像数组,而不能仅仅是输入放在临时存储空间中,这是我的想法。我也试了第二个输入再加存储单元,它的输入只是第一次需要二次,第二行就不用了,但是如果第一个存储单元缺省,第二行就要输入二行,你可以试试,我想你可以将\n符号去掉,这样就不会出现了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友5f5b28d
2011-08-30 · 超过23用户采纳过TA的回答
知道答主
回答量:121
采纳率:0%
帮助的人:66.1万
展开全部
程序太乱,数组太短
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
王启峰123
2011-08-30 · TA获得超过139个赞
知道答主
回答量:84
采纳率:0%
帮助的人:44.9万
展开全部
你都没给程序,谁知道你编的啥程序啊
追问
为什么我的c语言程序第一个要输入两行才能运行下一步?
第一行代码为 char name[1];
printf("what is your name?\n");
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式