C语言随笔:输入一个升序数组,并且再输入一个数字,按照升序插入到数组里


前言

在本题中我们需要注意的是如果新增的数字是最后一项,需要一个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中所有元素的情况,则就掉进了出题人的陷阱中,请同学们一定要仔细思考为什么要考虑这种边界的情况!!

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值