随机产生的3*3原矩阵,想让主对角线的数字替换成固定数值,其他数字不变。该怎么替换数字,再输出一个新矩阵?

img


想让主对角线的数字被替换成固定数字,其余数字不变,再输出一个新的矩阵,但不知道从哪里下手?

你这个矩阵数据是 二维数组存储的嘛? 如果是的 就直接 一个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;
不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7416844
  • 你也可以参考下这篇文章:编写一个函数,将某已知数组的奇数项合成一个新的数组。在主函数中调用该函数,并输出新数组的内容。
  • 除此之外, 这篇博客: 数组指针和指针数组用法和功能中的 :看词组的最后两个词是数组,那么含义是数组里面元素是指针的数组。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    我们看代码可以更容易理解。

    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)

    从二维数组来理解,首先先介绍几个概念。

    • 数组名代表数组首元素的首地址。
    • 数组的下标为什么从0开始?因为下标表示的是当前元素距首地址的偏移量。
    • 用树的方法来理解二维数组。
    • a[0]    
      a[1]    
      a[2]    

  • 您还可以看一下 张传波老师的软件设计是怎样炼成的?课程中的 整个程序需要考虑的设计规范小节, 巩固相关知识点
  • 以下回答来自chatgpt:

    我可以为您提供一个具体的解决方案:

    1. 首先定义一个3 * 3的二维数组matrix,用于表示原矩阵;
    2. 利用for循环遍历matrix,如果该数的行列下标相同(在主对角线上),则将该数替换成固定值newValue,否则不作修改;
    3. 输出修改后的matrix,即为所求的新矩阵。

    以下是代码实现:

    #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。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^