前言
在本题中我们需要注意的是如果新增的数字是最后一项,需要一个if语句对其进行判断,否则该数字无法新增到数组里面!
一、题意
输入一个升序数组(本题暂定输入四个数字,存放到数组中),并且再输入一个数字,按照升序将这个数字插入到数组中,插入之后,数组仍然保持升序。
输入样例
1 2 3 4
5
输出样例
12345
二、代码
1.代码的实现
//按照升序输入一个数组,并且再输入一个数字,将其插入到数组中
#include<stdio.h>
int main()
{
int n;//用于存储需要插到数组中的数字
int i;
int a[5];//自己输入的升序数组
int j=0;
int b[6];//用于存储新的数组,即将n插入到数组a之后的结果
int flag=1;//代表没有插入
for(i=0;i<4;i++)//本题设为输入四个升序数字
scanf("%d",&a[i]);
scanf("%d",&n);
for(i=0;i<4;i++)
if(a[i]<n&&flag==1)//n插入之前
b[j++]=a[i];
else if(a[i]>=n&&flag==1)//n插入的代码
{
b[j++]=n;
flag=0;
i--;
}
else if(flag==0)//表示n已经插入到数组中,后续的数组按照原先的顺序进行插入即可
{
b[j++]=a[i];
}
if(flag==1)//此处一定要注意加一个判断n是否插入到数组中,若没有插入,则说明,n比数组a中的所有元素都大,直接插入到队尾即可
b[j]=n;
for(j=0;j<5;j++)
printf("%d",b[j]);
return 0;
}
2.读入数据
1 2 3 4//升序数组a
5//把5插入到这个升序的数组中
12345//输出插入之后的结果
1 2 3 4//升序数组a
0//把0插入到这个升序的数组中
01234//输出插入之后的结果
总结
本类题主要考察对边界的考虑是否全面,如果不考虑n大于a中所有元素的情况,则就掉进了出题人的陷阱中,请同学们一定要仔细思考为什么要考虑这种边界的情况!!