Chinaunix首页 | 论坛 | 博客
  • 博客访问: 373029
  • 博文数量: 57
  • 博客积分: 4020
  • 博客等级: 上校
  • 技术积分: 647
  • 用 户 组: 普通用户
  • 注册时间: 2007-07-17 15:57
文章分类

全部博文(57)

文章存档

2009年(22)

2008年(35)

我的朋友

分类: C/C++

2008-04-24 16:05:30

C语言 数组学习笔记 1

输入一个整数并把它插入已知数中并按大小顺序排列出来:

Author:yuexingtian

Date:Thursday, April 24, 2008

 

/*把一个整数按大小顺序插入已排好序的数组中*/

main()

{

  int i,j,p,q,s,n,a[11]={127,3,6,28,54,68,87,105,162,18};

  for(i=0;i<10;i++) /*外循环(先把已知数按大小顺序排列)*/

     {

p=i;q=a[i];

    for(j=i+1;j<10;j++)/*内循环(将已知数比较按大小排列好)*/

       if(q

          {p=j;q=a[j];}

       if(i!=p)

         {

           s=a[i];

           a[i]=a[p];

           a[p]=s;

         }

        printf("%d ",a[i]);

      }

     printf("\ninput number:\n");

     scanf("%d",&n);

     for(i=0;i<10;i++)/*判断要插入数的位置*/

        if(n>a[i])

        {

          for(s=9;s>=i;s--)

           a[s+1]=a[s];

           break;

         }

      a[i]=n;

      for(i=0;i<=10;i++)

      printf("%d ",a[i]);

      printf("\n");

getch();

}

测试结果:

 

 

   本程序首先对数组a中的10个数从大到小排序并输出排序结果。然后输入要插入的整数n。再用一个for语句把n和数组元素逐个比较,如果发现有n>a[i]时,则由一个内循环把i以下各元素值顺次后移一个单元。后移应从后向前进行(从a[9]开始到a[i]为止)。后移结束跳出外循环。插入点为i,把n赋予a[i]即可。 如所有的元素均大于被插入数,则并未进行过后移工作。此时i=10,结果是把n赋于a[10]。最后一个循环输出插入数后的数组各元素值。

    程序运行时,输入数47。从结果中可以看出47已插入到54和 28之间。

阅读(1505) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~