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

C++中如何对5×5矩阵指定行、列元素哈希?解决代码赋值报错问题

错误根因

你定义的matris是int[5][5]类型的二维数组,每个元素只能存储整型数值,而代码中赋值的"*"是双引号包裹的字符串常量,类型为const char*,二者类型不匹配,因此触发编译报错。

解决方案

根据你的需求可以选择以下任意一种方案修改:

方案1:修改矩阵类型为字符数组(适合需要直接存储字符的场景)

将矩阵的类型从int二维数组改为char二维数组,原有数值转为对应字符存储,替换时赋值单引号包裹的字符'*'即可,修改后的参考代码如下:

// 函数参数类型修改为char二维数组
void hashing(char matris[5][5]) {
    int x = 0;
    int y = 0;
    cin >> x >> y;
    // 可选:增加输入合法性校验,避免越界
    if (x < 1 || x > 5 || y <1 || y>5) {
        cout << "输入的行号列号超出1-5范围" << endl;
        return;
    }
    for (int i = 0;  i < 5;  i++) {
        for (int k = 0; k < 5; k++) {
            if (i == x-1 || k == y-1) {
                // 用单引号包裹的char类型值赋值
                matris[i][k] = '*';
            }
        }
    }
}

方案2:保留int矩阵类型,用特殊值做标记(适合不能修改矩阵类型的场景)

约定一个原矩阵中不会出现的特殊整型值作为*的映射标识,比如-1,替换时赋值该特殊值,后续打印/处理矩阵时,遇到该值就输出*,其余值正常输出数字即可,参考修改片段:

if ((i==x-1)|| (k==y-1)) {
    // 用约定的特殊值代替*
    matris[i][k] = -1;
}

// 后续打印矩阵的逻辑示例
for (int i = 0; i <5; i++) {
    for (int k=0; k<5; k++) {
        if (matris[i][k] == -1) {
            cout << "* ";
        } else {
            cout << matris[i][k] << " ";
        }
    }
    cout << endl;
}
额外注意事项
  • 当前代码的判断逻辑用的是||,即指定行或指定列的所有元素都会被替换,如果你需要的是仅替换指定行指定列的单个元素,把||改为&&即可。
  • 建议补充输入范围校验逻辑,避免用户输入超出1-5的数值导致数组越界访问。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 10:06:03