100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > C语言之二维数组定义 初始化 赋值 求最大最小 求和

C语言之二维数组定义 初始化 赋值 求最大最小 求和

时间:2020-01-13 10:01:15

相关推荐

C语言之二维数组定义 初始化 赋值 求最大最小 求和

数组可以用来存储多个相同类型的数据,并占用多个连续的内存空间来存储数据。二维数组是有两个下标的数组。

1、二维数组定义语法:类型名 数组名[行数][列数];

#includ <stdio.h>#define X 5#define Y 6int main(){int a[3][3];int b[1+4][2+1];int c = 2;int d = 3;int e[c][d];//不能是变量,会报错int f[X][Y];//数组长度可以是宏定义,不报错}

2、二维数组初始化,即赋初值:

#include <stdio.h>int main(){//(1)按储存顺序全部赋初值int a[3][4] = {0,1,2,3,4,5,6,7,8,9,10,11};//第零行是0-3,第一行4-7,第二行8-11//(2)按行全部赋初值int b[2][2]={{0,1},{4,5}};//每一行用大括号括起来//(3)按存储顺序部分赋初值 int c[2][3] = {0,1,2};//相当于第零行初值为0-2,即剩余未被赋初值的自动赋初值为0 //(4)按行部分赋初值int d[3][4] = {{0,1,2},{3,4,5},{6}};//第零行是0,1,2,0,第一行是3,4,5,0,第二行是6,0,0,0//(5)省略行数赋初值,不能省略列数int e[][3]={0,1,2,3};//每三个作为一行,即第零行是0-2,第一行是3,0,0,默认就是两行int f[3][];//没有列数会报错printf("array a:\n%d\t%d\t%d\t%d\n%d\t%d\t%d\t%d\n%d\t%d\t%d\t%d\n",a[0][0],a[0][1],a[0][2],a[0][3],a[1][0],a[1][1],a[1][2],a[1][3],a[2][0],a[2][1],a[2][2],a[2][3]);printf("array b:\n%d\t%d\n%d\t%d\n",b[0][0],b[0][1],b[1][0],b[1][1]);printf("array c:\n%d\t%d\t%d\n%d\t%d\t%d\n",c[0][0],c[0][1],c[0][2],c[1][0],c[1][1],c[1][2]);printf("array d:\n%d\t%d\t%d\t%d\n%d\t%d\t%d\t%d\n%d\t%d\t%d\t%d\n",d[0][0],d[0][1],d[0][2],d[0][3],d[1][0],d[1][1],d[1][2],d[1][3],d[2][0],d[2][1],d[2][2],d[2][3]);printf("array e:\n%d\t%d\t%d\n%d\t%d\t%d\n",e[0][0],e[0][1],e[0][2],e[1][0],e[1][1],e[1][2]);}

gcc编译时数组 f 就报错:

将数组 f 注释之后重新gcc编译就能成功,执行编译后的文件:

3、二维数组的访问和引用

3.1 数组元素输出方法

(1)一般直接 printf 输出,这个上面有演示,非常的麻烦。

(2)遍历输出

#include<stdio.h>int main(){int a[3][4] = {0,1,2,3,4,5,6,7,8,9,10,11};int i = 0;int j = 0;//按行遍历for(i=0;i<3;i++)//行下标{for(j=0;j<4;j++)//列下标{printf("%d ",a[i][j]);}printf("\n");}/*//按列遍历for(j=0;j<4;j++)//列下标{for(i=0;i<4;i++)//行下标{printf("%d ",a[i][j]);}printf("\n")}*/}

gcc编译再执行结果:

按列遍历还出现元素值输出错误,之后再来查看原因。

4、二维数组存储大小 = 数组类型占字节数 * 数组列数 * 数组行数

#include<stdio.h>int main(){int a[3][4] = {0,1,2,3,4,5,6,7,8,9,10,11};printf("size of int array a %d\n",sizeof(a));//4 * 3 * 4 = 48 byte}

gcc编译再执行结果:

5、求二维数组最大值与最小值

#include<stdio.h>#define M 3#define N 4int main(){int a[M][N] = {0,1,2,3,4,5,6,7,8,9,10,11};int i = 0;int j = 0;int max = a[0][0];int min = a[0][0];for(i=0;i<M;i++){for(j=0;j<N;j++){if(a[i][j]>max)max = a[i][j];if(a[i][j]<min)min = a[i][j];}}printf("max : %d\n",max);printf("min : %d\n",min);}

gcc编译再执行结果:

6、二维数组求和

#include<stdio.h>#define M 3#define N 4int main(){int a[M][N] = {0,1,2,3,4,5,6,7,8,9,10,11};int i = 0;int j = 0;int sum = 0;for(i=0;i<M;i++){for(j=0;j<N;j++){sum = sum + a[i][j];}}printf("sum : %d\n",sum);}

gcc编译再执行结果:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。