程序代碼:
#include<stdio.h>
int min(int (*a)[5])
{
?? int i,j,*min,t;
?? min=a;
?? for(i=0;i<5;i++)
?? for(j=0;j<5;j++)
?? {
?? if(*(a[i]+j)<*min)
??? min=(a[i]+j);? ? ? ? //交換地址
??? }
??? t=*min;
??? *min=*(a[0]+0);
??? *(a[0]+0)=t;
???
??? for(i=0;i<5;i++)
?? for(j=0;j<5;j++)
?? {
?? if(i==0&&j==0) continue;? //跳過左上角最小值
?? if(*(a[i]+j)<*min)
??? min=(a[i]+j);
??? }
??? t=*min;
??? *min=*(a[0]+4);
??? *(a[0]+4)=t;
???
??? for(i=0;i<5;i++)
?? for(j=0;j<5;j++)
?? {
?? if(i==0&&j==0||i==0&&j==4) continue;? ? ?//跳過左上 右上
?? if(*(a[i]+j)<*min)
??? min=(a[i]+j);
??? }
??? t=*min;
??? *min=*(a[4]+0);
??? *(a[4]+0)=t;
???
??? for(i=0;i<5;i++)
?? for(j=0;j<5;j++)
?? {
?? if(i==0&&j==0||i==0&&j==4||i==4&&j==0) continue;? ? //跳過左上 右上 左下
?? if(*(a[i]+j)<*min)
??? min=(a[i]+j);
??? }
??? t=*min;
??? *min=*(a[4]+4);
??? *(a[4]+4)=t;
}
int max(int (*a)[5])
{
?? int i,j,*max,t;
?? max=a;
?? for(i=0;i<5;i++)
?? for(j=0;j<5;j++)
?? {
?? if(*(a[i]+j)>*max)
??? max=(a[i]+j);
??? }
??? t=*max;
??? *max=*(a[2]+2);
??? *(a[2]+2)=t;
}
int main()
{
?int a[5][5]={{16,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15},{16,17,18,19,20},{21,22,23,24,25}};
?int i,j;
?printf("原先矩陣:\n");
?for(i=0;i<5;i++)
?{
?for(j=0;j<4;j++)
?printf("%4d ",a[i][j]);
?printf("%4d",a[i][j]);
?printf("\n");
?}文章來源地址http://www.zghlxwxcb.cn/news/detail-821124.html
?min(a);? //找出最小的一一賦給左上 右上 左下 右下
?max(a); //找出最大賦給中間
?printf("新矩陣:\n");
?for(i=0;i<5;i++)
?{
?for(j=0;j<4;j++)
?printf("%4d ",a[i][j]);
?printf("%4d",a[i][j]);
?printf("\n");
?}文章來源:http://www.zghlxwxcb.cn/news/detail-821124.html
?}
到了這里,關(guān)于定義一個(gè)5*5的矩陣(二維數(shù)組),賦上初值,通過調(diào)用函數(shù)實(shí)現(xiàn):將數(shù)組中的最大值放在中心,4個(gè)角分別放4個(gè)最小的元素(順序?yàn)閺淖蟮接?,從上到下依次從小到大存放),在主函?shù)中輸出變換后的數(shù)組。的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!