You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言:使用for循环实现A-Z字符串数组并逆序Z-A的代码求助

问题分析与代码修正

你的代码问题出在逆序部分的逻辑完全错误:第一个循环结束后,left的值是26(对应数组索引26),此时数组的26到51位是malloc分配的未初始化内存(垃圾值)。你试图通过交换left和right位置的值来实现逆序,但操作的是未赋值的内存区域,自然输出乱码,而且这也不符合“逆序填充Z到A”的需求。

修正后的代码

char *problem58()
{
    char *result = malloc(52 * sizeof(char)); // C中malloc无需强制类型转换
    int idx = 0;

    // 填充并打印A到Z
    for (char c = 'A'; c <= 'Z'; c++)
    {
        result[idx] = c;
        printf("%c", c);
        idx++;
    }

    // 填充并打印Z到A
    for (char c = 'Z'; c >= 'A'; c--)
    {
        result[idx] = c;
        printf("%c", c);
        idx++;
    }

    // 若后续需将result作为字符串使用,需额外分配1字节存储结束符
    // char *result = malloc(53 * sizeof(char));
    // result[52] = '\0';

    return result;
}

关键修正点

  • 去掉了冗余的left、right、temp变量,用idx跟踪当前填充位置,逻辑更清晰。
  • 逆序部分直接从'Z'递减到'A',将字符依次填充到数组的后半段(索引26到51),同时完成打印,完全符合需求。
  • 原代码的交换逻辑是错误的,因为后半段数组未初始化,交换只会引入垃圾值,正确做法是直接逆序遍历字符填充。

运行修正后的代码,终端会输出:ABCDEFGHIJKLMNOPQRSTUVWXYZYXWVUTSRQPONMLKJIHGFEDCBA

内容的提问来源于stack exchange,提问作者Dinosour

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 17:52:54