分类: 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++)/*内循环(将已知数比较按大小排列好)*/ {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之间。