问一个很简单的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]);
}
请问这个程序哪里出错了?谢谢 展开
#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]);
}
请问这个程序哪里出错了?谢谢 展开
1个回答
展开全部
首先你的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]);
}
看你的要求是要判断输入的那个是不是为零然后判断是否继续,可以这样做
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]赋值
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询