柯南的滑板


私信TA

用户名:uq_45459957643

访问量:29800

签 名:

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 人评分

  评论区

这个运行是不是有点问题?我在vs2019都能运行在这上面的编译器却不行。
2024-05-26 15:25:46
int main()
{
	int sz = 0;
	int a = 0;
	int arr[] = { 1,7 ,8, 17, 23, 24, 59, 62, 101 };
	scanf("%d", &a);
	sz = sizeof(arr) / sizeof(arr[0]);
	for (int i = 0; i < sz; i++)
	{
		if (a < arr[i+1]&&a>arr[i])
		{
			printf("%d\n", arr[i]);
			printf("%d\n", a);
			continue;
		}
		printf("%d\n", arr[i]);
	}
	return 0;
}
2023-09-08 21:31:39
我自己做的倒序,乱序都能用
#include<stdio.h>

int main()
{
	int n[10],i;
	int tmp=0,z=0,x=0,g=0;
	for(i=0;i<9;i++)
	{
		scanf("%d",&n[i]);
	}
	scanf("%d",&n[9]);
	for(z=0;z<=9;z++)
	{
		for(x=0;x<=9;x++)
		{
		if(n[x]>n[x+1])
		{
			tmp=n[x];
			n[x]=n[x+1];
			n[x+1]=tmp;
		}
		}
	}
	if(n[0]<n[9])
	for(g=0;g<10;g++)	
	{printf("%d\n",n[g]);}
	else
	for(g=10;g<0;g--)	
	{printf("%d\n",n[g]);}
	return 0;
}
2023-09-02 23:05:10
为啥我的错了
#include <iostream>
#include<vector>
using namespace std;

int main()
{
	vector <int> str;
	int number;
	while (1) {
		cin >> number;
		str.push_back(number);
		if (cin.get() == '\n')
			break;
	}
	int len = str.size();
	for (int i = 0; i < len; i++) {
		cout << str[i];
	}
	cout << '\n';
	int m;
	cin >> m;
	str.push_back(m);
	len = str.size();
	for (int i = 0; i < len-1; i++) {
		int n;
		if (str[i] >= m) {
		    n = str[i];
			str[i] = m;
			str[i+1] = n;
		}
	}
	for (int i = 0; i < len; i++) {
		cout << str[i];
	}
	return 0;
}
2023-07-20 08:28:09
#include<stdio.h>
int main()
{
	int a[9];
	for(int i=0;i<9;i++)
	{
	    scanf("%d",&a[i]);
	}
	int b[10];
	int n;
	scanf("%d",&n);
	for(int i=0;i<9;i++)
	{
	    if(a[i]<n)
	    {
	        b[i]=a[i];
	    }
	    if(a[i]>n)
	    {
	        b[i]=n;
	        b[i+1]=a[i];
	    }
	}
	for(int i=0;i<10;i++)
	{
	    printf("%d ",b[i]);
	}
	return 0;
}
想请问一下为什么这样子写,插入的50的后面出现了好几个相同的数字50呢?
2023-04-10 11:41:31
#include<stdio.h>
int main(){
    int arr[10];
    for (int i = 0; i < 10; i++)
    {
        scanf("%d", &arr[i]);
    }
     for (int i =0;i<10-1;i++){
            for (int j = 0;j<10-i-1;j++){
                if (arr[j+1] < arr[j]){
                    int tmp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = tmp;
                }
            }
        }
        for (int k = 0; k < 10; k++)
        {
            printf("%d ", *(arr + k));
        }
    return 0;
}
2023-03-17 13:49:06
# include <stdio.h>
int main() {
	int i, n, a[9];
	for (i = 0; i < 9; i++) {
		scanf("%d", &a[i]);
	}
	scanf("%d", &n);
	for (i = 0; i < 9; i++) {
		if (a[i] <= n)
			printf("%d\n", a[i]);
		else {
			printf("%d\n", n);
			for (; i < 9; i++)
				printf("%d\n", a[i]);
		}
	}
	return 0;
}
2023-01-13 09:16:07
思路很乱但终于整出来了
#include<stdio.h>
int main()
{
	int arr[9];
	int i = 0;
	int x = 0;
	while (i < 9)
	{
		scanf("%d", &arr[i]);
		i++;
	}
	arr[9] = arr[8];
	scanf("%d", &x);
	for (i=1;i<9;i++)
	{
		if (x < arr[i]&&x>arr[i-1])
		{
			int h = 8;
			while (h > i)
			{
				arr[h] = arr[h - 1];
				h--;
			}
			arr[i] = x;
		}
	}
	for (i = 0; i < 10; i++)
	{
		printf("%d\n", arr[i]);
	}
	return 0;
}
2023-01-09 14:02:16