**
编者注:考题版权归属版权方,作答代码版权归属编者,请勿私自盗用。本代码仅供参考,还请各位读者不吝赐教。
**
本题要求编写程序,将一个给定的整数插到原本有序的整数序列中,使结果序列仍然有序。
输入格式:
输入在第一行先给出非负整数N(<10);第二行给出N个从小到大排好顺序的整数;第三行给出一个整数X。
输出格式:
在一行内输出将X插入后仍然从小到大有序的整数序列,每个数字后面有一个空格。
输入样例:
5
1 2 4 5 7
3
输出样例:
1 2 3 4 5 7
参考代码:(编者注:考题版权归属版权方,作答代码版权归属编者,请勿私自盗用。本代码仅供参考,还请各位读者不吝赐教。)
#include <stdio.h>
#include <stdlib.h>
int main()
{
int N;
scanf("%d",&N);
if(N==0)
{
int b;
scanf("%d",&b);
printf("%d ",b);
return 0;
}//空插入,此时仍然需要输入数据,再进行插入
int *p;
p = (int *)malloc(sizeof(int)*(N+1));//此处为c语言动态创建数组方法
//也可以创造足够大数组存储数据
for(int k = 0;k < N;k++)
{
scanf("%d",&p[k]);
}//输入完毕
int temp,x;
scanf("%d",&x);
int i;
for(i = 0;i < N;i++)
{
if(p[i]<x)
continue;
if(p[i]>x)
{
temp = i;
for(int k = N;k>=i;k--)
{
p[k]=p[k-1];
}
p[temp] = x;
break;
}
}//一般情况下的插入
if(i==N)
{
p[N] = x;
}//最大输入数值的插入
for(int i = 0;i<=N;i++)
{
printf("%d ",p[i]);
}
}