鱼生富贵 2022-02-06 15:05 采纳率: 97.4%
浏览 81
已结题

用起泡法对输入的十个字符按由大到小顺序排列。


#include<stdio.h>
#include<string.h>
#define N 11
int main()
{
    void sort(char str[]);
    char str[N];
    int i, flag = 1;
    while (flag)
    {
        printf("input string:");
        gets_s(str);
        if (strlen(str) > N-1)
            printf("string too long,input again!\n");
        else
            flag = 0;
    }
    sort(str);
    printf("string sorted:");
    for (i = 0; i < N; i++)
        printf("%c", str[i]);
    printf("\n");
    return 0;
}
void sort(char str[])
{
    int i, j;
    char t;
    for(i=0;i<N&&str[i]!='\0';i++)
        for (j = i + 1; j < N && str[j] != '\0'; j++)
            if (str[j] > str[j + 1])
            {
                t = str[j];
                str[j] = str[j + 1];
                str[j + 1] = t;
            }
}

img


为什么?

  • 写回答

2条回答 默认 最新

  • a5156520 2022-02-06 15:23
    关注

    根据你的代码,应该是数组越界了吧,当J=N-1,时,J+1=N,数组越界,另外排序那里的逻辑有点问题,修改了一下,如下,供参考:

    
     
    #include<stdio.h>
    #include<string.h>
    #define N 11
    int main()
    {
        void sort(char str[]);
        char str[N];
        int i, flag = 1;
        while (flag)
        {
            printf("input string:");
            gets(str);
            if (strlen(str) > N-1)
                printf("string too long,input again!\n");
            else
                flag = 0;
        }
        sort(str);
        printf("string sorted:");
        for (i = 0; i < N; i++)
            printf("%c", str[i]);
        printf("\n");
        return 0;
    }
    void sort(char str[])
    {
        int i, j;
        char t;
        for(i=0;i<N&&str[i]!='\0';i++)
            for (j = i + 1; j < N && str[j] != '\0'; j++)
                if (str[i] > str[j])   //主要修改这段代码
                {
                    t = str[j];
                    str[j] = str[i];
                    str[i] = t;
                }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 2月14日
  • 已采纳回答 2月6日
  • 修改了问题 2月6日
  • 创建了问题 2月6日

悬赏问题

  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测