#include<stdio.h>
void insert(int a[],int n,int x)
{int i;
for(i=n-1;i>=0;i--)
if(a[i]>x) a[i+1]=a[i];
else break;
a[i+1]=x;
}
void output(int a[],int n)
{
int i;
for(i=0;i<n;i++) printf("%d",a[i]);
printf("\n");
}
int main()
{
int a[10],n,x;
scanf("%d",&n);
while(n>0){
scanf("%d",&a[n]);n--;}
scanf("%d",&x);
insert(a,n,x);
output(a,n+1);
return 0;
}
不知道哪错了,怎么改,求解!
读取的scanf不对啊,你这读取的数据从大到小存,数据从小到大给你的,这升序的数据硬是给写成降序了
...
output也不对,插入了一个数,总共应该是n+1个数了没错,但你之前while里写了个n--啊,n都减少到0才退出循环,你认为还能打印几个数?
主函数修改:
int main()
{
int a[10],n,x,i = 0;//修改
scanf("%d",&n);
while(i<n){ //修改
scanf("%d",&a[i]);i++;//修改
}
scanf("%d",&x);
insert(a,n,x);
output(a,n+1);
return 0;
}