用于显示矩阵元素的C 函数显示垃圾值

C++ Function for displaying matrix elements showing garbage values

本文关键字:显示 函数 元素 用于      更新时间:2023-10-16

很长一段时间后,我回到了编码,只是用这个简单的问题刷出了我的技能,以显示矩阵的对角线。当我设法通过" getMatrix"函数将矩阵元素提取到int数组中时,另一个" showmatrix"正在显示垃圾值。错误在哪里?

#include<iostream>
using namespace std;
int i,j;
void getMatrix(int M[100][100])
{
 for(int a=1;a<=i;a++)
  {
    for(int b=1;b<=j;b++) cin>>M[a][b];
  }
}
-------------------------this function----------------------------------------
void showMatrix(int M[100][100])
{
 for(int a=1;a<=i;a++)
  {
    cout<<endl;
    for(int b=1;b<=j;b++) cout<<M[a][b]<<cout<<" ";
  }
}
------------------------------------------------------------------------------
int main()
{
int sum=0;
int m[100][100];
cout<<"Enter matrix dimensions";
cin>>i>>j;
cout<<"Enter Matrix elementsn";
getMatrix(m);
cout<<"Matrix is : ";
showMatrix(m);
for(int n=0;n<=i;n++)sum+=m[n][n];
cout<<"n sum of diagonal elements is "<<sum;
}

如果我输入1 2 3 4应该显示为1 23 4矩阵样式但是,它的显示10x4C6864 20x4C686430x4c6864 40x4c6864以矩阵样式。

    for(int b=1;b<=j;b++) cout<<M[a][b]<<cout<<" ";

在这里您打印到stdout:值m [a] [b]和指针的指针。这就是为什么您获得"垃圾值"(0x4C6864(的原因。正确的循环是:

for(int b=1;b<=j;b++) cout<<M[a][b]<<" ";

在您的总和中, n 从0开始,而在show/getmatrix a开始时为1

for(int n=0;n<=i;n++)sum+=m[n][n];