话不多说上代码,转置不知道你想转什么样子的,就随便转了一些
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void Advert(int (*PArr)[4])
{
int Temp=0;
for(int i=0;i<4;i++)
{
for(int j=i;j<4;j++)
{
Temp=PArr[i][j];
PArr[i][j]=PArr[j][i];
PArr[j][i]=Temp;
}
}
}
int main(void)
{
int Arr[4][4]={0};
// 初始化数组
srand((
unsigned int)time(NULL));
for(int i=0;i<4;i++)
{
for(int j=0;j<4;j++)
{
Arr[i][j]=rand()%256;
}
}
//打印数组
for(int i=0;i<4;i++)
{
for(int j=0;j<4;j++)
{
printf("%-8d",Arr[i][j]);
}
puts("");
}
puts("");
int MajorDiagonalSum=0;
int SubdiagonalMul=1;
int MaxVal=Arr[0][0];
//打印数组
for(int i=0;i<4;i++)
{
for(int j=0;j<4;j++)
{
if(Arr[i][j]>MaxVal)
{
MaxVal=Arr[i][j];
}
if(i==j)
{
MajorDiagonalSum+=Arr[i][j];
printf("%-8d",Arr[i][j]);
}
else if(4-i-1==j){
printf("%-8d",Arr[i][j]);
SubdiagonalMul*=Arr[i][j];
}
else{
printf("%-8s"," ");
}
}
puts("");
}
puts("");
printf("最大值:%d\n主
对角线只和:%d\n副对角线乘积:%d\n",MaxVal,MajorDiagonalSum,SubdiagonalMul);
puts("");
Advert(Arr);
//打印数组
for(int i=0;i<4;i++)
{
for(int j=0;j<4;j++)
{
printf("%-8d",Arr[i][j]);
}
puts("");
}
puts("");
return 0;
}