C ++ Homework:我一直收到错误

时间:2016-03-25 02:25:19

标签: c++

问题是:

  

编写一个读取整数的程序,并使用星号显示一个彼此相邻的填充空心方块。

这是经过修改的源代码

#include <iostream>
#include <cstdlib>
void printTop (int a);
int main() {
int num = 1;
cout << "Please, Enter a Number: " ;
cin >> num;
while (num >= 1) {
    printTop (num);
    for (int w = 0; w < num-2; w++) {
        for (int i = 0; i < num; i++) {
            cout << "*";
        }
        cout << " *";
        for (int i = 0; i < num-2; i++) {
            cout << "*\n";
        }
        printTop (num);
        cin >> num;
    }
    return 0;
 }
   void printTop (int a) ;
 {

    for (int i = 0; i < a*2; i++)
    {
        cout << "*";
        if (i == a-1) {
            cout << " " ; 
        }
    }
    cout << "\n" ;
}

2 个答案:

答案 0 :(得分:2)

您必须在main方法上方声明printTop()。 C ++编译器期望方法被前向声明(https://en.wikipedia.org/wiki/Forward_declaration)。

答案 1 :(得分:1)

与Java和其他一些语言不同,C ++不允许在声明方法之前调用它们。

您可以在int main(int argc, char* argv[])方法之前添加以下声明

void PrintTop(int a);

但是,您不需要在main之前添加功能定义。声明就足够了。

您的代码中的其他一些问题:for (int w = 0; w < num-2; i++)应替换为for (int w = 0; w < num-2; w++)