C++任意输入n个自然数(n小于1000,每个数字之间空格隔开)然后按回车将数据输出,例如输入1 2回车输出1 2

#include<stdio.h>intmain(){inta[10000]={0},i,n;for(i=0;i<=9999;i++){scanf("%d\n",&a[i... #include<stdio.h>
int main()
{int a[10000]={0},i,n;
for(i=0;i<=9999;i++)
{scanf("%d\n",&a[i]);
n=i-1;
if (a[i]='n')
break;
}
for (i=0;i<=n;i++)
{printf("%d",a[i]);}
return 0;
}
这个代码的问题在哪里,为什么老有问题
展开
 我来答
hwm_2012
2012-10-13 · TA获得超过966个赞
知道小有建树答主
回答量:470
采纳率:0%
帮助的人:406万
展开全部
1. "%d\n" 这个输入格式串有问题,读入一个整数,并跳过一个回车号,可你输入的格式是什么?数字加空格,最后一个数才是数字加回车
2. 数字与回车的比较是搞笑的 a[i]是读入的整数,不是回车符 ,如果你输入整数 110 结果它值等于'n',可以提前结束输入了,
'\n'是回车,可是你并没有读入这个字符
追问
改成啊a[i]=='\n'也还是有问题啊
追答
你读取时用这个格式化: "%d%c" 即读取一个整数并读取随后一个字符
要把这个字符存到变量中,比较这个是变量是不是'\n',试试是什么效果

#include
int main()
{
int a[10000]={0},i,n;
char c; //<<<加一个字符变量
for(i=0;i<=9999;i++)
{
scanf("%d%c",&a[i],&c);//scanf("%d\n",&a[i]);
n=i; //n=i-1;
if(c=='\n')//if(a[i]='n') //你原来的是赋值不是比较 ==不同于=
break;
}
for (i=0;i<=n;i++)
{
printf("%d ",a[i]);
}
return 0;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式