最笨的方法解贼简单的题

2018-01-18 08:49:36来源:cnblogs.com作者:xtu熊大人点击

分享

题目:输入一个5x5矩阵,将其中最大的元素移到中心,4个角分别放4个最小的元素(顺序从左到右,从上到下以此从小到大存放)

思路:最大值是最好找的,循环遍历一次,找出最大值和其地址。然后就是找最小的那4个数字,我的思路是首先用一数组来存放二维数组的第一行,然后从第二行开始遍历,从该数组b中最大的元素开始比较,首先小于哪一个就替换掉哪一个,最后b数组中就是二维数组中最小的5个数。然后就是找到这4个数的地址,一开始我没有加flag标记,那样一旦二维数组中存在两个相同的数,程序就崩溃了。意识到这一点后,我给每一个数设了一个对应的flag1,flag2等,一旦找到了一个,取这个地址后,同时设置flag为1,表示这个数已经取过地址了。最后,输出即可。

 1 #include<stdio.h> 2 int main(){ 3     void sort(int q[]); 4     int a[5][5]; 5     int b[5]; 6     int max=0,temp; 7     int flag1=0,flag2=0,flag3=0,flag4=0; 8     int *p; 9     int *p1,*p2,*p3,*p4;10     for(int i=0;i<5;i++)11       for(int j=0;j<5;j++)12         scanf("%d",&a[i][j]);13     for(int i=0;i<5;i++)14       b[i]=a[0][i];15     16     for(int i=0;i<5;i++){17       for(int j=0;j<5;j++){18         if(a[i][j]>max) {max=a[i][j]; p=&a[i][j];}  19 }20 }21     for(int i=1;i<5;i++){22         for(int j=0;j<5;j++){23                 for(int k=4;k>=0;k--){24                   if(a[i][j]<b[k]) {25                   b[k]=a[i][j];26                   sort(b);break;27          }28     }29         }30     }31     for(int i=0;i<5;i++){32       for(int j=0;j<5;j++){33         if(a[i][j]==b[0]&&flag1==0) {p1=&a[i][j];flag1=1;}34         else if(a[i][j]==b[1]&&flag2==0) {p2=&a[i][j];flag2=1;}35         else if(a[i][j]==b[2]&&flag3==0){p3=&a[i][j];flag3=1;}36         else if(a[i][j]==b[3]&&flag4==0) {p4=&a[i][j];flag4=1;} 37 }38 }39 *p=a[2][2];a[2][2]=max;40 *p1=a[0][0];a[0][0]=b[0];41 *p2=a[0][4];a[0][4]=b[1];42 *p3=a[4][0];a[4][0]=b[2];43 *p4=a[4][4];a[4][4]=b[3];44      printf("/n /n");45     for(int i=0;i<5;i++){46       for(int j=0;j<5;j++){47         printf("%d ",a[i][j]);48 }49         printf("/n");50 }51 }52 //排序 53 void sort(int q[]){54     int temp1;55     for(int i=0;i<5;i++){56         for(int j=i+1;j<5;j++){57             if(q[i]>q[j]){58                 temp1=q[i];q[i]=q[j];q[j]=temp1;59             }60         }61     }62 }

运行结果:

最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台