• 最笨的方法解贼简单的题


    题目:输入一个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("
     
    ");
    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("
    ");
    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 }

    运行结果:

    务实,说实话!
  • 相关阅读:
    java表达式, 语句, 块(翻译自Java Tutorials)
    java控制流语句(翻译自Java Tutorials)
    你可以将使用搬到ubuntu上
    python进阶学习笔记(三)
    译:selenium webdriver (python)
    异步调用轻量级封装AsynCaller
    企业开发基础设施--事件通知服务(Remoting双向通信)
    企业开发基础设施--序
    关于跨程序集的反射
    异常处理经验谈
  • 原文地址:https://www.cnblogs.com/xtuxiongda/p/8306916.html
Copyright © 2020-2023  润新知