这个程序那错了?

来源:百度知道 编辑:UC知道 时间:2024/06/17 12:44:41
q(int *a,int n){
int i=0,pa=i;
while(n<a[i]){
pa=i;++i;break;}
for(pa;pa<11;pa++) a[pa++]=a[pa];
a[pa]=n;
}

main(){
int a[11]={12,15,16,19,20,26,28,30,39,40},i,n;
printf("Entet n: ");
scanf("%d",&n);
q(a,n);
for(i=0;i<=9;i++)printf(" %d",a[i]);
printf("\n");
}

C程序,插入一个数到数组中。。。

我觉得
while(n<a[i]){pa=i;++i;break;}
有问题

如果n=100,那么循环条件结果为假,while循环不执行
如果n=1,那么循环条件结果为真,while循环执行一次后break
就是说,这个while循环顶多做一次

另外,我觉得
for(pa;pa<11;pa++) a[pa++]=a[pa];
也有问题
因为循环时两处有pa++,所以pa是类似于每次跳2个格般前进

q函数中的pa是哪里来的?