?? 73.c
字號:
/*
在一個5*5矩陣中最大的元素放在中心,
4個角分別放4個最小的元素(四個最小的元素按從左到右,
從上到下的順序,依次從小到大存放),寫一個函數實現。
*/
#include<stdio.h>
void change(int *p);
void mofang1()
{
int a[5][5],*p,i,j;
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
a[i][j]=5*i+j; //對二維數組賦值
}
}
p=&a[0][0];//把二維數組的首地址賦值給指針
change(p);
printf("after change,the matrix:\n");
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
printf("%3d",a[i][j]);
}
printf("\n");
}
}
void change(int *p)
{
int i,j,temp;
int *pmax,*pmin;
pmax=p;
pmin=p;
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
if(*pmax<*(p+5*i+j)) pmax=p+5*i+j; //查找二維數組的最大值;
if(*pmin>*(p+5*i+j)) pmin=p+5*i+j; //查找二維數組的最小值;
}
}
temp=*(p+12); //最大值和二維數組的中間數交換值
*(p+12)=*pmax;
*pmax=temp;
temp=*p; //最小值和二維數組的第一個元素交換值
*p=*pmin;
*pmin=temp;
pmin=p+1; //指向最小值的指針指向二維數組的第二個元素;
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
if((p+5*i+j)!=p&&*pmin>*(p+5*i+j)) //尋找下一個的最小值;
pmin=p+5*i+j;
}
}
temp=*(p+4); //第二個最小值與二維數組的右上角的元素進行值交換
*(p+4)=*pmin;
*pmin=temp;
pmin=p+1;
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
if((p+5*i+j)!=(p+4)&&(p+5*i+j)!=p&&*pmin>*(p+5*i+j)) //尋找第三個最小值
pmin=p+5*i+j;
}
}
temp=*(p+20); //第三個最小值與二維數組的左下角元素交換
*(p+20)=*pmin;
*pmin=temp;
pmin=p+1;
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
if((p+5*i+j)!=(p+20)&&(p+5*i+j)!=(p+4)&&(p+5*i+j)!=p&&*pmin>*(p+5*i+j)) //尋找第四個最小值
pmin=p+5*i+j;
}
}
temp=*(p+24); //第四個最小值與二維數組的右下角的元素進行交換
*(p+24)=*pmin;
*pmin=temp;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -