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

C++ 10×10二维数组构建问题:首列数字10显示为冒号

解决C++二维数组首列10显示为冒号的问题

问题原因

原代码使用char类型存储首列数字,单个char仅能容纳一个ASCII字符。当循环到i=10时,'0' + 10计算结果为ASCII码58,对应字符':',这就是显示异常的根源。

修复方案

方案1:修改输出逻辑(最小改动)

保持原有char数组结构,仅在输出时单独处理数字10,避免用char存储两位数字:

#include <iostream>
using namespace std;

int main() {
    char matrix[11][11];
    matrix[0][0] = ' ';
    
    // 填充首行A-J
    for(int i=1; i<=10; i++) {
        matrix[0][i] = 'A' + i - 1;
    }
    
    // 填充首列1-9(10在输出时单独处理)
    for(int i=1; i<=9; i++) {
        matrix[i][0] = '0' + i;
    }
    
    // 填充其余区域为'.'
    for(int i=1; i<=10; i++) {
        for(int j=1; j<=10; j++) {
            matrix[i][j] = '.';
        }
    }
    
    // 输出矩阵,单独处理第10行第0列的10
    for(int i=0; i<=10; i++) {
        for(int j=0; j<=10; j++) {
            if(i == 10 && j == 0) {
                cout << "10";
            } else {
                cout << matrix[i][j];
            }
            cout << " ";
        }
        cout << endl;
    }
    
    return 0;
}

方案2:改用字符串二维数组(更直观)

将数组类型改为string,直接存储两位数字10,无需特殊处理输出逻辑:

#include <iostream>
#include <string>
using namespace std;

int main() {
    string matrix[11][11];
    matrix[0][0] = " ";
    
    // 填充首行A-J
    for(int i=1; i<=10; i++) {
        matrix[0][i] = string(1, 'A' + i - 1);
    }
    
    // 填充首列1-10,直接转为字符串存储
    for(int i=1; i<=10; i++) {
        matrix[i][0] = to_string(i);
    }
    
    // 填充其余区域为'.'
    for(int i=1; i<=10; i++) {
        for(int j=1; j<=10; j++) {
            matrix[i][j] = ".";
        }
    }
    
    // 直接输出矩阵
    for(int i=0; i<=10; i++) {
        for(int j=0; j<=10; j++) {
            cout << matrix[i][j] << " ";
        }
        cout << endl;
    }
    
    return 0;
}

方案对比

  • 方案1:改动量极小,适合需要保留原有char数组结构的场景,仅通过输出逻辑规避char的存储限制。
  • 方案2:代码逻辑更清晰,扩展性更强,后续如果需要存储更长的文本也无需修改核心逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 21:10:33