#include <stdio.h>
#define N 11
void composior(int *p,int n,int num);
main()
{int a[N]={1,4,6,9,13,16,19,28,40,100};
int num,*pt,i;
clrscr();
for(i=0;i<=2;i++) { /*第一次循环之后,数组就改变了,但我不是我想的,请看下面,谢谢*/
printf("original array is:");
for(pt=a;pt<a+N-1;pt++)
printf("%5d",*pt);
printf("\n");
printf("the insert num is:");
scanf("%d",&num);
composior(a,N,num);
printf("\nNow array is:");
for(pt=a;pt<a+N;pt++)
printf("%5d",*pt);
printf("\n\n-----------------------------------------\n"); }
getch();return 0; }
void composior(int b[],int n,int num)
{int *q,*p=b;
if(num>*(p+n-2)) *(p+n-1)=num;
else {
for(;p<b+n-1;p++)
if(*p>num) {
for(q=b+n-2;q>=p;q--)
*(q+1)=*q;
*p=num;break;
}} }
第一次循环之后,正确,但在第二次循环之后,数组已改变了,于是,又插入一个数,此时按新的数组进行排序,但这不是我的原意,我还想按照原来的顺序,进行循环,我想不出来怎样改,请高手赐教,谢谢!
谢谢wangtk1982 -,这我怎么没想到呢?我还想问一下,那个break有什么用,开始时忘记加了,错误。