现有10整数的升序数列,存储在一维数组中,要求在其中插入任意一个整数后数列仍然有序。原数列为:10,20,30,40,50,60,70,80,90,99。要求:
1)用指针访问数组元素,不能采用下标法访问元素。
2)输出插入元素后的结果中每两个数据之间用一个空格分隔。
运行参考示例:
输入1:35
输出1:10 20 30 35 40 50 60 70 80 90 99
输入2:5
输出2:5 10 20 30 40 50 60 70 80 90 99
输入3:100
输出3:10 20 30 40 50 60 70 80 90 99 100
运行代码如下:
#include<stdio.h>
int main()
{
int a[11]={10,20,30,40,50,60,70,80,90,99};
int *p;
p=a;
int m;
int i,j,t,k;
scanf("%d",&m);//m为插入的数据
k=a[9];
if(m>=k)
{
a[10]=m;
}
else
{
for(i=0;i<11;i++)
{
if(*(p+i)>m)
{
break;
}
}
for(j=11;j>i;j--)//把元素往后推
{
*(p+j)=*(p+j-1);
}
*(p+i)=m;
}
for(i=0;i<11;i++)
{
printf("%d ",a[i]);
}
return 0;
}