-4

这是我为一个有 14 个插槽的数组编写的代码,每个插槽都应该有 4 个,除了第 6 和第 13 个插槽,它们恢复为 0。但是,它不能编译。有谁知道我在这里做错了什么?

using namespace std;
#include <iostream>

const int MAX = 14;

int main ()
{
    void printArray ();

    system ("pause");
    return 0;
}

void startArray (int beadArray[MAX])
{
    for(int i=0; i<MAX; i++)
    {
        beadArray[i]=4;
    }
    beadArray[6]=0;
    beadArray[13]=0;
}

//**********************************************//

void printArray ()
{
    startArray (int beadArray[MAX]);
    for(int i=0; i<MAX; i++)
    {
        cout<<i;
    }
}
4

2 回答 2

7
startArray (int beadArray[MAX]);

您正在尝试beadArray一步声明和使用它。您应该在使用它之前声明它:

int beadArray[MAX];
startArray (beadArray);

您还有许多其他问题:

  • using namespace std;没有效果,因为<iostream>还没有被#included。您也不应该使用全局using namespace std;变量。

  • system ("PAUSE");应该更换。我个人使用:

    cin.sync(); cin.get();

  • 编译器在main(). 之前main(),您应该放置原型:

    无效打印数组();无效 startArray (int []);

  • main()你说void printArray();。调用函数时,只需使用函数名和参数:

    打印数组();

  • 在 中printArray(),您正在输出i而不是beadArray [i]. 也没有间距。

  • 全局常量不好用。

我的固定代码如下所示:

#include <iostream>

const int MAX = 14;

void startArray (int (&beadArray)[MAX]);
void printArray();

int main ()
{
    printArray ();

    std::cout << "\n\nPress enter to continue...";
    std::cin.sync();
    std::cin.get();
    return 0;
}


void startArray (int (&beadArray)[MAX])
{
    for(int i=0; i<MAX; ++i)
        beadArray[i]=4;

    beadArray[6]=0;
    beadArray[13]=0;
}

void printArray ()
{
    int beadArray[MAX];
    startArray (beadArray);

    for(int i=0; i<MAX; i++)
        std::cout << beadArray[i] << ' ';
}

我确实保留了常量,但是您可以做很多事情来替换它。

于 2012-05-05T20:40:16.310 回答
3

一些更正的错误:

  • 如果您想在外部使用它,请在 startArray() 函数调用之外声明您的数组。
  • 如果要修改它,请将数组作为参考传递
  • cout << beadArray[i] 而不是 cout << i

.

using namespace std;    
#include <iostream>

const int MAX = 14;

int main ()    
{
    void printArray ();
    system ("pause");
    return 0;
}

void startArray (int &beadArray[MAX])
{
    for(int i=0; i<MAX; i++)
        beadArray[i]=4;
    beadArray[6]=0;
    beadArray[13]=0;
}

//**********************************************//

void printArray ()
{
    int beadArray[MAX];
    startArray (beadArray);

    for(int i=0; i<MAX; i++)
        cout<<beadArray[i];
}
于 2012-05-05T20:44:14.990 回答