1. 程式人生 > >譚浩強 紅寶書 章節6 課後習題4

譚浩強 紅寶書 章節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;
}