解题思路:这是常规思路,类似按身高排队一样,已经排好的队,你想插进去,找到比你矮的和比你高的前后两个人,之后的人往后退一步就行了。

首先是输入只含有9个元素的数组a[10],用for循环依次输入。接着输入插入的数字x,将x与数组元素比较,当a[i]<=x<=a[i+1]时,记录x应该插入的位置t=i+1。但是插入x之前要把元素往后移位,从后往前直到位置t,最后把x赋值给a[t],输出排好的a[10]。

注意事项:注意移位从后往前,不然从前往后会使数据丢失。找插入位置时注意break退出遍历循环,不然肯定是最后面。

参考代码:

#include <stdio.h>

int main()
{
    int a[10];
	int i=0;
	int t;
	for(i=0;i<9;i++)
	{
		scanf("%d",&a[i]);
	}
	a[9]=0;
	int x;
	scanf("%d",&x);
	for (i=0;i<10;i++)
	{
		if(x>=a[i] && x<=a[i+1])
		{
			t=i+1;
			break;
		}
	}
//	printf("%d\n",t);
	for (i=9;i>t;i--)
	{
		a[i]=a[i-1];
	}
	a[t]=x;

	for (i=0;i<10;i++)
	{
		printf("%d\n",a[i]);
	}
    return 0;
}


点赞(0)
 

0.0分

101 人评分

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

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

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

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

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

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

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

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

评论列表 共有 66 条评论

花开回落 3年前 回复TA
#include<stdio.h>
int main()
{
    int a[8],c,b,mm;
    for( b=0;b<9;b++){
        scanf("%d",&a[b]);
    }
    scanf("%d",&c);
    for(int b=0;b<9;b++){
       if(c>a[b])
       {
           printf("%d\n",a[b]);
       }
       if (c<a[b])
       {
           printf("%d\n",c);
           break;
       }
    }
    for(int b=0;b<9;b++){
         if (c<a[b])
         {
              printf("%d\n",a[b]);
         }
    }
    return 0;
}
你怎么连话都说不清楚 3年前 回复TA
哪位大佬帮我看看我这样写为啥不对,有什么知识点掌握不对吗?谢谢啦
#include<stdio.h>
int main()
{
	int i,a[9],n,num,j;
	scanf("%d",&num);
	
	for(i=0;i<9;i++)
	{
		scanf("%d",&a[i]);
		
	}
	
	for(i=0;i<9;i++)
	{
		if(num>a[i]&&num<a[i+1])
		{
			for(j=0;j<=i;j++)
				printf("%d ",a[j]);
			printf("%d ",num);
			for(j=i+1;j<n;j++)
				printf("%d ",a[j]);
			
		}
	
	
	}
	return 0;
}
一饮弱水三千 3年前 回复TA
#include <stdio.h>

void show_arr(const int *pt);
void sort(int *arr);
void clau(int *pt, int n);

int main(void) {
	int arr_length;
	int arr[9] = {1, 7, 8, 17, 23, 24, 59, 62, 101};

	sort(arr);
	show_arr(arr);
	putchar('\n');
	arr_length = sizeof(arr) / sizeof(int);
	printf("%5d", arr_length);
	clau(arr, arr_length);
	return 0;
}

void show_arr(const int *pt) {
	int i;
	for (i = 0; i < 10; i++) {
		printf("%5d", pt[i]);
	}
}

void clau(int *pt, int n) {
	int x;
	puts("Please enter a numbers:");
	scanf("%d", &x);
	*(pt + 1) = x;

	sort(pt);
	show_arr(pt);
}

void sort(int *arr) {
	int i, j;
唐伟龙 3年前 回复TA
#include<stdio.h>
int main(){
	int a[10];
	int i;
	int n=sizeof(a)/sizeof(a[0]) ;
	for(int i=0;i<9;i++){
		scanf("%d",&a[i]);
		
	}
	int x;

	scanf("%d",&x);
	for(;x>a[i]&&i!=n;i++)
	{
		printf("%d\n",a[i]);
	}
	printf("%d\n",x);
	for(;x<a[i];i++){
		printf("%d\n",a[i]);
		
	}
	return 0;
}
答案没问题啊,为什么总说我答案错误
uq_16461827833 3年前 回复TA
#include<stdio.h>
int main()
{
	int a[9],b[10],i,j,temp=0;	
	printf("请输入9个整数:\n");
	for(i=0;i<9;i++)
		scanf("%d",&a[i]);			
	for(j=9;j>0;j--)
	{
		for(i=0;i<9;i++)
		{
			if(a[i]>a[i+1])
			{
				temp=a[i];
				a[i]=a[i+1];
				a[i+1]=temp;
			}		
		}		
	}		
	for(i=0;i<9;i++)
		printf("%d  ",a[i]);			
	printf("\n");	
	printf("请输入要插入的整数:\n");
	scanf("%d",&b[9]);	
	for(i=0;i<9;i++)
		b[i]=a[i];		
	for(j=10;j>0;j--)
	{
		for(i=0;i<10;i++)
		{
			if(b[i]>b[i+1])
			{
				temp=b[i];
				b[i]=b[i+1];
				b[i+1]=temp;
			}		
		}		
	}		
	for(i=0;i<10;i++)
		printf("%d  ",b[i]);			
	return 0;
}
大宝贝儿 3年前 回复TA
@迷失的小熊 a[9]=x;后面的 for (i=0;i<10;i++)     {         printf("%d
",a[i]);     }     return 0;是啥意思?
中南打工人 3年前 回复TA
@中南打工人 好吧,是我没读懂题,我错了
德哥636 3年前 回复TA
@中南打工人 已有一个已正序排好的9个元素的数组,今输入一个数要求按原来排序的规律将它插入数组中。
中南打工人 3年前 回复TA
@中南打工人 没有啊
懒惰的小王 3年前 回复TA
@中南打工人 题干要求是输入升序数组,不是随机输入或者降序输入