#include <stdio.h>
void seek(int *p);
int main()
{
int sh[][5]={{1,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 *p;
p=&sh[0][0];
int i,j;
seek(p);
for(i=0;i<5;i++)
{
for(j=0;j<5;j++,p++)
printf("%d ",*p);
puts("\n");
}
return 0;
}
void seek(int *p)
{
int i,j,text,*max,*min;
max=min=p;
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
if(*(p+i*5+j) > *max)
max=p+i*5+j;
if(*(p+i*5+j) < *min)
min=p+i*5+j;
}
}
/* 求出最大的数与最小的数,然后交换 */
text = *max;
*max = *(p+12);
*(p+12) = text;
text = *min;
*min = *p;
*p = text;
min = p+1; // 必须加, 不重新初始化,地址会乱
/*求第二个小的数*/
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
if((p+i*5+j)!=p && *(p+i*5+j)<*min)
min=p+i*5+j;
}
}
text = *min;
*min = *(p+4);
*(p+4) = text;
/*求第3个小的数*/
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
if((p+i*5+j)!=p && (p+i*5+j)!=(p+4) && *(p+i*5+j)<*min)
min=p+i*5+j;
}
}
text = *min;
*min = *(p+20);
*(p+20) = text;
/*求第4个小的数*/
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
if((p+i*5+j)!=p && (p+i*5+j)!=(p+4) && (p+i*5+j)!=(p+20)&& *(p+i*5+j)<*min)
min=p+i*5+j;
}
}
text = *min;
*min = *(p+24);
*(p+24) = text;
}
将一个5*5矩阵中最大的元素放在中心,4个角分别放置4个最小的元素(顺序为从左到右,从上到下依次从小到大存放),写一个函数实现。用main函数调用。使用指针
最新推荐文章于 2022-11-26 15:36:31 发布