• 【程序练习】——交换两数组元素,使之和差最小


     1 #include<stdio.h>
     2 
     3 int main()
     4 {
     5     int a[5] = {3,5,6,1,4};
     6     int b[5] = {1,9,12,4,3};
     7     int c[10];
     8 
     9     int i,j = 0;
    10     int k;
    11     int tmp;
    12     int flag;
    13 
    14     //合并ab到c
    15     for(i = 0; i < 5; i++)
    16         c[j++] = a[i];
    17 
    18     for(i = 0; i < 5; i++)
    19         c[j++] = b[i];
    20 
    21 
    22     //排序c
    23     for(i = 0; i < 10; i++)
    24     {
    25         j = i;
    26         for(k = i + 1; k < 10; k++)
    27         {
    28             if(c[j] > c[k])
    29                 j = k;
    30         }
    31 
    32         if(j != i){
    33             tmp = c[j];
    34             c[j] = c[i];
    35             c[i] = tmp;
    36         }
    37     }
    38 
    39 
    40 
    41     //用取头尾的方式对ab进行重新赋值
    42     j = 0;
    43     k = 0;
    44     flag = 0;                        //创建一个标志 
    45     for(i = 0; i < 10 / 2; i++){                //一次循环只能执行一次取头取尾,取完就要跳出
    46         if(j != 5){
    47             a[j++] = c[i];                //因为数组ab的长度都是5,而1取头尾的方法一次性取了两个,所以需要一个标志
    48             flag = 0;
    49         }
    50         if(j != 5){
    51             a[j++] = c[10 - i - 1];
    52             flag = 1;
    53             continue;                    //当a已经存满后并且已经取过尾了,要跳出此次循环,避免下面的b数组重复取数
    54         }
    55 
    56         //对两个标志和数组长度进行判断
    57         if(j == 5 && k != 5 && flag == 0){
    58             
    59             b[k++] = c[10 - i - 1];
    60             flag = 1;                        //因为上个语句是在a取完头之后数组满了,需要数组b取尾,此语句只能执行一次,所以要修改标志,并跳出此次循环
    61             continue;
    62         }
    63         if(j == 5 && k != 5 && flag == 1){
    64             b[k++] = c[i];
    65             b[k++] = c[10 - i - 1];
    66         }
    67     }
    68 
    69     for(i = 0; i < 10; i++)            //打印合并并排好序的数组c
    70         printf("%d	",c[i]);
    71 
    72     putchar('
    ');
    73 
    74     for(i = 0; i < 5; i++){            //打印重新分配的数组a
    75         printf("%d	",a[i]);
    76     }
    77 
    78     putchar('
    ');
    79 
    80     for(i = 0; i < 5; i++)            //打印重新分配的数组b
    81         printf("%d	",b[i]);
    82 }
  • 相关阅读:
    Django项目总结:Model高级
    Django项目总结:Response和Cookie
    数据库:索引
    数据库:视图
    数据库:约束
    MySQL:常用命令
    MySQL:安装和连接
    时间戳和正则表达式
    Java 类的概念与使用
    JAVA复习题
  • 原文地址:https://www.cnblogs.com/ngnetboy/p/3358521.html
Copyright © 2020-2023  润新知