#include<stdio.h>
int main(){
int CJ(int *);//函数声明
int a[5][5],i,j,*p;
p=&a[0][0];
for(i=0;i<5;i++)//构造数组方阵
for(j=0;j<5;j++)
scanf("%d",&a[i][j]);
CJ(p);
for(i=0;i<5;i++){//输出调整后的方阵
for(j=0;j<5;j++)
printf("%4d",a[i][j]);
printf("\n");
}
getchar();
getchar();
return 0;
}
int CJ(int *q)
{
int i,j,*qmax,*qmin,t;
qmax=q;
qmin=q;
for(i=0;i<5;i++)//找到最大值
for(j=0;j<5;j++)
{
if(*qmax<*(q+5*i+j))
qmax=q+5*i+j;
}
t=*(q+12);//把最大的值和中间的值交换
*(q+12)=*qmax;
*qmax=t;
qmax=q;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
if((q+5*i+j)!=(q+12)&&*qmax<*(q+5*i+j))
qmax=q+5*i+j;
t=*q;
*q=*qmax;
*qmax=t;
//再找第三大元素
qmax=(q+1);
for(i=0;i<5;i++)
for(j=0;j<5;j++)
if((q+5*i+j)!=q&&(q+5*i+j)!=(q+12)&&*qmax<*(q+5*i+j))
qmax=(q+5*i+j);
printf("第三大元素为%3d\n",*qmax);//验证找没找对
t=*(q+4);
*(q+4)=*qmax;
*qmax=t;
qmax=(q+1);
for(i=0;i<5;i++)
for(j=0;j<5;j++)
if((q+5*i+j)!=q&&(q+5*i+j)!=(q+4)&&(q+5*i+j)!=(q+12)&&*qmax<*(q+5*i+j))
qmax=(q+5*i+j);
printf("第四大元素为%3d\n",*qmax);
t=*(q+20);
*(q+20)=*qmax;
*qmax=t;
qmax=(q+1);
for(i=0;i<5;i++)
for(j=0;j<5;j++)
if((q+5*i+j)!=q&&(q+5*i+j)!=(q+4)&&(q+5*i+j)!=(q+12)&&(q+5*i+j)!=(q+20)&&*qmax<*(q+5*i+j))
qmax=(q+5*i+j);
printf("第五大元素为%3d\n",*qmax);
t=*(q+24);
*(q+24)=*qmax;
*qmax=t;
return 0;
}
有一个5*5的矩阵,找出最大的数放在矩阵中间,左上角,右上角,左下角分别放第二第三第四大的数。
最新推荐文章于 2023-10-29 23:03:04 发布