c语言插入一个数到有序数组中的问题。。

#include<stdio.h>
#define size 20
int findposition(int x[],int N,int data);
int insert(int x[],int N,int data,int pos);
int main()
{
int a[size],i,N,d=50;
printf("input a length:");
scanf("%d",&N);
printf("input a array:");
for(i=0;i<N;i++)
scanf("%d",&a[i]);
N=insert(a,N,d,findposition(a,N,d));
printf("after insert:");
for(i=0;i<N;i++)
printf("%d\n",a[i]);
return(0);
}
int findposition(int x[],int N,int data)
{
int i;
for(i=0;(i<N)&&(data>x[i]);i++);
return(i);
}
int insert(int x[],int N,int data,int pos)
{
int i;
for(i=0;i<N;i++)
{if(i>pos)
x[i+1]=x[i];
else
continue;
}
x[pos]=data;
return(N+1);
}

这里面哪里出了问题,虽然可以运行。。另外return(N+1)是什么意思啊,书上说是返回数组长度,但为什么要返回这个数组长度。

修改insert函数中的for语句如下:
for(i=N-1;i>=pos;i--)
{
x[i+1]=x[i];
}
你往数组中插入了一个新的值,数组的长度增加了1,所以返回N+1咯,这样就能在接下来的输出中使用这个新值N
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-08-16
 int insert(int x[],int N,int data,int pos)
{
 int i;
 for(i=N;i>pos;i--)
     x[i]=x[i-1];
 x[pos]=data;
return(N+1);
}

(N+1)是数组长度

听书上的 书上有他道理