首页 > 电脑

c++如何定义一组数组,该数组随数组第一个元素的不同而有所不同。下面这段代码应该怎么改

更新时间2019-08-10 05:35:26

void a()

{

int a[10];

for(int i=0; i<10; i++)

{

if(i==0&&a[i]==1)

{

a[10]={1,1,1,1,1,3,3,3,3,3};

}

    if(i==0&&a[i]==2)

{

    if(i==3&&a[i]==4)

{

    a[10]={2,2,2,4,4,4,5,5,5,5};

}  

    if(i==3&&a[i]==6)

    a[10]={2,2,2,6,6,6,6,7,7,7};

}

}

    if(i==0&&a[i]==5)

{

a[10]={5,5,5,5,7,7,7,7,7,7};

}

    if(i==0&&a[i]==7)

{

a[10]={6,6,6,6,7,7,7,7,7,7};

}

}

}


你的程序完全不符合逻辑

首先,C++数组可以直接定义及初始化

int a[10]={1,1,1,1,1,3,3,3,3,3}; //OK

但不能直接赋值,如你的

int a[10];

a[10]={1,1,1,1,1,3,3,3,3,3}; //ERROR

你若已定义好的数组,只能一个个赋值

a[0]=1;

a[1]=1;

a[2]=1;

a[3]=1;

a[4]=3;

(当然,可以找规律,用循环或操作符重载)

其次,你的循环完全没有逻辑了

for(int i=0; i<10; i++)

{

if(i==0&&a[i]==1) 

{

a[10]={1,1,1,1,1,3,3,3,3,3};

}

程序有几个问题

1。if(i==0&&a[i]==1) 不就是a[0]==1吗?除此之外,没有其它条件可以满足的

2。同样是if(i==0&&a[i]==1) 

在赋值前,a[i]的值是不可预计的,你前面没有给a[10]的任何一个数组赋值,它的值是由环境决定的(可以认为是随机的)

3。上面说过,C++不存在

a[10]={1,1,1,1,1,3,3,3,3,3}; 

这种赋值的语法的

另外,一个数组(任何语言)在一个时刻,它只能有一组值

不可能同时有a[10]={1,1,1,1,1,3,3,3,3,3};,a[10]={6,6,6,6,7,7,7,7,7,7};的

所以你的感觉上应该是用二维数组(当然可以用其它数组结构)

也就是

int a[5][10] = {

{1,1,1,1,1,3,3,3,3,3},

{2,2,2,4,4,4,5,5,5,5},

{2,2,2,6,6,6,6,7,7,7},

{5,5,5,5,7,7,7,7,7,7},

{6,6,6,6,7,7,7,7,7,7}

};

这个才是C++正确的数组变量定义方式

(建议,你先复习下《数据结构》这个绝对是编程的基础)


你的if语句的嵌套关系太乱了,改成case语句吧。

这是专业的问题建议您向高等院校的数学系请教吧。

这个就是是一个死循环啊

可以用switch语句来写,以i为参数。这样的话比用if语句要好很多。

而且,如果你想让程序循环而且想自己输入数组元素的话,可以试着用一下链表。不过用链表的话,挺方便的。


上一篇:世界上除了中文还有更生动的语言吗?

下一篇:这两段稍微有不同的代码输出的结果有区别吗?为什么有区别?