c语言中三维数组的赋值问题,C语言中三维数组的赋值问题

2020-11-25 14:27:45 字数 5918 阅读 7074

1楼:匿名用户

int limit[4][5][2]=, , , , ,, , , , ,

, , , , ,

, , , , };

你这样定义是:int limit[20][2]。int limit[4][5][2]应该是

int limit[4][5][2]=, , , , },, , , , },

, , , , },

, , , , } };

c语言:三维数组赋值给二维数组,为什么可以这样?里面的数值不会改变了吗?

2楼:

你的数组a其实仍然是二维数组,因为你给的值显然是一个二维数组的值即1,2,3

3,2,1

2,5,6

你并没有真正做一个三维数组,所以赋给二维数组完全没问题,数组b的值仍然是像上面那样的形式

c语言中怎么给三维数组赋值。

3楼:匿名用户

struct point;

point* p1 = (point*)malloc(你需要的数目*sizeof(point));

完全不需要3维数组, 一个结构加个指针就可以了.

c语言 三维数组初始化

4楼:59分粑粑

方法和详细的操作步骤如下:

1、第一步,需要定义数组。

数组的常见类型是int,float,char等,可以通过输入进行定义,见下图,转到下面的步骤。

2、第二步,执行完上面的操作之后,数组的名称可以自定义,见下图,转到下面的步骤。

3、第三步,执行完上面的操作之后,数组的大小是在数组定义阶段确定的,输入数字是数组的大小,见下图,转到下面的步骤。

4、第四步,执行完上面的操作之后,可以初始化数组并将其输入到大括号{}中,见下图,转到下面的步骤。

5、第五步,执行完上面的操作之后,如果初始输入数字未达到定义的长度,则默认初始化为0,见下图,转到下面的步骤。

6、第六步,执行完上面的操作之后,在数组定义和初始化之后添加一个分号,单击enter键即可,见下图。这样,就解决了这个问题了。

5楼:匿名用户

例如:int a[3][2][4] =

, },

, },

, }};

c语言怎么为一个三维数组赋值?我的这个二维数组是字符串,要求用c语言,不是c++

6楼:匿名用户

ch[i][j][k]='a'; //用这样的形式可以给三维数组的某个元素赋值

strcpy(char[i][j], "abc" ); //三维字符数组,给某个字符串赋值

7楼:蔚海韵

你说的是用循环吗,,多维的分开循环不就是单维的了吗,,这样你改懂了吧,,具体的我就不太清了,c语言是两年前学得了

8楼:匿名用户

你是要用二维字符给三维数组赋值???

9楼:匿名用户

问题意识看不懂。。。

10楼:游萱斐水

啥子意思哦,没有看懂哦。

明明说的是三维数组,怎么有变成了二维数组。

是不是你

把“三维”打错了,打成“二维”了。

#include

"stdio.h"

void

main()

c语言多维数组的赋值

11楼:匿名用户

一、高维数组

有时,数组的维数并不止一维,例如一个记录消费中心在第一季度里各个月的收入数据就可以用二维数组来表示。定义二维数组的方法是在一维数组定义的后面再加上一个用方括号括起来的维数说明。例如:

float array[3][8];

实际上,这个数组可以看成3个连续的一维数组,每个一维数组具有8个元素。该数组在内存中的存储格式为最左边的维数相同的元素连续存储,也即按行存储的。首先存储第一行8个元素,其次是第二行,最后是第三行。

main()

;int i,j;

for(i=0;i<3;i++)

}它的输出结果为:

1 2 3

4 5 6

7 8 9

可以看出,二维数组元素是按行存储的。

我们也可以对数组进行赋值,而不是初始化。

main()

}当输入1 2 3 4 5 6 7 8 9《回车》

输出为:

1 4 7

2 5 8

3 6 9

数组可以是二维、三维甚至是更高维数的,虽然c语言对维数的处理没有上限,但是处理高维数组是很头疼的事。一般尽量避免处理四维和四维以上的数组。下面看一个三维数组的例子:

main()

这个三维数组可以看成2个二维数组,每个二维数组又可以看成3个一维数组。可以在头脑里想象成两个平行平面,每个平面内有3*4个点。所以共有24个元素。

二、字符串数组

上面讲的都是存放数值的,有一类数组,用来处理字符串的,我们叫字符串数组。其实字符串数组也是二维数组,只是它的特殊性,才单独拿出来说的。

main()

先看它的输入特性,前面在说输入语句的时候说过,遇到字符串输入,可以不加'&',现在只要记住这个特性就可以,以后说指针的时候再讲为什么。但是这儿为什么用s[i],可能很多人不太明白。我们定义的是二维数组,而输入的时候,却使用一维数组的形式。

这是因为字符串在内存里地址可以用它的名字表示,就好象这种形式:

main()

定义的是一维数组,输入语句用变量形式表示一样。通过前面的'%s'形式可以看出,s[i]是一个数组,所以s就是二维数组了。

这里要注意一点,scanf()函数在输入字符串时候不能支持空格,看下面的例子:

main()

我们输入:1111

2222 3333

4444

我们是想把1111赋值给s[0],2222 3333赋值给s[1],4444赋值给s[2]。可实际上编译器是这样做的,把1111赋值给s[0],把2222赋值给[1],把3333赋值给s[2]。

实际输出:1111

2222

3333

在输入字符串的时候,如果使用scanf(),就把空格当作下一个输入了。那么我们怎么解决这个问题呢?毕竟很多情况下,一行字符串肯定有空格出现的。

我们使用新的函数gets()。这个函数是专门接受字符串输入的,它跳过了空格的影响。把上面的输入语言修改为gets(s[i])即可。

我们定义了char s[3][10],超过10个字符肯定不行,如果少于10个字符,电脑怎么处理呢?电脑是在每个字符串的后面自动补上'\0',作为字符串的结束标志。

我们经常在填写一些可选择的内容时经常发现,待选的字符串都是按字母排列好的,我们怎么用c语言实现这个功能?在c语言里,字符串的排序是按照字符的ascii码来的,如果第一个字符一样,则比较第二个,依次类推。

main()

else if(s1[i]>s2[i])

else ;

}if(s1[i]=='\0' && s2[i]!='\0') printf(s1 else if(s2[i]=='\0' && s1[i]!='\0') printf(s1>s2\n);

else printf(s1==s2\n);

}上面的例子就是比较两个字符串大小的,先比较第一个,如果相同,接着比较第二个,如果不相同,则分出大小。一直往后比较,直到其中某一个到'\0',你也可以先用strlen()函数找出最小的长度。

exit()函数的作用是退出程序,具体它的用法可以看看相关资料。

其实c语言把我们经常需要的字符串处理函数都做好了,我们只需要调用它即可。如strcmp()用来比较、strcpy()用来拷贝等等。看看它们的用法:

#include string.h

main()

可以看出,比较大小时,如果k<0,则s10,则s1>s2;如果k=0,则s1=s2。实际上这是一个函数,具体什么是函数,以及为什么写成那种形式,我们下节再说。这些函数都包含在string.

h头文件中,所以在程序的开头,都要写上#include string.h。

字符串处理有很多函数,你们可以看看相关的书,也可以看看turbo c的帮助。

12楼:无尘v浪子

循环,或者定义的时候赋值~

如何对三维字符数组赋值

13楼:匿名用户

只用前二维指定位置:

gets(a[0][0]);

gets(a[0][2]);

你可以将这个三维(n维)字符数组想像成一个有string类型变量(假设c中也存在string类型)的二维(n-1维)的数组。

也就是说,这个a数组中共有2*3=6个长度为8的字符数组,分为2行3列。

14楼:傲世修罗王

#include

void main()}}

getchar() ;

}不能用gets,它是获取字符串的

15楼:冷月照西风

#define high 10

#define mid 9

#define low 8

char str[high][mid][low];//定义三维数组int i,j,k;//定义循环变量

//最常用的多重for循环实现

for(i=0;i

for(j=0;j

for(k=0;k

scanf("%c",&str[i][j][k]);

16楼:讨厌闪耀生物

对于char a[2][3][8];

输入:gets((char *)a);

a本身是第一个字符的地址,强转一下就好。

c语言、三维数组

17楼:bc警长

先说二维,可以这么理解:

int n[3]有3个int

那么,int m[5][3]有5个int[3]赋值时:

n[1]=3把3给1号

m[4]=m[4]是个int[3]类型,这么赋值,也就是这么赋值:

m[4]的[0]是5:m[4][0]=5

m[4][1]=9

m[4][2]=4

懂了吗?三维甚至更多维大同小异,比如

int k[4][5][3]有4个int[5][3]这个概念应该不难理解的,就是各种类型,不停的加下标,加下标,加下标,下标,标……

曾写过一个模拟7段码(看看红绿灯上的倒计时是怎么显示的),共有2行显示,每行10个数字,每个数字7段,整个系统状态就是用一个bool[2][10][7]确定的

18楼:梦中梦

在c语言中,多维数组的存放规律都是第一维下标变化的最慢,越往后维数越高,下标变化越快,例如:对于三位数组a[2][2][2],其赋值顺序就是:

a[0][0][0]

a[0][0][1]

a[0][1][0]

a[0][1][1]

a[1][0][0]

a[1][0][1]

a[1][1][0]

a[1][1][1]

总结的说,就是“维数最高优先存储”

至于什么情况用三维数组,这要看你编程思想了,当你想编的程序抽象成三维的东西,就用三维数组来表示,就如矩阵似的,我们把矩阵看成是一个图,二维的,所以用了二维数组

希望可以帮助你

19楼:匿名用户

三维数组和二维数组一维数组一样啊,使用的时候用3个下标,下标的起点也是0

初始化也就是二维数组的推广,因为是行序优先存放,所以没有完全初始化的后面的元素自动赋初值0

如果有三个控制量就用三维数组啊,比方是三维空间xyz

c语言三维数组赋值给二维数组为什么可以这样

1楼 你的数组a其实仍然是二维数组,因为你给的值显然是一个二维数组的值即1 2 3 3 2 1 2 5 6 你并没有真正做一个三维数组,所以赋给二维数组完全没问题,数组b的值仍然是像上面那样的形式 c语言怎么为一个三维数组赋值?我的这个二维数组是字符串,要求用c语言,不是c 2楼 匿名用户 ch i...