编写c语言中,为甚么要多输入一个数程序才往下执行
printf("请输入9个数:\n");for(a=0;a<=8;a++){scanf("%10d%10f\n",&num[a],&x[a]);}本来需要输入9个数,但在...
printf("请输入9个数:\n");
for(a=0;a<=8;a++)
{
scanf("%10d%10f\n",&num[a],&x[a]);
}
本来需要输入9个数,但在运行时,必须输入十个数才向下执行。
而且最后输出时,却又只显示九个数。
这是怎么回事啊,求高手解答。 展开
for(a=0;a<=8;a++)
{
scanf("%10d%10f\n",&num[a],&x[a]);
}
本来需要输入9个数,但在运行时,必须输入十个数才向下执行。
而且最后输出时,却又只显示九个数。
这是怎么回事啊,求高手解答。 展开
4个回答
展开全部
请理解scanf函数的结束条件:
scanf函数__仅在每一个数据域均有数据,并按回车后__结束。
scanf("%10d%10f\n",&num[a],&x[a]);
这一句数据域有3个:%10d、%10f 和 \n!
这里\n是作为数据域,所以必须在遇到__第二个__\n时scanf才结束。
也就是说,你必须多输入一个回车才能使scanf结束。
至于输出为什么又是正确的,那是scanf并不负责清理输入缓冲区,
即不清理多余的输入,多余的输入可以作为下次的输入,包括\n!
故你可以得到正确输入。
正确方法如下:
scanf("%10d%10f",&num[a],&x[a]);
即,把 \n 去除。
如果还不明白,欢迎继续提问,不过建议google搜索_scanf函数_。
scanf函数__仅在每一个数据域均有数据,并按回车后__结束。
scanf("%10d%10f\n",&num[a],&x[a]);
这一句数据域有3个:%10d、%10f 和 \n!
这里\n是作为数据域,所以必须在遇到__第二个__\n时scanf才结束。
也就是说,你必须多输入一个回车才能使scanf结束。
至于输出为什么又是正确的,那是scanf并不负责清理输入缓冲区,
即不清理多余的输入,多余的输入可以作为下次的输入,包括\n!
故你可以得到正确输入。
正确方法如下:
scanf("%10d%10f",&num[a],&x[a]);
即,把 \n 去除。
如果还不明白,欢迎继续提问,不过建议google搜索_scanf函数_。
展开全部
scanf("%10d%10f\n",&num[a],&x[a]); 此语句中的10为指定的输出字段的宽度。如果数据的位数小于10,则左端补空格。若大于10,则按照实际位数输出。你在这里要求输入的是9个数,而输出的宽度为10,所以得输入10个才能正常运行。你也可以把%10d改为%9d.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你定义的是数组啊,数组是从0开始计算的。你把《=改《就可以了的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
有完整程序更好
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询