1096: C语言程序设计教程排序新问题

104 阅读1分钟

1096: C语言程序设计教程(第三版)课后习题10.3

题目描述
输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写三个函数; ①输入10个数;②进行处理;③输出10个数。
输入
10个整数
输出
整理后的十个数,每个数后跟一个空格(注意最后一个数后也有空格)
样例输入
2 1 3 4 5 6 7 8 10 9
样例输出
1 2 3 4 5 6 7 8 9 10

#include <stdio.h>
#include <stdlib.h>

int main()
{
   int a[10];
   int i,j,n,m;
   int b[10];
   for(i=0;i<10;i++)///存放10个整数进入a数组
   {
       scanf("%d",&a[i]);
   }
   for(i=0;i<10;i++)///copy a数组给b数组
   {
       b[i]=a[i];
   }
   for(i=1;i<10;i++)///a数组冒泡排序
   {
       for(j=0;j<10-i;j++)
       {
           if(a[j]>a[j+1])
           {
               n=a[j];
               a[j]=a[j+1];
               a[j+1]=n;
           }
       }
   }
   for(i=0;i<10;i++)///遍历所有整数
   {
       if(b[i]==a[0])///寻找b数组中最小的整数和b[0]调换
       {
           m=b[i];
           b[i]=b[0];
           b[0]=m;
       }

       if(b[i]==a[9])///寻找b数组中最大的整数和b[9]调换
        {
           m=b[i];
           b[i]=b[9];
           b[9]=m;
       }
   }
   for(i=0;i<10;i++)///输出b数组中所有整数
   {
       printf("%d ",b[i]);
   }
   printf("\n");
}