谭浩强 红宝书 章节6 课后习题4

题目:有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中
像这种题目给的条件有点模糊,与一些指示明确的比赛题目不一样。
所以我们先暂定一个升序数组 {1,2,4,5,8}, 因为有5个元素,所以我们定义时按照题目要求,应该给其多加一个元素。也就是a[6]={1,2,4,5,8}。
然后按照从大至小的顺序让插入数b与a[i]进行对比排列,大的数赋值给a[i+1], 然后依次进行比较。
为什么要赋值给a[i+1]呢,举个简单例子
b值为6,a[5]也就是8,当b<a[5],就将a[5]赋值给a[6]。而a[5]的值就空了出来,
b又继续和5(a[4])进行比较,如果b大于a[4]呢,就将b赋值给a[5],然后成功结束,直接输出。

#include<stdio.h>

int main()
{
   int n=6,i=0,b=0,temp=0;
   int a[6]={1,2,4,5,8};     //一个升序变量,数值为6,但只定义了5个,还留着一个
   scanf("%d",&b);
   for(i=n-2;i>=0;i--)       //循环5次,降序输出。
   {
       if(a[i]>b)            //如果a[i]>b,
        {
           a[i+1]=a[i];      //将a[i]赋值给a[i+1] 
        }
        else 
        {
            a[i+1]=b;        //如果b>a[i],将b赋值给a[i+1]
            break;  
        }
   }
   for(i=0;i<n;i++)
   {
       printf("%d\t",a[i]);            
   }
    system("pause");
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_42766201/article/details/83714452