解题思路:

首先是输入只含有9个元素的数组a[10],用for循环依次输入。接着输入插入的数字m,将m与数组元素比较。

1、当m<=a[0]时,记录t=0;

2、当m>=a[8]时,记录9;

3、当a[i]<=x<=a[i+1]时,记录x应该插入的位置t=i+1。

但是插入m之前要把元素往后移位,从后往前直到位置t,最后把m赋值给a[t],用for循环输出排好的a[10]。
注意事项:1、找插入位置时注意break退出遍历循环,不然就会出错误;

                2、移位从后往前,不然从前往后会使数据丢失。

参考代码:

#include<stdio.h>
int main()
{
    int a[10],i,m,t;
    for(i=0;i<9;i++)
    {
	scanf("%d",&a[i]);
    }
a[9]=0;
    scanf("%d",&m);
    if(m<=a[0])
        t=0;
    if(m>=a[8])
        t=9;
    for(i=0;i<9;i++)
    {
        if(m>=a[i]&&m<=a[i+1])
        {
            t=i+1;
            break;
        }
    }
    for(i=9;i>t;i--)
    {
        a[i]=a[i-1];
    }
    a[t]=m;
    for(i=0;i<10;i++)
    {
        printf("%d",a[i]);
        printf("\n");
    }
	return 0;
}


点赞(1)
 

0.0分

58 人评分

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

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

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

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

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

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

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

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

评论列表 共有 32 条评论

黄小橘 1年前 回复TA
#include <stdio.h> 
int main() 
{ 
	int arr[10]={1,2,3,6,8,14,17,25,29};
	int a,i,j,temp;
	scanf("%d",&arr[9]);
	for(i=0;i<9;i++)
	{
		for(j=i+1;j<10;j++)
		{
			if(arr[i]>arr[j])
			{
				temp=arr[i];
				arr[i]=arr[j];
				arr[j]=temp;	
			}
		}
	}
	for(i=0;i<10;i++)
	{
		printf("%d ",arr[i]);
	}
	return 0; 
}
1年前 回复TA
@秋 @dotcpp0699211 好的感谢
subtle 1年前 回复TA
@秋 不能在一开始定义十个元素的数组然后输入九个元素,最后那个元素会和其他元素一样被比较大小,会出错
1年前 回复TA
为什么显示错误?有没有大佬指点一下
#include <stdio.h>
int main()
{
	int arr[10] = { 1,12,13,16,21,25,66,88,100 };
	
	scanf("%d", &arr[9]);
	for (int i=0;i<10;i++)
		for (int j = 0; j < 10 - 1 - i; j++)
		{
			if (arr[j] > arr[j + 1])
			{
				int tep = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = tep;

			}
			
	    }
	for (int j = 0; j < 10; j++)
			{
				printf("%d ", arr[j]);
				printf("\n");
			}
	
}
黄佳豪070 1年前 回复TA
@黄小橘 #include<stdio.h> int main() {     int arr[9]={1,7,8,17,23,24,59,62,101};     int num;     int i,pos;     scanf("%d",&num);     for(i=0;i<9;i++)     {         if(arr[i]>num)         {             pos=i;             break;         }     }     for(i=9;i>pos;i--)     {         arr[i]=arr[i-1];     }     arr[pos]=num;     for(i=0;i<10;i++)     {         printf("%d",arr[i]);     }     printf("
");     return 0; }
23计科2班047周雯浩 1年前 回复TA
@荆棘鸟的呼唤 int main()中为什么要加void?
黄小橘 1年前 回复TA
#include<stdio.h>
int main() 
{
	int save(int a[]);
    int a[10]={1,6,15,24,35,45,49,51,59};       
    int i;
    scanf("%d",&a[9]);
    save(a);
    for(i=0;i<10;i++)
    {
    	printf("%d",a[i]);
    }
    return 0;
}

int save(int a[])
{
	int i,j,temp;
	for(i=0;i<9;i++)
	    for(j=i+1;j<10;j++)
	    {
	    	if(a[i]>a[j])
	    	{
	    		temp=a[i];
	    		a[i]=a[j];
	    		a[j]=temp;
	    	}
	    }
	return a;
}
jyj 1年前 回复TA
#include<stdio.h>
int main()
{
    int a[9],b,k;
    for(int i=0;i<9;i++)
    scanf("%d",&a[i]);
    scanf("%d",&b);
    for(int i=0;i<9;i++)
    {
        if(b>a[i])
            printf("%d\n",a[i]);
        if(b<a[i])
        {
            k=i;
            printf("%d\n",b);
            for(i=k;i<9;i++)
                printf("%d\n",a[i]);
            break;
        }
    }
    return 0;
}
浮世清欢梦珂 1年前 回复TA
#include<stdio.h>
int main()
{
    int i,j,x,tmp,a[10]={0};
    for(i=0;i<9;i++)
    {
        scanf("%d",&a[i]);
    }
    scanf("%d",&x);
    a[9]=x;
    for(i=0;i<10;i++)
    {
        for(j=0;j<10-i-1;j++)
        {
            if(a[j]>a[j+1])
            {
                tmp=a[j];
                a[j]=a[j+1];
                a[j+1]=tmp;
            }
        }
    }
    for(i=0;i<10;i++)
    {
        printf("%d\n",a[i]);
    }
    return 0;
}
荆棘鸟的呼唤 1年前 回复TA
@荆棘鸟的呼唤 @dotcpp0698483 没有啊