C ++程序不会结束

时间:2016-05-16 11:40:48

标签: c++ loops

你能说出这是什么错误吗?它编译并运行正常,但程序不会结束。

我正在使用dev c ++。代码是:

#include <iostream>
using namespace std;

main()
{

    char num;
again:

    int usr;
    float area;

    cout << "\nEnter 1 to calculate area of rectangle\n";
    cout << "Enter 2 to calculate area of trapezoid\n";
    cout << "\nEnter your choice: ";
    cin >> usr;

    if (usr == 1)
    {
        double width, length;
        cout << "Enter the width of rectangle: ";
        cin >> width;
        cout << "Enter the length of rectangle: ";
        cin >> length;
        area = length * width;
        cout << "The area of rectangle is: " << area;
    }

    if (usr == 2) {
        double base1, base2, height;
        cout << "Enter the base 1 of trapezoid: ";
        cin >> base1;
        cout << "Enter the base 2 of trapezoid: ";
        cin >> base2;
        cout << "Enter the height of trapezoid: ";
        cin >> height;
        area = (((base1 + base2) / 2) * height);
        cout << "The area of trapezoid is: " << area;
    }

    cout << "\n\ndo you want to do another calculation?";
    cin >> num;
    {
        goto again;
    }

    if (num == 'y')
    {
        goto again;
    }

    if (num == 'n') {
        exit(0);
    }
}

2 个答案:

答案 0 :(得分:5)

永远不会使用goto,除非你有充分的理由(你没有)。

cin >> num;{
goto again;
}

我不知道你为什么这么写,但这就是问题所在。如果您使用正确的格式编写它,它将看起来像这样

cin >> num;
{
    goto again;
}

括号{}只是改变了范围(对变量等有用),但没有做任何其他事情。 goto again;仍然被执行,所以你会遇到无限循环。

此后的2个条件没问题,因此只需删除{ goto again; }即可“修复”您的问题。

答案 1 :(得分:0)

删除代码中的第44行

你的代码

cin >> num;{
goto again;
 }

解决方案删除

  

再次转到

cin >> num;{

 }

这将解决您的问题