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

如何通过指针实现3×4矩阵指定数值删除后末尾补0的功能?

C++ 矩阵删除元素功能实现方案

核心问题解答

  • 二维数组的指针引用:C++ 中静态二维数组int arr[3][4]的内存是连续线性排布的,直接将数组首地址强转为int*类型后,就可以按照一维数组的指针逻辑遍历所有12个元素,不需要特殊的多维指针写法,完全满足题目要求的指针实现规则。
  • 矩阵自动初始化:不需要手动逐个写入1~12的数值,通过指针遍历数组首地址开始的12个连续int空间,依次赋值即可完成初始化。

完整可运行代码

#include <iostream>
#include <iomanip>
using namespace std;
int main() {
    int arr[3][4];
    // 用指针自动初始化1~12,无需手动逐个赋值
    int* p = (int*)arr;
    for (int i = 0; i < 12; ++i) {
        *(p + i) = i + 1;
    }
    // 输出原始矩阵
    cout << "原始矩阵:" << endl;
    for (int i = 0; i < 3; ++i) {
        for (int j = 0; j < 4; ++j) {
            cout << setw(4) << arr[i][j];
        }
        cout << endl;
    }
    // 输入要删除的数值
    int number;
    cout << endl << "请输入要删除的数值:";
    cin >> number;
    // 用指针查找目标元素的位置
    int del_pos = -1;
    for (int i = 0; i < 12; ++i) {
        if (*(p + i) == number) {
            del_pos = i;
            break;
        }
    }
    if (del_pos == -1) {
        cout << "矩阵中不存在该数值" << endl;
        return 0;
    }
    // 元素前移,用指针实现
    for (int i = del_pos; i < 11; ++i) {
        *(p + i) = *(p + i + 1);
    }
    // 末尾补0
    *(p + 11) = 0;
    // 输出处理后的矩阵
    cout << endl << "处理后的矩阵:" << endl;
    for (int i = 0; i < 3; ++i) {
        for (int j = 0; j < 4; ++j) {
            cout << setw(4) << arr[i][j];
        }
        cout << endl;
    }
    return 0;
}

效果验证

输入数值6时,输出结果如下:

原始矩阵:
   1   2   3   4
   5   6   7   8
   9  10  11  12
请输入要删除的数值:6
处理后的矩阵:
   1   2   3   4
   5   7   8   9
  10  11  12   0

和预期效果完全一致。
内容的提问来源于stack exchange,提问作者Ali Osman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 07:57:03