有一些错误,如下(如有帮助,请采纳一下,谢谢)
1.insert的声明返回值是void,实现的时候成了int
2.在for循环中后移的时候逻辑出错;
3.insert的第一行,多声明了一个int n;
修改后的代码如下:
#include <stdio.h>
void insert(int a[],int n);
int main()
{
int a[10] = {11,22,33,44,55,66,77,88,99};
int n,i;
scanf("%d",&n);
insert(a,n); //注意这个地方是a,不是a[]
for (i = 0; i < 10; i++)
{
printf("%d\n",a[i]);
}
getchar();
getchar();
return 0;
}
void insert(int a[],int n)
{
if (n > a[8])
{
a[9] = n;
return;
}
int i,j,m;//注意,原代码此处多了一个n和t
for (int i = 0; i < 9; i++)
{
if (a[i] > n)
{
m = a[i];
a[i] = n;
//从i开始以后的往后移动
for (j = 9;j>i+1;j--)
{
a[j] = a[j-1];
}
a[i+1] = m;
break;
}
}
}