【发布时间】:2020-02-16 20:06:02
【问题描述】:
我正在尝试执行以下操作: 有一个矩阵,将整个内容打印出来,在每行的末尾打印该行的最大元素,并在每列的底部打印该列的最小元素。 我几乎是 C++ 的初学者。
这就是我到目前为止所做的:
#include <iostream>
#include <iomanip>
#define M 50
#define N 50
using namespace std;
int main()
{
int m,n;
int a[M][N];
int b[M],c[N];
do {
cout<<"m=";
cin>>m;
cout<<endl<<"n=";
cin>>n;
cout<<endl;
}
while(m!=n);
for(int i=0;i<m; i++) {
for(int j=0; j<n; j++){
cout<<"a["<<i<<"]["<<j<<"]=";
cin>>a[i][j];
}
}
int max_row;
max_row=0;
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
if (a[i][j] > max_row) {
max_row = a[i][j];
b[i] = max_row;
}
}
}
for (int i=0; i<m; i++)
{ for(int j=0; j<n; j++){
cout<<setw(3)<<a[i][j]<<"\t";
}
cout<<"|"<<b[i];
cout<<endl;
}
for(int i=0; i<m; i++){
cout<<setw(3)<<"-";}
cout<<endl;
for(int j=0; j<n; j++)
{cout<<c[j]<<"\t";
}
system("pause");
}
大多数时候 max_row 是正确的,例如这种情况:
3 2 1 |3
4 6 5 |6
7 8 9 |9
其他时候他们会搞砸,事情是这样的:
1 2 3 |3
4 33 6 |33
7 8 9 |-858993460
我真的不知道是什么原因造成的,因为没有错误消息,我真的很困惑。我也不知道如何制作最小列。任何帮助将不胜感激。
【问题讨论】:
-
考虑添加一些标记程序关键部分的 cmets。一目了然,很难说出各种循环的目的,
a、b、c是什么等等。 -
-858993460 是 0xCCCCCCCC,magic value 表示未初始化的堆栈内存,这意味着值
b[2]从未初始化。你需要调试你的程序。
标签: c++ arrays for-loop max nested-loops