|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- /*****************************************************************
- 将一个 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
|
|