2 thenorther thenorther 于 2016.02.21 21:07 提问

看一下为啥a=c【4】(c++循环嵌套的一个问题,)

#include
using namespace std;
int main()
{
int a,b,i,c[4];
cin>>a;
for(i=1;i<=a;i++)
{
for(b=1;b<=4;b++)
{
cin>>c[b];
}
cout<<c[1]<<c[2]<<c[3]<<c[4]<<a;}
return 0;
}

6个回答

caozhy
caozhy   Ds   Rxr 2016.02.21 21:47
已采纳

cin>>c[b];
这里c的下标是0~3,你这个是越界了。
for(i=1;i<=a;i++)
你这里重复n次,只有最后一次有效。其它的都被冲掉了。

qq_30501909
qq_30501909   2016.02.21 21:47

兄弟,你这个数组越界了~并没有c[4]哦~即使是c[3],如果要是a与c[3]相等,也是你需要输入的时候输入相同的值才可以相等哦~

mengyin521
mengyin521   2016.02.21 21:54

#include
using namespace std;
int main()
{
int a,b,i,c[4];
cin>>a;
for(i=1;i<=a;i++) //---------------这个循环没有卵用 只能进入一次 因为进入第一次后就return掉了 应修改为 break;
{
for(b=1;b<=4;b++) //----------------为什么 要B=1 B<=4 应该B = 0
{
cin>>c[b]; //-----------------明显的数据益处
}
cout<<c[1]<<c[2]<<c[3]<<c[4]<<a;} //--------------数据溢出
return 0;
}

虽然你可以依然使用了 溢出的内存 但那a[4] 4个字节的内存 根本就不在你的数组内
数组下表索引 是从 0 开始

还需要再熟练掌握基本知识

Chely_Yi
Chely_Yi   2016.02.21 22:32

这个根本就没有嵌套循环吧 你return之后 外面那个循环只执行了一次呀
而且没有c[4] 数组越界了
另外 这个能运行? 难道不会直接报错? 怎么会有a == c[4]?(PS: 看见你写的a=c[4] 我总以为是在赋值......)

sinat_33931347
sinat_33931347   2016.02.22 16:15

哥们,return 放在循环嵌套的外面,OK?另外,如果作为IT道上混得人,如果你连数组从0开始都不懂,那么你就out了!

John_ToStr
John_ToStr   Rxr 2016.02.23 12:08

a=c【4】仅仅是一个巧合。你运气好,而且这种概率不大...

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!