c++ 嵌套的for循环未正确运行,函数未添加数组值

vsdwdz23  于 2023-03-20  发布在  其他
关注(0)|答案(1)|浏览(132)

外部for循环只运行一次,而不是3次,然后当调用函数sum时,数组值不加在一起。

#include<iostream>
using namespace std;

int sum(int a[][3]);

int main()
{

        int array[2][3];

        for (int num1; num1 < 3; num1 ++)
        {
                for (int num2; num2 < 4; num2 ++)
                {
                        cout << "Enter a number to be stored in array[" << num1 << "][" << num2 << "]: ";
                        cin >> array[num1][num2];
                }
        }

        sum(array);

        return 0;
}

// Below this is all of the functions that are used in this program

int sum(int a[][3])
{
        int sum;

        for (int num1; num1 < 3; num1 ++)
        {
                for (int num2; num2 < 4; num2 ++)
                        sum += a[num1][num2];
        }

        cout << "The sum is: " << sum << endl;

}

我试过切换函数参数的值,例如将其设置为“a[][]”和“a[2][3]”,但这两个都不起作用,至于for循环,我尝试将num1的值增加到12,认为每次迭代都必须加1,但这当然不起作用

nhhxz33t

nhhxz33t1#

int array[2][3];

    for (int num1 = 0; num1 < 2; num1 ++)
    {
            for (int num2 = 0; num2 < 3; num2 ++)

试试看,你可能会取得更大的成功。
1.用int num1 = 0;代替int num1;,给变量num1一个初始值0。你不必麻烦给变量一个初始值的想法是一个奇怪的想法。不知道初学者是从哪里学来的。你在int sum;上也有同样的问题,应该是int sum = 0;
1.数组的索引从0到(但不包括)数组的大小,所以如果你的数组的大小是2,正确的循环是for (int num1 = 0; num1 < 2; num1++)而不是for (int num1 = 0; num1 < 3; num1++),很容易记住,在for循环中使用<,并使用与数组大小相同的数字作为限制。
1.最后,很可能你的函数应该returnthe sum,而不是printit(初学者经常混淆这两个术语),打印是在main中完成的。

int main()
 {
     ...
     // call the function sum and print the returned value
     cout << "The sum is: " << sum(array) << endl;
 }

 int sum(int a[][3])
 {
     int sum = 0;
     ...
     // return the sum
     return sum;
 }

相关问题