-3

我需要以下 c++ 代码的帮助,尝试continue在程序末尾添加 a ,以便它为用户指定矩形尺寸并要求用户再次重做程序。

在程序的最后部分编译并运行它,而不用愚蠢的 if 和 else 语句,它就可以工作了。但是使用continue/ 递归它失败了。大声笑。我=菜鸟。


int main()
{


    int height, width, tmp, tmp2;

    char continue;

    cout << "Please Enter The Height Of A Rectangle (whole numbers only): ";
height:
    cin >> height;
    if(height<1)
    {
        cout << "   Please Enter A Height Of Between 1 And 20: ";
        goto height;
    }
    cout << "Please Enter The Width Of A Rectangle  (whole numbers only): ";
width:
    cin >> width;
    if(width<1)
    {
        cout << "   Please Enter A Width Of Between 1 And 38: ";
        goto width;
    }

    cout << ' ';                                         // Add a space at the start (to neaten top)
    for(tmp=0; tmp!=width; tmp++) cout << "__";          // Top Of Rectangle
    for(tmp=0; tmp!=(height-1); tmp++)
    {
        cout << "\n|";   // Left Side Of Rectangle
        for(tmp2=0; tmp2!=width; tmp2++) cout << "  ";    // Create A Gap Between Sides
        cout << "|";
    }                                  // Right Side Of Rectangle
    cout << "\n|";                                       // Left Side Of Bottom Of Rectangle  to neaten bottom)
    for(tmp=0; tmp!=width; tmp++) cout << "__";          // Bottom Of Rectangle
    cout << '|';                                         // Right Side Of Bottom Of Rectangle (to neaten bottom)

    cout << "Type 'y' if you would like to continue and any other combination to quit.";
continue:
    cin >> continue;
    if(continue == 'y')
    {
        main();
        cout << "\n\n";
        system("PAUSE");
        return 0;
    }
    else
        cout << "\n\n";
    system("PAUSE");
    return 0;
}
4

6 回答 6

5

continue是 C++ 中的关键字,因此您不能拥有具有该名称的变量。

于 2011-06-03T00:57:55.117 回答
5

你应该把你的代码放在一个while循环中。

int main()
{
    //  declaration of variables here

    do
    {
        // code here

        cout << "Type 'y' if you would like to continue and any other combination to quit.";
        cin >> doYouWantToContinue; // change the keyword!
    }
    while (doYouWantToContinue == 'y');
}
于 2011-06-03T00:59:32.243 回答
4

除了是保留字之外,在 C++continue中调用也是非法的。main从'03标准,§3.6.1/3:

该函数main不得在程序中使用。的链接main是实现定义的。声明maininline或格式错误的程序static。该名称main未被保留。[示例:可以调用成员函数、类和枚举main,其他命名空间中的实体也可以。]

于 2011-06-03T01:01:20.590 回答
3

continue 用于短路循环,例如:

for (i = 0; i < 10; ++i)
{
    if (f(i))
    {
        continue; // skip the rest of the loop
    }

    do_something_interesting_with(i);
}
于 2011-06-03T01:02:32.983 回答
2

continue 是一个 c++ 关键字,为它使用不同的名称

代替

char continue;

尝试

char cont;
于 2011-06-03T00:59:05.130 回答
0

我的 2¢:扔掉所有这些东西,然后重写它,记住

  1. gotos和标签不好;
  2. 它们应该用循环替换(可能do......while在你的情况下);
  3. 用保留/已使用的名称声明变量/标签是不好的(在大多数情况下是非法的);
  4. 递归main是不好的(实际上,根据标准它是非法的);
  5. 良好的缩进不是可选的(即使编译器不介意)。
  6. #includes不是可选的。

并且可能将用户输入/验证逻辑移动到一个单独的函数中以避免代码重复。

于 2011-06-03T01:04:55.707 回答