问一个很简单的C语言的数组赋值输出的问题

输入一些数字以0作为结束标志,再输出#include<stdio.h>main(){inti=0,b[100];for(i=0;b[i]!=0;i++)scanf("%d... 输入一些数字以0作为结束标志,再输出
#include<stdio.h>
main()
{
int i=0,b[100];
for(i=0;b[i]!=0;i++)
scanf("%d",&b[i]);
for(i=0;b[i]!=0;i++)
printf("%d",b[i]);
}

请问这个程序哪里出错了?谢谢
展开
 我来答
luvnn
推荐于2016-05-20 · TA获得超过160个赞
知道小有建树答主
回答量:159
采纳率:100%
帮助的人:104万
展开全部
首先你的b[]没初始化,所以第一个for循环中判断b[i]是否为0的那肯定不定在那断。
看你的要求是要判断输入的那个是不是为零然后判断是否继续,可以这样做
main()
{
int i=0,b[100]={0};
int a;
for(i=0;i<100;i++)
{
scanf("%d",&a);
if(a!=0)
{
b[i]=a;
}
else
break;
}
for(i=0;b[i]!=0;i++)
printf("%d",b[i]);
}
更多追问追答
追问
请问给数组赋值一定要通过中间变量吗,为什么我不能通过for循环直接给数组赋值?
追答
可以的,但是你的第一个循环中
for(i=0;b[i]!=0;i++)//因为b[i]没赋初始值,而且for循环每次循环都会判断里面的条件就是b[i]是不是为0,因为你没付初始值,所以其值不确定,不能保证你的程序准确运行。
例如系统初始化时b[]={0,1,0,2,1,1,......}
例如第一次for循环,
b[0]==0,那么你无法通过for中的赋值进行赋值了,b[0]=0.类似b[2]=0
所以此时你无法给那些系统初始化时是0的b[i]赋值
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式