你这个矩阵数据是 二维数组存储的嘛? 如果是的 就直接 一个for循环 搞定
int arr[3][3];
int n = 5;
for (int i = 0; i < 3; i++)
arr[i][i] = n;
如果是一维数组存储的,那也可以一个for循环搞定
int arr[9];
int n = 5;
for (int i = 0; i < 3; i++)
a[4 * i] = n;
不知道你这个问题是否已经解决, 如果还没有解决的话:我们看代码可以更容易理解。
int a[3][4];
int(*p)[4];//数组指针,p先和*结合,说明p是一个指针变量,然后指着指向的是一个大小为4个整型的数组。所以p是一个指针,指向一个数组叫指针数组。
//这里要注意:[]的优先级要高于*号的,所以必须加上()来保证p先和*结合。
一个数组,叫数组指
int *q[3];//指针数组
p = a;
for (int i = 0; i < 3; ++i)
{
q[i] = a[i];数组名一定不能放在左值
}
int a[3][4];//a(int(*)[4])a[i](int *) a[i][j](int)
int b[10];//b(int *) b[i](int)
从二维数组来理解,首先先介绍几个概念。
a[0] | ||||
a[1] | ||||
a[2] |
我可以为您提供一个具体的解决方案:
以下是代码实现:
#include <iostream>
int main() {
int matrix[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; // 定义原矩阵
int newValue = 0; // 定义要替换的固定值
for (int i = 0; i < 3; ++i) {
for (int j = 0; j < 3; ++j) {
if (i == j) { // 主对角线上的数
matrix[i][j] = newValue; // 替换成固定值
}
}
}
// 输出修改后的矩阵
for (int i = 0; i < 3; ++i) {
for (int j = 0; j < 3; ++j) {
std::cout << matrix[i][j] << " ";
}
std::cout << std::endl;
}
return 0;
}
输出结果为:
0 2 3
4 0 6
7 8 0
其中,主对角线上的数字都被替换成了0。