指针与二维数组(最大值,最小值,全部元素之和,第二列元素之和,第二行元素之和,转置,第一个元素开始的对角线之和)

2022/3/31 23:50:32

本文主要是介绍指针与二维数组(最大值,最小值,全部元素之和,第二列元素之和,第二行元素之和,转置,第一个元素开始的对角线之和),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

#include<stdio.h>
//求最大值的函数
int highest(int m[3][4])//形式参数是二维数组
{
int i,j;
int a=m[0][0];//认为第一个数是最大值
for(i=0;i<3;i++)//外层循环控制行
{
for(j=0;j<4;j++)//内层循环控制列
{
if(a<m[i][j])
a=m[i][j];
}
}
return a;
}
//求最小值的函数
int lowest(int m[3][4])//形式参数是二维数组
{
int i,j;
int b=m[0][0];//认为第一个数是最小值
for(i=0;i<3;i++)//外层循环控制行
{
for(j=0;j<4;j++)//内层循环控制列
{
if(b>m[i][j])
b=m[i][j];
}
}
return b;
}

//二维数组全部元素之和
int sum(int m[3][4])
{
int i,j,s=0;
for(i=0;i<3;i++)//外层循环控制行
{
for(j=0;j<4;j++)//内层循环控制列
{
s+=m[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;
}
int main()
{
int array[3][4]={{11,25,3,48},{25,16,77,28},{39,10,19,32}};//二维数组
int(*point)[4];//指向二维数组的指针
point=array;//指针指向二维数组

int i,j;
//输出二维数组
printf("二维数组:\n");
for(i=0;i<3;i++)//外层循环控制行
{
for(j=0;j<4;j++)//内层循环控制列
{
printf("%3d",array[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");

int duijiaox=0;
//求第一个元素开始的对角线之和
for(i=0;i<3;i++)
{
duijiaox+=array[i][i];
}
printf("对角线之和为:%d\n",duijiaox);
printf("\n");

//二维数组中的最大值和最小值
int max,min;
max=highest(point);//highest求最大值的函数
min=lowest(point);//求最小值的函数

printf("最大值:%d,最小值:%d\n",max,min);
printf("\n");

//全部元素之和
int summray=0;
summray=sum(point);
printf("二维数组全部元素之和是:%d\n",summray);
printf("\n");

//求第二列元素之和
int col_2=0;
col_2=col2(point);
printf("第二列元素之和是:%d\n",col_2);
printf("\n");

//求第二行元素之和
int row_2=0;
row_2=row2(point);
printf("第二行元素之和是:%d\n",row_2);
printf("\n");

//第一个元素和最后一个元素交换
int temp;
printf("第一个元素和最后一个元素交换:\n");
if(array[0][0]<array[2][3])
{
temp=array[0][0];
array[0][0]=array[2][3];
array[2][3]=temp;
}
for(i=0;i<3;i++)//外层循环控制行
{
for(j=0;j<4;j++)//内层循环控制列
{
printf("%3d",array[i][j]);
}
printf("\n");
}
printf("\n\n");

}

输出结果:

 



这篇关于指针与二维数组(最大值,最小值,全部元素之和,第二列元素之和,第二行元素之和,转置,第一个元素开始的对角线之和)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程