for循环给数组赋值并且输出,为什么输出值不对啊,请教大家!!

时间:2021-08-09 20:29:12
#include <iostream.h>
void main()
{
int a[5];
int i=0;
int j=0;
for(;j<=5;j++)
{
a[i]=j;
cout<<a[i]<<"\n";
}
    cout<<a[1]<<"\n";
             cout<<a[2]<<"\n";
}

------------------------------------------
输出结果:
0
1
2
3
4
5
-858993460
-858993460
-------------------------------------------
最后一个为什么不是1和2啊

14 个解决方案

#1


循环中 i没有变化, 一直是0,
a[1]~a[4]都是随机数~

#2


变量i一直没变,当然会这样了,要不你把i都换成j

#3


因为
int i=0;

a[i]=j;
而且楼主没更新i的值
故实际操作中只是重复操作a[0]这个存储空间
a[1]和a[2]你根本没更新到

#4


#include <iostream.h>
void main()
{
int a[5];
int i=0;
int j=0;
for(;j<=5;j++)
{
a[i]=j;
cout<<a[i]<<"\n";
                 i++;
}
    cout<<a[1]<<"\n";
             cout<<a[2]<<"\n";
}

#5


#include <iostream.h>
void main()
{
int a[5];
int i=0;
int j=0;
for(;j<=5;j++)
{
a[i++]=j;   //  a[i]=j; ==>>  a[i++]=j;
cout<<a[i]<<"\n";
}
    cout<<a[1]<<"\n";
             cout<<a[2]<<"\n";
}

#6


honker110(honker) 
我把i换成了j,结果说"遇到问题要关闭",还问“是否发送错误啊”
syy64(太平洋)
seu07201213(汪洋中的一片叶子)
我把你们的代码考在里面,也是说"遇到问题要关闭",问“是否发送错误”
不会是我的VC有问题了吧?

#7


始终都是给a[0]赋值,而a[1]、a[2]还没有赋值呢,编译器便给个默认的值(并不是随机数)

#8


我把i换成了j,
因为你的循环是  for(;j<=5;j++)
最后 i=5,数组 a[5] 的最大元素是 a[4]
数组越界了~

#include <iostream.h>
void main()
{
int a[5];
int i=0;
int j=0;
for(;j< 5;j++)      // j<=5 => j<5
{
a[i++]=j;   //  a[i]=j; ==>>  a[i++]=j;
cout<<a[i]<<"\n";
}
    cout<<a[1]<<"\n";
             cout<<a[2]<<"\n";
}

#9


// 没注意
#include <iostream.h>
void main()
{
int a[5];
int i=0;
int j=0;
for(;j<5;j++)
{
a[i++]=j;   //  a[i]=j; ==>>  a[i++]=j;
cout<<a[i-1]<<"\n";
}
    cout<<a[1]<<"\n";
             cout<<a[2]<<"\n";
}

#10


更正一个 错误

我把i换成了j,
因为你的循环是  for(;j<=5;j++)
最后 i=5,数组 a[5] 的最大元素是 a[4]
数组越界了~

#include <iostream.h>
void main()
{
int a[5];
int i=0;
int j=0;
for(;j< 5;j++)      // j<=5 => j<5
{
a[i]=j;   
cout<<a[i]<<"\n";
           a++;
}
    cout<<a[1]<<"\n";
             cout<<a[2]<<"\n";
}

#11


打错一个字,
a++ 更正为 i++

#12


#include <iostream.h>
void main()
{
int a[5];
int i=0;
int j=0;
for(;j<5;j++)
{
a[i]=j;
cout<<a[i]<<"\n";
                 i++;
}
    cout<<a[1]<<"\n";
             cout<<a[2]<<"\n";
}

#13


以后遇到这种事,最好跟一下进程,看看程序实际的操作到底是干了些什么!

#14


感谢大家的指点,总结了大家的意见,有以下几点
1.在这里,a[5]的最大元素是a[4];
2.a[i++]首先是给数组赋值,其次是计算i++;
3.调试程序。
谢谢!!

#1


循环中 i没有变化, 一直是0,
a[1]~a[4]都是随机数~

#2


变量i一直没变,当然会这样了,要不你把i都换成j

#3


因为
int i=0;

a[i]=j;
而且楼主没更新i的值
故实际操作中只是重复操作a[0]这个存储空间
a[1]和a[2]你根本没更新到

#4


#include <iostream.h>
void main()
{
int a[5];
int i=0;
int j=0;
for(;j<=5;j++)
{
a[i]=j;
cout<<a[i]<<"\n";
                 i++;
}
    cout<<a[1]<<"\n";
             cout<<a[2]<<"\n";
}

#5


#include <iostream.h>
void main()
{
int a[5];
int i=0;
int j=0;
for(;j<=5;j++)
{
a[i++]=j;   //  a[i]=j; ==>>  a[i++]=j;
cout<<a[i]<<"\n";
}
    cout<<a[1]<<"\n";
             cout<<a[2]<<"\n";
}

#6


honker110(honker) 
我把i换成了j,结果说"遇到问题要关闭",还问“是否发送错误啊”
syy64(太平洋)
seu07201213(汪洋中的一片叶子)
我把你们的代码考在里面,也是说"遇到问题要关闭",问“是否发送错误”
不会是我的VC有问题了吧?

#7


始终都是给a[0]赋值,而a[1]、a[2]还没有赋值呢,编译器便给个默认的值(并不是随机数)

#8


我把i换成了j,
因为你的循环是  for(;j<=5;j++)
最后 i=5,数组 a[5] 的最大元素是 a[4]
数组越界了~

#include <iostream.h>
void main()
{
int a[5];
int i=0;
int j=0;
for(;j< 5;j++)      // j<=5 => j<5
{
a[i++]=j;   //  a[i]=j; ==>>  a[i++]=j;
cout<<a[i]<<"\n";
}
    cout<<a[1]<<"\n";
             cout<<a[2]<<"\n";
}

#9


// 没注意
#include <iostream.h>
void main()
{
int a[5];
int i=0;
int j=0;
for(;j<5;j++)
{
a[i++]=j;   //  a[i]=j; ==>>  a[i++]=j;
cout<<a[i-1]<<"\n";
}
    cout<<a[1]<<"\n";
             cout<<a[2]<<"\n";
}

#10


更正一个 错误

我把i换成了j,
因为你的循环是  for(;j<=5;j++)
最后 i=5,数组 a[5] 的最大元素是 a[4]
数组越界了~

#include <iostream.h>
void main()
{
int a[5];
int i=0;
int j=0;
for(;j< 5;j++)      // j<=5 => j<5
{
a[i]=j;   
cout<<a[i]<<"\n";
           a++;
}
    cout<<a[1]<<"\n";
             cout<<a[2]<<"\n";
}

#11


打错一个字,
a++ 更正为 i++

#12


#include <iostream.h>
void main()
{
int a[5];
int i=0;
int j=0;
for(;j<5;j++)
{
a[i]=j;
cout<<a[i]<<"\n";
                 i++;
}
    cout<<a[1]<<"\n";
             cout<<a[2]<<"\n";
}

#13


以后遇到这种事,最好跟一下进程,看看程序实际的操作到底是干了些什么!

#14


感谢大家的指点,总结了大家的意见,有以下几点
1.在这里,a[5]的最大元素是a[4];
2.a[i++]首先是给数组赋值,其次是计算i++;
3.调试程序。
谢谢!!