C++用for循环向数组输入数据的问题
输入时用for语句,格式为scanf("%d\n",x[9])时,若循环为10次,需要输入11个数才能输出结果,但如果去掉\n,然后每一个输入值后面加空格,输完10个后按...
输入时用for语句,格式为scanf("%d\n",x[9])时,若循环为10次,需要输入11个数才能输出结果,但如果去掉\n,然后每一个输入值后面加空格,输完10个后按回车则就可以得到结果。这是什么原因造成的?
展开
推荐于2017-11-25
展开全部
其实输入10个数也行,最后一个输完后,多按一次回车就可以了。因为scanf("%d\n",x[9])要求你要原样输入,而输入回车就可以产生\n。
举个例子,如果scanf("%d,%d",&a,&b)是这样,你的输入格式要是1,1,
如果是这样scanf("%d,",&a),你的输入格式要是1,。
举个例子,如果scanf("%d,%d",&a,&b)是这样,你的输入格式要是1,1,
如果是这样scanf("%d,",&a),你的输入格式要是1,。
更多追问追答
追问
呵呵,你说的这个我也试过了,不行,输了10个数后单纯按回车无论按几次他都不输出结果,必须要输入第11个数再输回车才出结果
追答
把你的代码贴出来可以吗
展开全部
好象是这样:你的输入是%d\n 所以每次必须是一个数字+一个回车的格式 然后输入完第十个数字之后必须有个回车才能完成输入 然后再按下回车才能回到程序中 不知大看懂没 ……
追问
这回答和上面的一样的,我的意思还是不行,还要输入第11个数
追答
从别人那里抠来的 不敢贴网址 怕有问题 不过这个很好,,我也学习了
/n在scanf中不表示等待换行符,而是读取并放弃连续的空白字符
如:
#include
int main(void)
{
int n;
scanf("%d/n",&n);// 需要输入两个数字,反正第二个不能输入空格或者直接回车,也就是说让scanf读到非空白字符为止
printf("you typed %d/n",n);
}
scanf函数是设计来读取只有格式的输入的,而在读取键盘那输入的时候,你所得到的往往并不是你所想要的,“自由格式”意味着scanf在处理换行符的时候跟其他的空白一样,格式“%d%d%d”既可读
入 1 2 3
又可读入
1
2
3
.................
作为一般规则,不能混用scanf和gets或任何其他的输入例程的调用,scanf对换行符的特殊处理几乎一定会带来问题,要们就用scanf处理所有的输入,要么干脆不用,如:
#include
int main(void)
{
int n;
char str[80];
printf("Enter a number:");
scanf("%d",&n);
printf("Enter a string");
gets(str);
printf("you typed %d and %s/n",n,str);
}
上面当向程序中输入
12
string
scanf会读取12,但却不会读到紧接其后的换行符,换行符会保留在输入流中,然后被gets()读取,后者会读入一个空行,而第二行的string则根本不会被读取
当然你这样输入会改变下如:12 string
不过最后建议不样把两个输入函数混在一起使用,避免bug的产生
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询