C程序 一道关于指针的问题?

来源:百度知道 编辑:UC知道 时间:2024/05/09 04:00:57
将一个5X5的矩阵中最大的元素放在中心,4个角分别放4个最小的元素(顺序为从右至左,从上到下顺序一次从小到大存放),写一个函数现实之。用main函数调用。

要求用到指针。

#include<stdio.h>
void main()
{
void change(int *);
int a[5][5],*p,i,j;
printf("input matrix:\n" );
for (i=0;i<5;i++)
for(j=0;j<5;j++)
scanf("%d",&a[i][j]);
p=&a[0][0];
change(p);
printf("now,matrix:\n");
{
for (i=0;i<5;i++)
{
for(j=0;j<5;j++)
printf("%d",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=i;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+20);
*(p+20)=*pmin;
*pmin=temp;
pmin=

#include<stdio.h>
void main()
{
void change(int *);
int a[5][5] ,*p,i,j;
printf("input matrix:\n" );
for (i=0;i<5;i++)
for(j=0;j<5;j++)
scanf("%d",&a[i][j]);
p=&a[0][0];
change(p);
printf("now,matrix:\n");
{
for (i=0;i<5;i++)
{
for(j=0;j<5;j++)
printf("%d ",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=i;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+4);// 从右至左,从上到下,坐标应该4,0,20,24
*(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