这是题目
有10-90这9个整数,已按升序存放于长度为10的一维数组中。要求将一整数35插入其中,并保持数组元素仍然有序。
输入说明:
整数35插入其中后
输出示例:
10 20 30 35 40 50 60 70 80 90
我的代码:
#include <stdio.h>
int main()
{
int *p,a=35,i=0,t,n,j;
int m[10]={10,20,30,40,50,60,70,80,90};
p=&a;
while(i<9)
{
if(*p>*(m+i))
{
i++;
if(*p>*(m+8))
*(m+9)=*p;
}
else if(*p<*(m+i))
{
*(m+i)=*p;
for(j=8;j>i;j--)
{
t=*(m+j);
*(m+j+1)=*(m+j);
}
break;
}
}
for(i=0;i<10;i++)
printf("%d ",*(m+i));
return 0;
}
运行结果:
供参考:
//升序序列
#include<stdio.h>
#define N 10
int main()
{
int n = 9, m, i, a[N]={10,20,30,40,50,60,70,80,90};
//scanf("%d", &n); //n:有序数列的个数
//for (i = 0; i < n; i++) // 输入n个有序数列元素
// scanf("%d", &a[i]);
scanf("%d", &m); //m:待插入的数
if (m > a[n - 1]) { //插入操作
a[n] = m;
}
else {
for (i = n; m < a[i - 1] && i > 0; i--) {
a[i] = a[i - 1];
}
a[i] = m;
}
for (i = 0; i < n + 1; i++)//输出 插入数 m 后的有序数列
printf("%4d", a[i]);
printf("\n");
return 0;
}