首页 > 解决方案 > 无法添加用户输入的数组值

问题描述

您好,我正在为我的 C++ 课程分配作业并且遇到了问题。说明是;创建一个4行3列的整数型二维数组

用用户输入的值填充二维数组,为此使用函数,调用此函数 userInputValues()。

以电子表格格式打印数组,同时打印每行值的总和。输出必须是:

                                             Row Totals
           value01   value02   value03         Sum01
           value04   value05   value06         Sum02
           value07   value08   value09         Sum03 
           value10   value11   value12         Sum04

列的值和总和必须右对齐。使用 sew() 函数。

使用函数打印值。调用此函数 printValues()。

必须使用循环输入值、遍历数组、计算总和并打印数组中的值。


#include<iostream>
#include<iomanip>

using namespace std;

int const ROWS = 4;
int const COLUMNS = 3;

void userInputValue(int myArray[ROWS][COLUMNS]);
void printValues(const int myArray[ROWS][COLUMNS]);

int main()
{
int myArray[ROWS][COLUMNS];

userInputValue(myArray);
printValues(myArray);
return 0;

} 

void userInputValue(int myArray[ROWS][COLUMNS])
{
int index = 0;

cout << "Enter 12 numbers" << endl;

for(int row = 0; row < ROWS; ++row)
{
for(int column = 0; column < COLUMNS; ++column)
 {
   cout << ++index << ". Enter a number: ";
   cin >> myArray[row][column];
   
  }
 }
} // End of method userInputValue

void printValues(const int myArray[ROWS][COLUMNS])
{

  cout << right << setw(20) << "Row Totals" << endl; 

  for (int row = 0; row < ROWS; row++)
 {
    int sum;  

    for (int column = 0; column < COLUMNS; ++column)
    {
        cout << setw(3) << myArray[row][column]; 

        sum = sum + myArray[row][column]; 
    }

    cout << setw(6) << sum<<'\n';  

  }
} // End of printValues

当我运行我得到的代码时,行总计
10 2 3-434904305
4 5 6-434904290
7 8 9-434904266
90 80 70-434904026

我错过了什么/做错了什么?抱歉,如果代码看起来很糟糕。C++ 不是我的第一母语

标签: c++

解决方案


int sum; 

这声明了一个名为 的变量sum,但没有将其初始化为 0。这是未定义的行为,表现为 sum 的初始值是随机垃圾。

随后的循环向这个随机垃圾添加更多值,然后打印随机垃圾作为添加的结果。因此,只需将其初始化为 0:

int sum=0;

顺便说一句:所有现代 C++ 编译器都非常擅长检测这种常见的编程错误并发出警告或诊断消息。如果您的编译器完全静默,则在编译此程序时:这应该表明您应该将编译器更新为更现代的东西。如果您的 C++ 编译器在编译您的程序时确实发出了诊断消息,那么将来要记住这一点:永远不要忽略来自 C++ 编译器的任何咨询消息。


推荐阅读