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

C语言如何用单个switch语句处理多个变量完成字母解码任务

简易字母解码器优化实现方案

复用同一switch的实现方法

你可以将10个输入变量存入临时数组后循环遍历,所有元素共用同一个switch逻辑,无需编写10份重复的switch代码,示例如下:

#include <stdio.h>

int main() {
    // 保留你已编写的输入部分代码
    int c1, c2, c3, c4, c5, c6, c7, c8, c9, c10;
    scanf("%d %d %d %d %d %d %d %d %d %d", &c1, &c2, &c3, &c4, &c5, &c6, &c7, &c8, &c9, &c10);
    
    // 将输入值存入数组统一遍历处理
    int num_list[10] = {c1, c2, c3, c4, c5, c6, c7, c8, c9, c10};
    char result[11] = {0}; // 存储转换后的字母,最后一位为字符串结束符'\0'

    for (int i = 0; i < 10; i++) {
        // 所有数字共用这一个switch逻辑
        switch (num_list[i]) {
            case 1: result[i] = 'A'; break;
            case 2: result[i] = 'B'; break;
            case 3: result[i] = 'C'; break;
            // 按规则补全case 4到case 25即可
            case 26: result[i] = 'Z'; break;
            default: result[i] = '?'; // 处理1-26范围外的非法输入
        }
    }

    printf("解码结果:%s", result);
    return 0;
}

如果你不想保留10个单独的变量定义,可以直接把输入部分改成数组输入,代码会更简洁:

int num_list[10];
for (int i = 0; i < 10; i++) {
    scanf("%d", &num_list[i]);
}

更高效的无switch实现(推荐)

由于大写字母的ASCII码是连续排列的,'A'的ASCII值为65,数字n对应的字母可以直接通过'A' + n - 1计算得到,无需编写26个case分支,替换循环内的switch逻辑即可:

for (int i = 0; i < 10; i++) {
    if (num_list[i] >= 1 && num_list[i] <= 26) {
        result[i] = 'A' + num_list[i] - 1;
    } else {
        result[i] = '?';
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 18:06:03