《2022年c语言多维数组 .pdf》由会员分享,可在线阅读,更多相关《2022年c语言多维数组 .pdf(4页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、一、高维数组有时,数组的维数并不止一维,例如一个记录消费中心在第一季度里各个月的收入数据就可以用二维数组来表示。定义二维数组的方法是在一维数组定义的后面再加上一个用方括号括起来的维数说明。例如:float array38; 实际上,这个数组可以看成3 个连续的一维数组,每个一维数组具有8 个元素。该数组在内存中的存储格式为最左边的维数相同的元素连续存储,也即按行存储的。首先存储第一行8个元素,其次是第二行,最后是第三行。main() int array33=1,2,3,4,5,6,7,8,9; int i,j; for(i=0;i3;i+) for(j=0;j3;j+) printf(%3d)
2、; printf(n); 它的输出结果为:1 2 3 4 5 6 7 8 9 可以看出,二维数组元素是按行存储的。我们也可以对数组进行赋值,而不是初始化。main() int array33; int i,j; for(j=0;j3;j+) for(i=0;i3;i+) scanf(%d,&arrayij); for(i=0;i3;i+) for(j=0;j3;j+) printf(%3d); printf(n); 当输入 1 2 3 4 5 6 7 8 9 输出为:1 4 7 2 5 8 3 6 9 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - -
3、 - - - - - 名师精心整理 - - - - - - - 第 1 页,共 4 页 - - - - - - - - - 数组可以是二维、三维甚至是更高维数的,虽然C语言对维数的处理没有上限,但是处理高维数组是很头疼的事。一般尽量避免处理四维和四维以上的数组。下面看一个三维数组的例子:main() int array234; int i,j,k; for(i=0;i2;i+) for(j=0;j3;j+) for(k=0;k4;k+) arrayijk=i*12+j*4+k; 这个三维数组可以看成2 个二维数组,每个二维数组又可以看成3 个一维数组。可以在头脑里想象成两个平行平面,每个平面内
4、有3*4 个点。所以共有24 个元素。二、字符串数组上面讲的都是存放数值的,有一类数组,用来处理字符串的,我们叫字符串数组。其实字符串数组也是二维数组,只是它的特殊性,才单独拿出来说的。main() char s1010; int i; for(i=0;i10;i+) scanf(%s,si); 先看它的输入特性,前面在说输入语句的时候说过,遇到字符串输入,可以不加 & ,现在只要记住这个特性就可以,以后说指针的时候再讲为什么。但是这儿为什么用si,可能很多人不太明白。我们定义的是二维数组,而输入的时候,却使用一维数组的形式。这是因为字符串在内存里地址可以用它的名字表示,就好象这种形式:mai
5、n() char s10; scanf(%s,s); 定义的是一维数组,输入语句用变量形式表示一样。通过前面的%s 形式可以看出,si是一个数组,所以s 就是二维数组了。这里要注意一点,scanf()函数在输入字符串时候不能支持空格,看下面的例子:main() char s310; int i; for(i=0;i10;i+) scanf(%s,si); for(i=0;is2i) printf(s1s2n); exit(1); else ; if(s1i=0 & s2i!=0) printf(s1 else if(s2i=0 & s1i!=0) printf(s1s2n); else pri
6、ntf(s1=s2n); 上面的例子就是比较两个字符串大小的,先比较第一个,如果相同,接着比较第二个,如果不相同,则分出大小。一直往后比较,直到其中某一个到0,你也可以先用strlen()函数找出最小的长度。exit()函数的作用是退出程序,具体它的用法可以看看相关资料。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 4 页 - - - - - - - - - 其实 C语言把我们经常需要的字符串处理函数都做好了,我们只需要调用它即可。如 strcmp()用来比较、 str
7、cpy()用来拷贝等等。看看它们的用法:#include string.h main() char s110,s210,s210; int k; gets(s1); gets(s2); k=strcmp(s1,s2); /*比较 s1 和 s2 大小 */ if(k=0) printf(s1=s2n); else if(k0) printf(s1s2n); else printf(s1 strcpy(s3,s1); /*把 s1 拷贝到 s3*/ printf(%sn,s3); 可以看出,比较大小时,如果ks2; 如果 k=0,则 s1=s2。实际上这是一个函数,具体什么是函数,以及为什么写成那种形式,我们下节再说。这些函数都包含在string.h头文件中,所以在程序的开头,都要写上#include string.h。字符串处理有很多函数,你们可以看看相关的书,也可以看看Turbo C 的帮助。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 4 页 - - - - - - - - -
限制150内