柯南的滑板


私信TA

用户名:uq_45459957643

访问量:26975

签 名:

hello world

等  级
排  名 568
经  验 4163
参赛次数 0
文章发表 7
年  龄 18
在职情况 学生
学  校 河北工业大学
专  业

  自我简介:

;

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

首先是输入只含有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分

146 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区

#include<stdio.h>
int main()
{
    int n;
    int array[10];
    for(int i=0;i<9;i++)
    {
        scanf("%d",&array[i]);
    }
    scanf("%d",&n);
    for(int i=0;i<9;i++)
    {
        if(array[i]>n)
        {
            for(int j=9;j>i;j--)
            {
                array[j]=array[j-1];
            }
            array[i]=array[i+1];
            array[i]=n;
            break;
        }
    }
    for(int i=0;i<10;i++)
    {
        printf("%d\n",array[i]);
    }
}
2022-11-29 19:31:15
先给n找到合适的位置放入,依次遍历,把最大的值留给n,最后再把n放在数组末尾
#include<stdio.h>
int main()
{
    int a[10],i,n,tmp;
    for(i=0;i<9;i++){
    	scanf("%d",&a[i]);
	}
	//printf("\n");
	scanf("%d",&n);
	for(i=0;i<9;i++){
		if(n<a[i]){//n是小数,把a[i]换成n 
			tmp=a[i];//把n放置进去了 
			a[i]=n;
			n=tmp;
			}
		}//n变为最大数 ,但n此时还在数组之外 
		a[9]=n;//第十个数字n赋值进去 
		for(i=0;i<10;i++){
		  printf("%d\n",a[i]);
	}
    return 0;
}
2022-11-23 17:47:57
#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);
    if(x<=a[0])
    	t=0;
    else if(x>=a[8])
    	t=9;
    else
    {
		for (i=0;i<9;i++)
	    {
	        if(x>=a[i] && x<=a[i+1])
	        {  
	            t=i+1;
	            break;
	        }
	    }
	}
    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;
}
2022-10-02 00:27:59
假如插入的那个数比原始数列的第一个数都要小,或者比第九个数都要大,这两种情况该怎么判断呢?
2022-08-28 19:53:54
#include<stdio.h>
int main(void)
{
	int a[10],i,j,n;
	for(i=0;i<9;i++)
	scanf("%d",&a[i]);
	scanf("%d",&n);
	for(i=0;i<9;i++)
	{
		if(a[i]>n&&n>=a[i-1])
		j=i;
	}
	for(i=8;i>=j;i--)
	a[i+1]=a[i];
	a[j]=n;
	for(i=0;i<10;i++)
	printf("%d ",a[i]);
	return 0;
}
2022-08-24 19:59:56
#include<stdio.h>
#include<math.h>
int main()
{
   int a[10],b;
   int i,j;
   for(i=0;i<9;i++){
   	scanf("%d",a+i);
   }
  scanf("%d",&b);
  if(b<=a[0]){
  	for(i=9;i>=1;i--){
	  	a[i]=a[i-1];
	  }
	  a[0]=b;
  }
  else if(a[0]<b&&b<a[8]){
  	for(i=0;i<=7;i++){
	  	if(a[i]<=b&&b<=a[i+1]){
		  	for(j=8;j>=i+1;j--){
			  	a[j+1]=a[j];
			  }
			  a[i+1]=b;break;
			  
		  }
	  }	
  }
  else {
  	a[8]=b;
  	
  }
  
  for(i=0;i<=9;i++){
  	printf("%d\n",a[i]);
  }
	  
}
2022-06-27 07:08:12
#include<stdio.h>
int main()
{
	int a[12], b;
	scanf("%d %d %d %d %d %d %d %d %d", &a[1], &a[2], &a[3], &a[4], &a[5], &a[6], &a[7], &a[8], &a[9]);
	scanf("%d", &b);
	for (int i = 1;i <= 9;i++)
	{
		printf("%d\n", a[i]);//当未满足插入条件时依次输出值
		if (b >= a[i] && b < a[i + 1])//当满足插入的条件时
		{
			printf("%d\n", b);//输出插入的值
			for (int j = i + 1;j <= 9;j++)//从i+1开始,将插入位置后面的数据输出
			{
				printf("%d\n", a[j]);
			}
			return 0;//结束
		}

	}

	return 0;
}
2022-06-26 12:23:48
采用与数组内部数据一一比较,将较大的数替换输入的数据,然后以此类推,最大的数复制给数组最后一位,最后进行输出。
#include<stdio.h>
int main()
{
	int N[10],i,t,a;
	for(i=0;i<9;i++)
	{
		scanf("%d",&N[i]);
	}
	scanf("%d",&t);
	for(i=0;i<9;i++)
	{
		if(t>N[i])
		{
			continue;
		}
		else
		{
			a=N[i];
			N[i]=t;
			t=a;
		}
	}
	N[9]=t;
	for(i=0;i<10;i++)
	{
		printf("%d\n",N[i]);
	}
	return 0;
 }
2022-05-27 17:30:59