1

我有一个向量向量,它给了我 anxn 矩阵。我正在使用 for 循环对矩阵中的所有元素求和,但结果很奇怪。

相关代码为:

int main(){
while(cin){

int n = 0;
int sum = 0;

cout << "\n\nEnter a size (n) for the matrix: ";
cin >> n;

vector<vector<int> > matrix ( n, vector<int> ( n ) );
int k = 0;

for ( int i = 0; i < n; i++ ) {
    for ( int j = 0; j < n; j++ )
        matrix[i][j] = k++;
}

for ( int i = 0; i < n; i++ ) {
    for ( int j = 0; j < n; j++ )
        cout<< setw ( 3 ) << matrix[i][j] <<' ';
        cout<<'\n';
}

for ( int i = 0; i < n; i++ ) {
    for ( int j = 0; j < n; j++ )
        sum += matrix[i][j];
}
cout << "\nThe sum of the elements of the matrix is: " << sum << ' \n';
}
}

所以,奇怪的是......当它打印'sum'的值时,出于某种原因,我将“8202”附加到该值上。如果我给它 n = 1,它将打印出 08202,或者对于 3 的 n,它将打印出 368202。

有任何想法吗?我在 Code::Blocks 中尝试了调试器,但没有成功。

4

1 回答 1

2

你输出' \n'. 注意前面的空格\n。那是两个字符/一个字符串。但是,您将's 放在它周围意味着它将两个字符解释为一个字符,从而给您带来奇怪的结果。将其更改为" \n".

奖金史诗般的PHUNZIES内容:我是怎么想出来的?嗯……还能是什么?总和输出正确,所以在它之后一定有问题。输出总和后唯一的事情是什么?你输出' \n'......好吧,那有什么问题?还有BAM!问题解决了。

于 2012-06-26T06:39:32.267 回答