a327904410 发表于 2021-11-9 13:13:56

求解决一个问题

目前困扰到我的问题是 多行,表示插入的X(不确定有几个,最多100个X), 不知道怎么来写不确定输入个数字的情况下让代码正常运行。大神就写这个代码行了,感谢

问题描述
  程序开始请你给一组待排序数据进行小到大排序。接下来程序会输入多个X请你将X插入后的数据重新进行小到大的序
输入格式
  第一行N(N<=20000)

  第二行N个无序数据(30000以内)

  多行,表示插入的X(不确定有几个,最多100个X)
输出格式
  每个X插入后相应的小到大序列
样例输入
一个满足题目要求的输入范例。
例:

3

10 30 26

5

18
样例输出
与上面的样例输入对应的输出。
5 10 26 30

5 10 18 26 30

jackz007 发表于 2021-11-9 15:47:48

#include <stdio.h>

int main(void)
{
      int d , i , j , k , n , t               ;
      scanf("%d" , & n)                              ;
      for(i = 0 ; i < n ; i ++) scanf("%d" , & d) ;
      for(i = 0 ; i < n - 1 ; i ++) {
                for(j = i + 1 ; j && d < d ; j --) {
                        t = d                   ;
                        d = d                ;
                        d = t                     ;
                }
      }
      for(;;) {
                if(scanf("%d" , & t) == 1) {                     
                        for(i = 0 ; i < n && d < t ; i ++)                           ;
                        if(i < n) for(k = 0 ; k < n - i ; k ++) d = d ;
                        d = t                                                      ;
                        n ++                                                            ;
                } else {
                        break                                                         ;
                }
      }
      for(i = 0 ; i < n ; i ++) {
                if(i) printf(" ")                      ;
                printf("%d" , d)                  ;
      }
      printf("\n")                                 ;
}
      编译、运行实况:
D:\0002.Exercise\C>g++ -o x x.c

D:\0002.Exercise\C>x
3
10 30 26
5
18
a
5 10 18 26 30

D:\0002.Exercise\C>

a327904410 发表于 2021-11-10 15:05:45

jackz007 发表于 2021-11-9 15:47
编译、运行实况:

大佬,我在你的代码基础上修改了一下,我是把数据存放到数组里,再对每个插入数字进行排序并输出,也就是插入一个输出一行,插入多个就输出多行。不知道我这个为什么只能输出一行。

#include<stdio.h>
#define N 20001
#define M 101

int num, ins;
int main() {
        int n, i, j;
        scanf("%d", &n);
        for (i = 0; i < n; i++) {
                scanf("%d", &num);
        }
        for (i = 0; i < n; i++) {
                for (j = 0; j < n - 1 - i; j++) {
                        if (num > num) {      
                                int temp = num;      
                                num = num;
                                num = temp;
                        }       
                }
        }

        int m;
        for (i = 0;; i++) {    // 存放数字
                if (scanf("%d", &m) == 1)
                        ins = m;
                else
                        break;
        }
       
        int k, len = i;
        for (i = 0; i <= len; i++) {
                for (j = 0; ins > num && j < n; j++);   // 找到可插入的位置
                if (j < n)
                        for (k = n - 1; k != j - 1; k--) {    // num开始的数字后移
                                num = num;
                        }
                num = ins;
                n++;
                for (i = 0; i < n; i++) {
                        printf("%d ", num);
                }
                printf("\n");
        }

        return 0;
}

a327904410 发表于 2021-11-10 15:06:51

jackz007 发表于 2021-11-9 15:47
编译、运行实况:

比如这样
3
10 30 26
5
18
a
输出
5 10 26 30
5 10 18 26 30

a327904410 发表于 2021-11-10 15:08:36

jackz007 发表于 2021-11-9 15:47
编译、运行实况:

知道问题了,谢谢大佬
页: [1]
查看完整版本: 求解决一个问题