将一个5×5的矩阵中最大的元素放在中心,4个角分别放4个最小的元素(按从
左到右、从上到下的顺序 ,依次从小到大存放),写一个函数实现之,并用main数调用。
怎么调试都不成功,只能换最大的和最小的,(我怀疑是不是循环的时候括号括错了),谁能告诉一下原因? 多谢各位了
#include<stdio.h>
void swap(int *p1,int *p2)
{
int temp;
temp=*p1;
*p1=*p2;
*p2=temp;
}
void change(int *p)
{
int i,j,*pmin,*pmax;
pmax=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;
pmin=p+1;
if((p+5*i+j)!=p && *pmin>*(p+5*i+j))
pmin=p+5*i+j;
pmin=p+1;
if((p+5*i+j)!=p && (p+5*i+j)!=(p+4) && *pmin>*(p+5*i+j))
pmin=p+5*i+j;
pmin=p+1;
if((p+5*i+j)!=p && (p+5*i+j)!=(p+4) && (p+5*i+j)!=(p+20) && *pmin>*(p+5*i+j))
pmin=p+5*i+j;
}
swap(pmax,p+12);
swap(pmin,p);
swap(pmin,p+4);
swap(pmin,p+20);
swap(pmin,p+24);
}
int main()
{
int i,j,*p,a[5][5]={{35,34,33,32,31},{30,29,28,27,26},{25,24,23,22,21},{20,19,18,17,16},{15,14,13,12,11}};
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
printf("%d",a[i][j]);
printf("\n");
}
p=&a[0][0];
change(p);
printf("after changing:\n");
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
printf("%d",a[i][j]);
printf("\n");
}
return(0);
}
怎么调试都不成功,只能换最大的和最小的,(我怀疑是不是循环的时候括号括错了),谁能告诉一下原因? 多谢各位了
[此贴子已经被作者于2006-9-4 12:11:05编辑过]