将许多整数存储到数组中并打印出来

时间:2019-02-05 13:02:49

标签: c++

如何使用for循环创建一个函数,以将给定范围的数字存储到数组中,然后在主程序中调用该函数并打印出数组中存储的元素?

int main ()
{
    testing(array, 20);
}

int testing(int array[], int k)
{
    for (int i = 0; k < 20; i++)
    {
        array[k] = i;
        k++;
    }

    for (int j = 0; j < 20; j++)
    {
        cout << array[j] << endl;
    }

}

我得到“测试必须返回值”的错误,我知道我应该具有return var;例如。但是,我不知道如何返回给定元素的数组以使用for循环打印出所有元素。

2 个答案:

答案 0 :(得分:1)

您的功能和循环结构未精心设计。您可以使用指针,而不必返回数组。 我认为这是您想要做的:

#include <iostream>    

void testing(int* a, int k)
{
    for (int i = 0; i < k; i++)
        a[i] = i;
}

int main()
{
    int a[20];
    testing(a, 20);
    // you can see that a's elements have changed outside the main (in testing)
    for (int j = 0; j < 20; j++)
        std::cout << a[j] << "\n";
    return 0;
}

答案 1 :(得分:0)

您似乎从未执行过第一个循环。您的第一个循环的停止条件是k < 20,但是k已经是20。 然后在第二个循环中,数组仅打印出先前保存在那些内存位置的垃圾。

我认为您的意思是:

for (int i= 0; i < k; i++) {
    array[i] = i;
}
for (int j = 0; j < k; ++j)  {
    cout << array[j] << endl;
}

如果要在main中打印数组,则需要通过传递指向数组而不是数组本身的指针来稍微更改函数。

此外,您的main函数从未初始化过要传递给函数的数组。

int main (void) {
    int a[20];
    testing (a, 20);
    return 0;
}

最后,将testing函数的返回类型设置为void

void testing (int array[], int k);

总而言之,它应该看起来像这样:

#include <iostream>

using namespace std; // I don't recommend doing this

void testing (int * array, const int k);

int main (void) {

    const int size = 20;
    int a[size] = {0};
    testing (a, size);
    for (int i = 0; i < size; ++i) {
        cout << a[i] << endl;
    }
    return 0;
}

void testing (int * array, const int k) {
    for (int i = 0; i < k; ++i) {
         array[i] = i;
    }
}