将一个5×5的矩阵中最大的元素放在中心,4个角分别放4个最小的元素(顺序为从左到右,从上到下顺序依 40
将一个5×5的矩阵中最大的元素放在中心,4个角分别放4个最小的元素(顺序为从左到右,从上到下顺序依次从小到大存放),编写一个函数实现之,用main函数调用。...
将一个5×5的矩阵中最大的元素放在中心,4个角分别放4个最小的元素(顺序为从左到右,从上到下顺序依次从小到大存放),编写一个函数实现之,用main函数调用。
展开
1个回答
展开全部
#include<stdio.h>
#define inf (1<<29)
int main()
{
int a[11][11],i,d,j,x[11],m[11],k[11];
printf("输入一个5x5矩阵:\n");
for(i=0; i<5; i++)
for(j=0; j<5; j++)
scanf("%d",&a[i][j]);
for(i=0; i<5; i++)
{
m[i]=k[i]=0;
x[i]=inf;
}
x[4]=-1;
for(i=0; i<5; i++)
for(j=0; j<5; j++)
{
if (a[i][j]<x[0])
{
x[3]=x[2];
m[3]=m[2];
k[3]=k[2];
x[2] = x[1];
m[2]=m[1];
k[2]=k[1];
x[1] = x[0];
m[1]=m[0];
k[1]=k[0];
x[0] = a[i][j];
m[0]=i;
k[0]=j;
}
else if (a[i][j]<x[1])
{
x[3]=x[2];
m[3]=m[2];
k[3]=k[2];
x[2] = x[1];
m[2]=m[1];
k[2]=k[1];
x[1] = a[i][j];
m[1]=i;
k[1]=j;
}
else if (a[i][j]<x[2])
{
x[3]= x[2];
m[3]=m[2];
k[3]=k[2];
x[2]= a[i][j];
m[2]=i;
k[2]=j;
}
else if (a[i][j]<x[3])
{
x[3]= a[i][j];
m[3]=i;
k[3]=j;
}
if(x[4]<a[i][j])//找最大
{
x[4]=a[i][j];
m[4]=i;
k[4]=j;
}
}
d=a[2][2];
a[2][2]=x[4];
a[m[4]][k[4]]=d;
d=a[0][0];
a[0][0]=x[0];
a[m[0]][k[0]]=d;
d=a[0][4];
a[0][4]=x[1];
a[m[1]][k[1]]=d;
d=a[4][0];
a[4][0]=x[2];
a[m[2]][k[2]]=d;
d=a[4][4];
a[4][4]=x[3];
a[m[3]][k[3]]=d;
for(i=0; i<5; i++)
{
for(j=0; j<5; j++)
printf("%d ",a[i][j]);
printf("\n");
}
return 0;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询