解题思路:首先这是有正序排好的数组,插入一个数进去,依然是正序的数组。所以我们要找到插入数X的数组下标。所以我们当我们原有数组里的数第一个大于等于插入数X的数值,那么原有数组里这个数的下标,就是我们插入数的下标,我们把下标进行保存,这个数及后面的数据的下标都往后移动一位,重新进行赋值即可。可看下面的图解

微信图片_20220730233437.jpg
注意事项:

参考代码:

#include<stdio.h>
int main()
{
	int a[10],i,x,t,j;
	 for(i=0;i<9;i++)//输入9个数
	 {
	     scanf("%d",&a[i]);
	 }
	 scanf("%d",&x);//输入要插入的数
	for(i=0;i<10;i++)//数组的遍历
	{
	   int flag=0;//遍历停止标志,0则继续,1则退出当前遍历
	    if(a[i]>=x)//原数据是正序的数组,所以当数组里面第一个大于等于该数,则该位置就是插入的位置
	    {
	        t=i;//找到要插入的下标,提取出来
	        flag=1;
	        for(j=9;j>=i;j--)//使原本插入点及后面每一位数都后移一位下标
	        {
	            a[j]=a[j-1];
	            
	        }
	        a[t]=x;//插入点下标赋值x
	    }
	    if(flag==1)//
	    break;
	    
	}
	for(i=0;i<10;i++)//遍历输出
	{
	    printf("%d\n",a[i]);
	}
	return 0;
}

欢迎批评指正交流!!!


点赞(0)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论