人生理想:少劳多得 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日

悬赏问题

  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。