-1

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

在此处输入图像描述

下面是流程图的代码如图所示,忽略流程图中的模棱两可的语句。

#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 语句。

感谢您的指导!

4

2 回答 2

6

这个结构应该按照流程图做核心逻辑:

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

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

于 2013-07-07T07:03:41.337 回答
2

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

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

于 2013-12-16T20:51:54.347 回答