#include
#include
void f(int a[],int n,int k);
void sx(int * p,int n);//升序
void printfa(int * p,int n);//打印数组
int main()
{
int *a,n,k,i;
printf("\n请确认要输入几个整数:");
scanf("%d",&n);
a=(int *)malloc(sizeof(int)*(n+1));
printf("\n请输入%d个整数:",n);
for(i=0;i{
scanf("%d",&a[i]);
}
printf("\n请输入要插入的整数:");
scanf("%d",&k);
f(a,n,k);
printf("\n数值插入后的数组按升序排列:");
printfa(a,n+1);
return 0;
}
void printfa(int * p,int n)//打印数组
{
int i;
printf("\n");
for(i=0;iprintf("%d ",p[i]);
printf("\n");
}
void f(int a[],int n,int k)
{
a[n]=k;
sx(a,n);
}
void sx(int * p,int n)//升序
{
int i,j,num;
for(j=0;j<=n-1;j++)
{
for(i=j+1;i{
if(p[j]>p[i])
{
num=p[j];
p[j]=p[i];
p[i]=num;
}
}
}
}
//示例代码如下
#include
#define N 100
void f(int a[],int n,int k)
{
int *p,*q,*s;
p=a; //指向首元素
while(pif(k>=*p && k<*(p+1)){
s=p+1; //指针s指向k待插入的位置
for(q=p+n-1;q>p;q--){
*(q+1)=*q;
}
*s=k;
break;
}
p++;
}
}
int main()
{
int arr[N];
int n,i,value;
scanf("%d",&n);
printf("Input %d numbers: ",n);
for(i=0;iscanf("%d",arr+i);
printf("Insert a value: ");
scanf("%d",&value);
f(arr,n,value);
printf("Output arr:\n");
for(i=0;iprintf("%d ",arr[i]);
printf("\n");
return 0;
}
//示例运行结果
F:\c_work>a.exe
5
Input 5 numbers: 1 2 2 3 6
Insert a value: 2
Output arr:
1 2 2 2 3 6
F:\c_work>a.exe
5
Input 5 numbers: 1 2 2 3 6
Insert a value: 4
Output arr:
1 2 2 3 4 6
//修改了下的代码,现在没问题了,有问题的地方给你注释了
#include
#include
void f(int a[],int n,int k)
{
int i,j,num;
a[n]=k; //你这样赋值意味着数组的长度增加1了,即有(n+1)个元素了,数组末元素是a[n]
//for(j=0;j<=n-1;j++)
for(j=0;j<=n;j++)
{
//for(i=j+1;if