2301_82247788 2024-05-25 18:26 采纳率: 50%
浏览 9

为什么我的顺序表不能储存二位数?

我的顺序表无法储存二位数只能储存个位数,一旦我从键盘输入二位数运行结果就会出现错误情况。

img

  • 写回答

3条回答 默认 最新

  • 阿里嘎多学长 2024-05-25 18:26
    关注

    以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:


    根据您提供的代码截图,我将帮助您分析可能导致顺序表无法存储两位数的问题,并给出可能的解决方案。

    1. 初始化函数 Init(Sq *L):

      • 您的初始化函数看起来是正确的。它为顺序表分配了50个整数的空间,并初始化了长度和列表大小。
    2. 输入函数 input(Sg *L, int sa):

      • 这里有一个明显的错误,函数的参数应该是 Sq *L 而不是 Sg *L。这可能是导致问题的原因之一。
      • 输入循环中,scanf 应该读取一个整数到 L->elem[i],但是您的代码中 scanf 的格式字符串不正确。它应该是 "%d", &L->elem[i] 而不是 "%d", &L->elem[i](注意 & 符号)。
    3. 快速排序函数 Quick(Sq *L, int i, int j):

      • 快速排序算法本身对于存储个位数或两位数没有限制,只要输入是有效的整数。
    4. 主函数 main():

      • main() 函数中,您使用了错误的变量名 sa 而不是 sa,这可能是一个打字错误。
      • 您在读取输入时使用了错误的格式字符串,应该是 "%d", &sa 而不是 "c""ekk"
      • 您在释放内存时使用了错误的语法,应该是 free(La->elem); 而不是 free(La->elem);
    5. 其他潜在问题:

      • 您的代码中存在一些语法错误,例如 printf("c");printf("ekk"); 应该是 printf("%c", c);printf("ekk\n");
      • 您的代码中 partition 函数的实现似乎有问题,它没有正确地交换元素,这可能会导致排序算法不工作。

    解决方案:

    • 修正 input 函数的参数名和 scanf 的格式字符串。
    • 确保 main() 函数中的输入输出逻辑正确。
    • 检查 partition 函数的实现,确保它能够正确地交换元素。

    示例修正后的代码:

    #include <stdio.h>
    #include <stdlib.h>
    
    typedef struct Sqlist {
        int *elem;
        int length;
        int listsize;
    } Sq;
    
    void Init(Sq *L) {
        L->elem = (int *)malloc(50 * sizeof(int));
        L->length = 0;
        L->listsize = 50;
    }
    
    void input(Sq *L, int sa) {
        int i = 0;
        for (; i < sa; ++i) {
            scanf("%d", &L->elem[i]);
            L->length++;
        }
    }
    
    void output(Sq *L) {
        for (int i = 0; i < L->length; i++) {
            printf("%d ", L->elem[i]);
        }
        printf("\n");
    }
    
    // 修正 partition 函数和 Quick 函数的实现
    
    int main() {
        Sq *La;
        La = (Sq *)malloc(sizeof(Sq));
        Init(La);
        int sa, c;
        printf("请输入整数个数: ");
        scanf("%d", &sa);
        input(La, sa);
        printf("\n请输入两个整数,用作快速排序的起始和结束位置: ");
        scanf("%d %d", &sa, &c);
        output(La);
        free(La->elem);
        return 0;
    }
    

    参考资料:

    • C语言数据结构教程
    • C语言标准库函数使用指南

    请注意,以上代码仅为示例,您需要根据实际情况调整。如果您需要进一步的帮助,请提供完整的代码和更详细的错误信息。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 5月25日

悬赏问题

  • ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
  • ¥50 浦育平台scratch图形化编程
  • ¥20 求这个的原理图 只要原理图
  • ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
  • ¥20 微信的店铺小程序如何修改背景图
  • ¥15 UE5.1局部变量对蓝图不可见
  • ¥15 一共有五道问题关于整数幂的运算还有房间号码 还有网络密码的解答?(语言-python)
  • ¥20 sentry如何捕获上传Android ndk 崩溃
  • ¥15 在做logistic回归模型限制性立方条图时候,不能出完整图的困难
  • ¥15 G0系列单片机HAL库中景园gc9307液晶驱动芯片无法使用硬件SPI+DMA驱动,如何解决?