人生理想:少劳多得 2022-11-11 19:21 采纳率: 94.7%
浏览 62
已结题

c语言数组的排序与插入数据问题

想用c语言,先依次定义一组数组,之后在将数组排列,然后向数组中插入一个数据排序依旧成立
代码可以跑,排序也可以正常运行,但无法正常插入数据,代码如下

#include<stdio.h>
#define s 10
int main()
{
    int sz[s+1], num;
    
    for (int i = 0; i < s; i++) {
        scanf_s("%d", &sz[i]);
        printf("sz[%d]=%d\n",i,sz[i]);
    }
    
    printf("输出经排序后所得的数组\n");
    for (int r = 0; r < s; r++) {
        for (int e = 0; e < s - r - 1; e++) {
            if (sz[e] > sz[e + 1]) {
                int n = sz[e];
                sz[e] = sz[e + 1];
                sz[e + 1] = n;
            }
        }
    }

    for (int i = 0; i < s; i++)
        printf("%d\n", sz[i]);

    printf("请输入你希望加入的值:");
    scanf_s("%d", &num);
    for (int j = 0; j < s; j++) {
        if (num >= sz[j]) {
            for (int i = s; i >= j; i--) {
                sz[i] = sz[i - 1];
            }
        }
    }

    for (int x = 0; x < s+1; x++) {
        printf("%d\n", sz[x]);
    }
    return 0;
}

希望可以指出错误,改正后希望可以帮忙优化一下(大一新生,学c语言一个月,希望不要太难)

  • 写回答

3条回答 默认 最新

  • jwchu 2022-11-11 19:44
    关注
    
    int main()
    {
        int s = 10;
        int sz[10 + 1], num;
    
        for (int i = 0; i < s; i++) {
            scanf_s("%d", &sz[i]);
            printf("sz[%d]=%d\n", i, sz[i]);
        }
    
        printf("输出经排序后所得的数组\n");
        for (int r = 0; r < s; r++) {
            for (int e = 0; e < s - r - 1; e++) {
                if (sz[e] > sz[e + 1]) {
                    int n = sz[e];
                    sz[e] = sz[e + 1];
                    sz[e + 1] = n;
                }
            }
        }
    
        for (int i = 0; i < s; i++)
            printf("%d\n", sz[i]);
    
        printf("请输入你希望加入的值:");
        scanf_s("%d", &num);
    
        for (int j = 0; j < s; j++) {
            if (num < sz[j]) {
                int i = s;
                for (; i > j; i--) {
                    sz[i] = sz[i - 1];
                }
                sz[i] = num;
                break;
            }
        }
    
        for (int x = 0; x < s + 1; x++) {
            printf("%d\n", sz[x]);
        }
        return 0;
    }
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 11月19日
  • 已采纳回答 11月11日
  • 创建了问题 11月11日

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度