/*****************************************************************
将一个 5*5 的矩阵中最大的元素放在中心,4个角分别放4个最小的元素
(顺序为从左到右,从上到下依次从小到大存放),写一函数实现之。
用 main函数调用。
*****************************************************************/
#if(1)
#include<stdio.h>
#include<string.h>
int main()
{
void sx(char *y[]);
char a[5][5][20],*p[25];
int i,k,j=0,n=25;
for(k=0;k<5;k++)
{
for(i=0;i<5;i++,j++)
{
gets(a[k][i]);
p[j]=a[k][i];
}
}
for (i=0,k=0;i<n;i++) //打印原矩阵
{
if(k%5==0) printf("\n");
printf("%s ",*(p+i));
k++;
}
printf("\n");
sx(p);
for (i=0,k=0;i<n;i++) //打印改变后的矩阵
{
if(k%5==0) printf("\n");
printf("%s ",*(p+i));
k++;
}
printf("\n");
}
void sx(char *y[])
{
void sh(char *y1,char *y2); //指针所指字符串交换
int i,k,n=25,a[5]={0};
char temp[30]={0};
strcpy(temp,*(y+0));
for(i=0;i+1<n;i++)
{
if( strcmp( temp,*(y+i))>0 )
{
strcpy(temp,*(y+i));
*(a+0)=i;
}
}
if( ( strcmp( *(y+0),*(y+*(a+0))) !=0 )) sh(*(y+0),*(y+*(a+0))); //最小的数放到左上角
strcpy(temp,*(y+1));
for(i=1;i+1<n;i++)
{
if( strcmp( temp,*(y+i))>0 && strcmp( *(y+i),*(y+0) )>0 )
{
strcpy(temp,*(y+i));
if( strcmp( temp,*(y+0) )>0 )
*(a+1)=i;
}
}
if (*(a+1)==0) *(a+1)=1;
if(( strcmp( *(y+4),*(y+*(a+1)))!=0 )) sh(*(y+4),*(y+*(a+1))); // 第二小的数放到右上角
strcpy(temp,*(y+1));
for(i=1;i+1<n;i++)
{
if( strcmp( temp,*(y+i))>0 && strcmp( *(y+i),*(y+4) )>0 )
{
strcpy(temp,*(y+i));
if( strcmp( temp,*(y+4) )>0 )
*(a+2)=i;
}
}
if (*(a+1)==0) *(a+1)=1;
if(( strcmp( *(y+20),*(y+*(a+2)))!=0 )) sh(*(y+20),*(y+*(a+2))); // 第三小的数放到左下角
strcpy(temp,*(y+1));
for(i=1;i+1<n;i++)
{
if( strcmp( temp,*(y+i))>0 && strcmp( *(y+i),*(y+20) )>0 )
{
strcpy(temp,*(y+i));
if( strcmp( temp,*(y+20) )>0 )
*(a+3)=i;
}
}
if (*(a+1)==0) *(a+1)=1;
if(( strcmp( *(y+24),*(y+*(a+3)))!=0 )) sh(*(y+24),*(y+*(a+3))); // 第四小的数放到右下角
strcpy(temp,*(y+1));
for(i=0,k=1;i+1<n;i++)
{
if( strcmp( temp,*(y+i))<0 )
{
strcpy(temp,*(y+i));
*(a+4)=i;
}
}
if(( strcmp( *(y+12),*(y+*(a+4)))!=0 )) sh(*(y+12),*(y+*(a+4))); // 最大的数放到中间
}
void sh(char *y1,char *y2)
{
char cc[20];
strcpy(cc,y1);
strcpy(y1,y2);
strcpy(y2,cc);
}
#endif
已经是第二次写这个程序了,还是用了6个小时,我笨死了55555555555555555555555