编写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个数,但在运行时,必须输入十个数才向下执行。
而且最后输出时,却又只显示九个数。
这是怎么回事啊,求高手解答。
展开
 我来答
chenqa08
2012-04-04 · TA获得超过275个赞
知道答主
回答量:105
采纳率:0%
帮助的人:111万
展开全部
请理解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函数_。
哒然小12
2012-04-04
知道答主
回答量:7
采纳率:0%
帮助的人:3.8万
展开全部
scanf("%10d%10f\n",&num[a],&x[a]); 此语句中的10为指定的输出字段的宽度。如果数据的位数小于10,则左端补空格。若大于10,则按照实际位数输出。你在这里要求输入的是9个数,而输出的宽度为10,所以得输入10个才能正常运行。你也可以把%10d改为%9d.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百晓省
2012-04-04
知道答主
回答量:2
采纳率:0%
帮助的人:3280
展开全部
你定义的是数组啊,数组是从0开始计算的。你把《=改《就可以了的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
善祖86
2012-04-04 · TA获得超过113个赞
知道答主
回答量:116
采纳率:0%
帮助的人:76.3万
展开全部
有完整程序更好
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式