goto语句

goto语句也称为无条件转移语句,它只能在函数体内跳转,不能跳到函数体外的函数。即goto有局部作用域,需要在同一个栈内。
需要在要跳转到的程序段起始点加上标号。

前面,标号后加冒号(:)。语句标号起标识语句的作用,与goto 语句配合使用。

语法:

标号:

语句

……//

go to 标号;

如: label: i++;

loop: while(x<7);

1.goto 语句可用于跳出深嵌套循环

#include<iostream>
    using namespace std;
    int main()
    {
        for (int i = 0; i < 10; i++)
            for (int j = 0; j < 10; j++)
                for (int k = 0; k < 10; k++)
                {
                    cout << i * j * k << " ";
                    if (216 == i * j * k)
                        goto part2;//break是跳不出多重循环的 
                }
        cout << "此处被省略" << endl;
    part2:
        cout << "part2" << endl;
        system("pause");
    }

2.goto语句可以往后跳,也可以往前跳 

#include<iostream>
    using namespace std;

    int main()
    {
        int x, sum = 0;
        
    L1: cout << "x=";//定义标号L1
        cin >> x;
        if (x == -1)
            goto L2;          //当用户输入-1时,转到L2语句处
        else
            sum += x;
        goto L1;             //只要用户没有输入-1,则转到L1语句处,程序一直将用户的输入默默地累加到变量sum中。
        //定义标号L2
    L2: cout << "sum=" << sum << endl;//一旦转到L2,将输出累计结果,程序运行结束。
        system("pause");
    }//输出:x=1.x=2,x=3,x=-1,sum=6

3.也可以跳出switch,或者在case之间进行跳转

#include<iostream>
    using namespace std;

    int main()
    {
        char a;
    L1:
        cout << "请输入一个字符" << endl;
        cin >> a;
        switch (a)
        {
        case 'a':
            cout << "case a" << endl;
            goto L1;
            //break;
        L2:
        case 'b':
            cout << "case b" << endl;
            break;
        case 'c':
            cout << "case c" << endl;
            //   break;
            goto L2;
        default:
            break;
        }
        system("pause");

 输出:
     请输入一个字符
     a
     case
     a
     请输入一个字符
     case
     b
     请按任意键继续.

#include <iostream>
    using namespace std;

    int main()
    {
        // 局部变量声明
        int a = 10;

        // do 循环执行
    LOOP:do
    {
        if (a == 15)
        {
            // 跳过迭代
            a = a + 1;
            goto LOOP;
        }
        cout << "a 的值:" << a << endl;
        a = a + 1;
    } while (a < 20);

    return 0;
    }

输出:
a 的值: 10
a 的值: 11
a 的值: 12
a 的值: 13
a 的值: 14
a 的值: 16
a 的值: 17
a 的值: 18
a 的值: 19

#include<iostream>
    using namespace std;

    void main() {
        int i = 1;
        int sum = 0;
    loop: if (i < 10)
    {
        sum += i;
        i++;
        goto loop;
    }
    cout << "i = " << i << endl;
    cout << "sum = " << sum << endl;
    }

输出:i=10,sum=45(1+2+……+9)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木木(。・ω・。)ノ♡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值