#include <stdio.h>
//二维数组求最大值
int highest(int m[3][4]) //m[3][4]形式参数,接收实参point的值
{
int a=m[0][0];
int i,j;
for(i=0;i<3;i++) //求最大值的过程
{
for(j=0;j<4;j++)
{
if(a<m[i][j])
a=m[i][j];
}
}
return a; //a就是最大值,返回给主函数
}
//二维数组求最小值
int lowest(int m[3][4]) //m[3][4]形式参数,接收实参point的值
{
int a=m[0][0];
int i,j;
for(i=0;i<3;i++) //求最小值的过程
{
for(j=0;j<4;j++)
{
if(a>m[i][j])
a=m[i][j];
}
}
return a; //a就是最大值,返回给主函数
}
//二维数组全部元素之和
int sum(int add[3][4])
{
int i,j,s=0;
for(i=0;i<3;i++) //求最小值的过程
{
for(j=0;j<4;j++)
{
s+=add[i][j];
}
}
return s;
}
//第二列元素之和
int col2(int m[3][4])
{
int i,s=0;
for(i=0;i<3;i++)
{
s+=m[i][1];
}
return s;
}
//第二行元素之和
int row2(int m[3][4])
{
int i,s=0;
for(i=0;i<4;i++)
{
s+=m[1][i];
}
return s;
}
void main()
{
int array[3][4]={{11,25,3,48},{25,16,77,28},{39,10,19,32}};//定义一个二维数组
int (*point)[4];//定义二维数组指针
int i,j;
int max,min;
int row_2=0,col_2=0,duijiaox=0,summray=0;
point=array; //让point指针指向二维数组第一个元素
//输出二维数组
printf("二维数组:\n");
for(i=0;i<3;i++) //外层循环控制行
{
for(j=0;j<4;j++) //内层循环控制列
{
printf("%3d",array[i][j]); //用指针输入数组元素 *(*(point+i)+j)
}
printf("\n"); //换行
}
printf("\n");
//二维矩阵的转置
printf("转置后的二维数组:\n");
for(i=0;i<4;i++)
{
for(j=0;j<3;j++)
{
printf("%3d",array[j][i]);
}
printf("\n");
}
printf("\n");
//求第一个元素开始的对角线元素之和
for(i=0;i<3;i++)
{
duijiaox+=array[i][i];
}
printf("对角线元素之和是:%d\n",duijiaox);
printf("\n");
max=highest(point); //二维数组求最大值 ,point指向二维数组
min=lowest(point); //最小值
printf("二维数组最大值是:%d, 最小值:%d\n",max,min);
//全部元素之和
printf("\n");
summray=sum(point); //求所有元素的和
printf("二维数组所有元素之和是:%d\n",summray);
//第二列元素之和
printf("\n");
col_2=col2(point);
printf("第二列元素之和:%d\n",col_2);
//第二行元素之和
printf("\n");
row_2=row2(point);
printf("第二行元素之和:%d\n",row_2);
printf("\n");
}