C ++中goto语句的替代方法

时间:2013-07-07 06:56:17

标签: c++ if-statement goto

以下是该流程图的链接: http://i1146.photobucket.com/albums/o530/HTHVampire/C%20plus%20plus/Capture_zps5a6c3acf.jpg

enter image description here

这是所示流程图的代码,只是忽略流程图中的模糊语句。

#include <iostream>
using namespace std;

int main()
{
    //declare and initialize a variable
    int a = 0;
    //prompt user for a value
    cout << "please enter a value" << endl;
    cin >> a;

    again1:
    //enter a decision block
    if(a > 10)
    {
        if(a < 10)
        {
            again2:
            if(a < 100)
            {
                a = a - 3;
                goto again2;
            }
            else goto again1;
        }
        else
        {
            a = a - 7;
            goto again1;
        }
    }
    else cout << "the output is " << a << endl;

    return 0;
}

我可以知道我可以使用if-else语句和while语句一起播放此代码吗?而不是goto声明。

感谢您的导游!

2 个答案:

答案 0 :(得分:6)

该结构应根据流程图执行核心逻辑:

while (a > 10) {
    if (a < 10) {
        while (a < 100) {
            a += 3;
        }
    } else {
        a -= 7;
    }
}

请注意if测试是荒谬的。但是,我没有绘制流程图;我只是在代码中复制它。

答案 1 :(得分:2)

只要限制使用状态机,goto就没有问题。 许多教师因缺乏理解而错误地禁止使用它。 对于像你这样的简单状态机和协议解码,它产生极其可读的代码。我破坏了多年的嵌入式C例程,因为我害怕使用goto。

我开始使用goto,我的手指画变成了梵高。