输入一个五维矩阵,然后将其中最小的四个元素放到矩阵的四个角,然后输出矩阵。求指点。。
#include<stdio.h> void main()
{
int a[5][5],(*p)[5],i=0,j=0,b[25],k=0,m=0; 真心求指点啊,弄不会呀。。。各种伤心。。
p=a;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
scanf("%d",*(p+i)+j); 输入矩阵
for(i=0;i<5;i++)
for(j=0;j<5;j++)
printf("%d",*(*(p+i)+j));将最初的矩阵显示出来。
printf("\n");
for(i=0;i<5;i++)
for(j=0;j<5;j++)
b[5*i+j]=a[i][j]; 将五维矩阵的值送到一个一维的矩阵。
for(k=0;k<25;k++)
printf("%d",b[k]);
printf("\n");
for(k=0;k<24;k++)
{ for(m=k+1;m<25;m++)
{
int temp;
if(b[k]>b[m])
temp=b[m];
b[m]=b[k];
b[k]=temp;
}
} 将这个矩阵由小到大的顺序进行排列。从而b[0]-b[3]是这个矩阵中最小的四个元素。
for(k=0;k<25;k++)
printf("%d",b[k]);
for(i=0;i<5;i++) 将这四个元素放置在矩阵的四个角。
{ for(j=0;j<5;j++)
{
int temp1,temp2,temp3,temp4,temp5;
if(*(*(p+i)+j)==b[0])
temp1=*(*(p+i)+j);
*(*(p+i)+j)=(*(*p));
(*(*p))=temp1;
if(*(*(p+i)+j)==b[1])
temp2=*(*(p+i)+j);
*(*(p+i)+j)=(*(*p+4));
(*(*p+4))=temp2;
if(*(*(p+i)+j)==b[2])
temp3=*(*(p+i)+j);
*(*(p+i)+j)=*(*(p+4));
*(*(p+4))=temp3;
if(*(*(p+i)+j)==b[3])
temp4=*(*(p+i)+j);
*(*(p+i)+j)=*(*(p+4)+4);
*(*(p+4)+4)=temp4;
}
}
for(i=0;i<5;i++) 输出改变后的矩阵。
for(j=0;j<5;j++)
printf("%d",a[i][j]);
}