柯南的滑板


私信TA

用户名:uq_45459957643

访问量:29792

签 名:

hello world

等  级
排  名 525
经  验 4486
参赛次数 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分

151 人评分

  评论区

采用与数组内部数据一一比较,将较大的数替换输入的数据,然后以此类推,最大的数复制给数组最后一位,最后进行输出。
#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
#include<stdio.h>
int main()
{
    int a[9],b,c;
    for(b=0;b<9;b++)
    { scanf("%d ",&a[b]);}
    scanf("%d",&c);
    for(b=0;b<9;b++){
        if(b==0&&c<a[b]){
            printf("%d\n",c);
            while(b<9)
            {printf("%d\n",a[b]);
                b++;}
            break;}
        else if(b==8&&c>a[b])
       {printf("%d\n",c);printf("%d\n",a[b]);break;}
        else{
            if(c<a[b])
            {printf("%d\n",c);
                while(b<9){
                printf("%d\n",a[b]);
                    b++;}
                break;}
            printf("%d\n",a[b]);}}
}
2022-03-10 11:01:31
答主没有考虑到插入的数比所有的数都大的情况
2022-02-06 19:28:36
#include<stdio.h>
int main()
{
   int a[10],i,j,t,min;
   //printf("请输入9个正序排列的整数\n");
   for(i=0;i<9;i++)
   {
       scanf("%d",&a[i]);
   }
   //printf("请输入1个整数\n");
   for(i=9;i<10;i++)
   {
   scanf("%d",&a[i]);
   }
   for(i=0;i<10;i++)
   {
       min=a[i];
       for(j=i+1;j<10;j++)
       {
           if(a[j]<min)
           {
               t=min;
               min=a[j];
               a[j]=t;
           }
       }
       printf("%d\n",min);
   }
    return 0;
}
2022-01-28 21:04:20
我写的,改了几次,现在好了
#include <stdio.h>

int main() {
	int a[10], i, b, k, j;
	for (i = 0; i < 9; i++)
		scanf("%d", &a[i]);
	scanf("%d", &b);
	for (i = 0; i < 9; i++)
		if (b > a[i] && b < a[i + 1]) {
			k = i + 1;
			break;
		}

	for (j = 9; i < j; j--)
		a[j] = a[j - 1];
	a[k] = b;
	for (i = 0; i < 10; i++)
		printf("%d\n", a[i]);
	return 0;
}
2022-01-11 14:26:30
怎么说呢,(题目也没说清楚),如果插入的数比所有数都大,即插入到a[10](或者插入的数比所有数都小,即应插入到a[0]),则这串代码不可以,没有包括所有可能。
#include<stdio.h>
int main()
{
	int a[10],n,i,t,j=0;
	for(i=0;i<9;i++)
	{
		scanf("%d",&a[i]);
	}
	scanf("%d",&n);
	if(n<a[0])
	{
		j=0;
	}else
	{
		for(i=0;i<9;i++)
		{
			if(n>a[i]&&n<a[i+1])
			{
				break;
			}
		}
		j=i+1;
	}
	if(j==10)
		j=9;
	for(i=9;i>j;i--)
	{
		a[i]=a[i-1];
	}
	a[j]=n;
	for(i=0;i<10;i++)
	{
		printf("%d\n",a[i]);
	}
}(代码较长,因为是初学,勿喷,谢谢)
2022-01-01 17:51:20
#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;
}
2021-12-07 22:34:35
哪位大佬帮我看看我这样写为啥不对,有什么知识点掌握不对吗?谢谢啦
#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;
}
2021-12-05 16:50:10