为什么这个程序的运行结果是这样的,求解..
问题是:已有一个已排好序的数组,输入一个数,要求按原来的排序规律将它插入到数组中。我的程序是:
#include "stdio.h"
#define N 7
void paixu(int k,int *a);
void main()
{
int i,a[N]={586,513,489,284,106,46,24};
printf("the former array is:\n");
for(i=0;i<N;i++)
printf("%-5d",a[i]);
printf("\ninput a Num:");
scanf("%d",&i);
paixu(i,a);
for(i=0;i<=N;i++)
printf("%-5d",a[i]);
}
void paixu(int k,int *a)
{
int t=N,i=N,j=0;
while(1)
{
if(k>=a[j])
{while(i>j)
a[t--]=a[--i];
a[j]=k;
break;}
j++;
}
}
注:明明测试过当时赋值时a[N]是24的,不知道为什么运行后结果就变为7了。是不是要扩展数组长度?唉...