免费织梦模板,wordpress主题,web前端设计,建站教程,Photoshop教程,免费网站模板资源下载_微思考

二维数组-C语言

二维数组

很多问题我们需要用到二维数组,比如一个年级有4个班,每个班有30个人,需要统计每个班的学生成绩,这个时候就要用的二维数组。如果建立一个数组student,第一维用来表示第几班,二维用来表示第几号,比如$$student_2,_3$$表示2班的3号同学。

定义二维数组

二维数组的定义方法和一维数组类似,其一般形式为:

类型说明符 数组名[常量表达式][常量表达式]

例如:

float a[3][4];

c语言中,二维数组在内存中存放的顺序是按行存放的,即在内存中先顺序存放第一行元素,接着再来存放第二行元素。 假设数组存放是从2000开始的,一个元素占用4个字节,下图就是a[3][4]在内存中存放的具体形式。

Alt text

二维数组的初始化

(1)分行给二维数组赋初值。例如:

int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};

这种赋值方法比较直观,把第一个花括号的值给第0行元素,第2个花括号的值给第一行元素....

(2)可以将所有的数据放在一个花括号内,例如:

int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};

效果和(1)相同。但是很显然第一种方式较好,一行对一行,界限很清楚。用第二种方法如果数据多,则会写成一大片,容易遗漏。

(3)可以对部分元素赋初值。例如:

int a[3][4]={{1},{3},{5}};

它的作用是只给各行第0列的元素赋初值,其他元素默认为0.赋初值后的结果为:

1 0 0 0
3 0 0 0
5 0 0 0

二维数组的举例

(1)有一个3*4的矩阵,求出其中的最大值并输出最大值和其所在的行号和列号。

解题思路:先思考一下在打擂台的时候怎样确定最后的优胜者。先找出任一个人站在台上,第2个人上去与之比武,胜 者留在台上。再上去第3个人,与太上的人比武,胜者留在台上,败者下台。以后每一个人都和当时留在台上的人比武。直到所有人都上台比过为止,最后留在台上 的就是冠军,这中方法就是打擂台法。 我们本题目也采用打擂台算法。先让a[0][0]做“擂主”,把它的值赋给变量max,max用来存放当前已知的最大值,在开始时还未进行比较,把最前面 的元素认为是当前最大值,然后让下一个元素a[0][1]和max比较,如果a[0][1]>max,则把a[0][1]赋值给max,取代max 的原值。以后以此处理,直到全部比完之后,max就是最大值。

8-3程序如下:

#include<stdio.h>int main()
{       
   int i,j,row=0,colum=0,max;       
   int a[3][4]={{3,4,16,2},{7,5,1,9},{11,23,3,8}};
   max=a[0][0];       
   for(i=0;i<3;i++)         
     for(j=0;j<4;j++)          
       if(a[i][j]>max)
       {
           max=a[i][j];
           row=i;
           colum=j;
        }       
   printf("max=%d\nrow=%d\ncolum=%d\n",max,row,colum);       
   return 0;
}

运行结果为:

Alt text

更多内容请上实验楼

百家号 互联网微风说

百家号 互联网微风说

微信公众号 weisico-com

微信公众号weisico-com

转载请注明:微思考学习网-关注技术,分享知识 >> 二维数组-C语言

赞 (0) 收藏
分享到