70,023
社区成员




#include <stdio.h>
#define SIZE 20
int findposition(int array[],int n,int data);
int insert(int array[],int n,int data,int pos);
void main()
{
int a[SIZE]={0},d,n,*p;
printf("input array length\n");
scanf("%d",&n);
printf("\ninput array %d element\n",n);
for (p=a;p<(a+n);p++)
{
scanf("%d",p);
}
printf("\nbefore insert:\n");
//for (p=a;i<(p+n);p++) 解析C程序设计书204页代码 i明显错误
//for (p=a;p<(p+n);p++) 改为指针p小于 P<(p+n)也能编译通过,运行是就
//错误,我是这样理解的,看对不对。P+n随着指针的移动,应该修改为固定的地址a+n
for (p=a;p<(a+n);p++)
{
printf("%d\t",*p);
}
printf("\ninput insert data:\n");
scanf("%d",&d);
n=insert(a,n,d,findposition(a,n,d));
printf("\nafther insert %d:\n",d);
for (p=a;p<(a+n);p++)
printf("%d\t",*p);
}
int findposition(int *p,int n,int data){
int i;
for(i=0;(i<n)&&(data>*p);i++,p++)
{ ;}
return i;
}
int insert(int *p,int n,int data,int pos){
int i;
for (i=n-1;i>=pos;i--)
{
*(p+i+1)=*(p+i);
}
*(p+pos)=data;
return n+1;
}