过了很长一段时间,我又回到了编码领域,我只是用这个简单的问题来显示矩阵的对角线和。当我设法通过"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 elements\n";
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 2 3 4,而以矩阵样式显示10x4c6864 20x4c6864 30x4c6864 40x4c6864。
发布于 2019-05-13 13:38:12
for(int b=1;b<=j;b++) cout<<M[a][b]<<cout<<" ";
这里您打印到stdout:值Ma和指向cout的指针。这就是为什么您得到“垃圾值”(0x4c6864),它们是指针地址。正确的for循环是:
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];
https://stackoverflow.com/questions/56120066
复制相似问题