一个C的题目,帮忙修改一下我的代码,不知道怎么错了?
菜鸟遇到一个问题如下,望高手指教。
问题:输入一个5x5的矩阵,将其中最大的元素放在中心,四个角分别放4个最小的元素(顺序为从左到右,从上倒下顺序依次从小到大存放)。写一个函数实现。
我的源码如下,不知道错在哪,望指教。
main()
{void sort(int a[][]);
int b[5][5],i;
printf( "请输入5X5的矩阵\n ");
for(i=0;i <5;i++)
scanf( "%d %d %d %d %d ",&b[i][0],&b[i][1],&b[i][2],&b[i][3],&b[i][4]);
sort(b[5][5]);
for(i=0;i <5;i++)
printf( "%d %d %d %d %d\n ",b[i][0],b[i][1],b[i][2],b[i][3],b[i][4]);
}
void sort(int a[5][5])
{ int *pmin,*pmax,temp,i,j;
pmax=&a[0][0];
pmin=&a[0][0];
for(i=0;i <5;i++)
for(j=0;j <5;j++)
{if(a[i][j]> *pmax)pmax=&a[i][j];
if(a[i][j] <*pmin)pmin=&a[i][j];}/*查找最大最小值*/
temp=a[2][2]; /*交换最大最小值*/
a[2][2]=*pmax;
*pmax=temp;
temp=a[0][0];
a[0][0]=*pmin;
*pmin=temp;
pmin=&a[0][4];
for(i=0;i <5;i++)
for(j=0;j <5;j++)
if((a[i][j] <*pmin)&&(a[i][j]> a[0][0]))pmin=&a[i][j];
temp=a[0][4]; /*交换第二小值*/
a[0][4]=*pmin;
*pmin=temp;
pmin=&a[4][0];
for(i=0;i <5;i++)
for(j=0;j <5;j++)
if((a[i][j] <*pmin)&&(a[i][j]> a[0][4]))pmin=&a[i][j];
temp=a[4][0]; /*交换第三小值*/
a[4][0]=*pmin;
*pmin=temp;
pmin=&a[4][4];
for(i=0;i <5;i++)
for(j=0;j <5;j++)
if((a[i][j] <*pmin)&&(a[i][j]> a[4][0]))pmin=&a[i][j];
temp=a[4][4]; /*交换第四小值*/
a[4][4]=*pmin;
*pmin=temp;
}
[解决办法]
看的我眼疼
给出一个我的代码吧,供参考
main()
{
int i;
int b[5][5];
printf( "请输入5X5的矩阵\n ");
for(i=0;i <5;i++)
for(int j=0;j <5;j++)
b[i][j]=::rand()%100;
for(i=0;i <5;i++)
printf( "%d\t%d\t%d\t%d\t%d\n ",b[i][0],b[i][1],b[i][2],b[i][3],b[i][4]);
ArraySort((int *)b);
printf( "排序后矩阵为:\n ");
for(i=0;i <5;i++)
printf( "%d\t%d\t%d\t%d\t%d\n ",b[i][0],b[i][1],b[i][2],b[i][3],b[i][4]);
}
void ArraySort(int * a)
{
int temp,i;
temp=0;
//换最大值
for(i=0;i <25;i++)
{
if(a[12] <a[i])
{
temp=a[12];
a[12]=a[i];
a[i]=temp;
}
//换a[0][0]
if(a[0]> a[i])
{
temp=a[0];
a[0]=a[i];
a[i]=temp;
}
//换a[0][4]
if(i==0)continue;
if(a[4]> a[i])
{
temp=a[4];
a[4]=a[i];
a[i]=temp;
}
//换a[4][0]
if(i==0||i==4)continue;
if(a[20]> a[i])
{
temp=a[20];
a[20]=a[i];
a[i]=temp;
}
//换a[4][4]
if(i==0||i==4||i==20)continue;
if(a[24]> a[i])
{
temp=a[24];
a[24]=a[i];
a[i]=temp;
}
}
}
[解决办法]
void sort(int a[][])
改为
void sort(int a[][5])
还有头文件少了#include <stdio.h>
sort(b);
编译通过