请判断哪个程序更好?!

来源:互联网 发布:中国8月信贷数据 编辑:程序博客网 时间:2024/04/29 02:51

 题目:有一个已经排好序的数组。现输入一个数,要求按照原来的规律将它插入数组中。

方法一

1. 程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后
     此元素之后的数,依次后移一个位置。
2.程序源代码:
#include "stdio.h"
#include "conio.h"
main()
{
  int a[11]={1,4,6,9,13,16,19,28,40,100};
  int temp1,temp2,number,end,i,j;
  printf("original array is:/n");
  for(i=0;i<10;i++)
    printf("%5d",a[i]);
  printf("/n");
  printf("insert a new number:");
  scanf("%d",&number);
  end=a[9];
  if(number>end)
    a[10]=number;
  else
  {
    for(i=0;i<10;i++)
    {
      if(a[i]>number)
      {
        temp1=a[i];
        a[i]=number;
        for(j=i+1;j<11;j++)
        {
          temp2=a[j];
          a[j]=temp1;
          temp1=temp2;
        }
        break;
      }
    }
  }
  for(i=0;i<11;i++)
    printf("%6d",a[i]);
  getch();
}


方法二

程序分析:

原题没有说清是什么规律的顺序,先设为按数字的大小顺序由大到小

原题没有说清已知数组a[ ]元素个数,设数组b[ ]、元素个数比已给数组多一个,以便插入新数字

把数组的a[]元素顺序赋值给数组b[ ],把输入的数字赋值给b[ ]数组的最后一个元素

数组b[ ]的最后一个元素和前一个元素比较大小,大的放在前,小的放在后

程序源程序:

#include "stdio.h"
main()
{
    int a[6]={15,13,10,9,8,7};
    int b[7];
    int i;
    int x,y;
    for(i=0;i<6;i++)
       printf("%3d",a[i]);
    printf("/nplease insert a number/n");  
    scanf("%d",&x);  
       b[6]=x;
    for(i=0;i<6;i++)
       {b[i]=a[i];
       printf("%3d",b[i]);}      
    for(i=6;i>0;i--)
      { if(b[i]>b[i-1])
        {y=b[i];
        b[i]=b[i-1];
        b[i-1]=y;}
        else
        break;
      }
      printf("/n");
 for(i=0;i<7;i++)
  printf("%3d",b[i]);
}

 

原创粉丝点击