Staceex 2023-10-27 21:00 采纳率: 87.5%
浏览 2
已结题

一个c语言问题😢哪位帮我康康吧

img

img

img

我不太知道怎么拼音对应数字进行输出
下面两张是我的代码 麻烦帮我康康是哪里不对
万分感谢

  • 写回答

2条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-10-29 01:15
    关注

    【以下回答由 GPT 生成】

    问题出在代码1和代码2中对于sizeof(pinyin)的使用上。在这里,sizeof(pinyin)返回的结果是数组pinyin的总字节数,而不是数组的长度。因此,在代码1和代码2中的for循环中,遍历的次数超过了数组的实际长度,导致访问了不属于数组的内存空间,从而输出了错误的结果或者引发了未定义的行为。

    要解决这个问题,可以使用另外一种方式来获取数组的长度,即使用sizeof(pinyin) / sizeof(pinyin[0])。这样可以确保for循环只遍历数组中的有效元素,并避免访问无效的内存空间。

    以下是修改后的代码1和代码2:

    // 代码1
    
    #include <stdio.h>
    
    int main() {
        char pinyin[10] = {'l', 'i', 'u', ' ', 'j', 'i', 'u', 'l', 'i', 'u'};
        int number[10] = {6, 7, 8, 9, 1, 3, 7, 6, 7, 8};
        int i;
        int length = sizeof(pinyin) / sizeof(pinyin[0]);
    
        for (i = 0; i < length; i++) {
            printf("%c-%d\n", pinyin[i], number[i]);
        }
    
        return 0;
    }
    
    // 代码2
    
    #include <stdio.h>
    
    int main() {
        char pinyin[] = "liu jiuliu";
        int number[] = {6, 7, 8, 9, 1, 3, 7, 6, 7, 8};
        int i;
        int length = sizeof(pinyin) / sizeof(pinyin[0]);
    
        for (i = 0; i < length; i++) {
            printf("%c-%d\n", pinyin[i], number[i]);
        }
    
        return 0;
    }
    


    【相关推荐】



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 4月28日
  • 已采纳回答 4月20日
  • 创建了问题 10月27日