分支和循环语句(2)补充goto语句

简介: 分支和循环语句(2)补充goto语句

什么是goto语句呢?

1.C语言中提供了可以随意滥用的 goto语句和标记跳转的标号。

最常见的用法就是终止程序在某些深度嵌套的结构的处理过程。

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main() {
again:
    printf("hehe\n");
    printf("haha\n");
    printf("heiehi\n");
    goto again;
    return 0;
}

运行结果:屏幕上死循环打印hehe haha heihei

2.goto语言真正适合的场景如下:

for(...)
    for(...)
   {
        for(...)
       {
            if(disaster)
                goto error;
       }
   }
error:
 if(disaster)
         // 处理错误情况

3.使用goto语句写一个关机程序:让电脑在60s内关机,在60s内输入"我是猪"取消关机

//使用命令行关机
//shutdown -s -t 60
//取消关机 
//shutdown -a
#include<stdio.h>
#include<stdlib.h>//system库函数的头文件
#include<string.h>//strcmp库函数的头文件
int main() {
    char arr[20] = { 0 };
    system("shutdown -s -t 60");
again:
    printf("请注意,您的电脑将在1分钟内关机,如果输入:我是猪,就取消关机\n");
    scanf("%s", arr);
    if (strcmp(arr, "我是猪") == 0) {//strcmp用来比较比较两个字符串是否相等,等于的话返回值为0
        system("shutdown -a");
    }
    else {
        goto again;  //输错了但是时间还没到,就返回again就再给一次机会
    }
    return 0;
    }

运行结果:

不用goto语句的写法:

int main() {
    char arr[20] = { 0 };
    system("shutdown -s -t 60");
    while (1) {   //在1分钟内输入错误后反复输入,直到电脑关机
        printf("请注意,您的电脑将在1分钟内关机,如果输入:我是猪,就取消关机\n");
        scanf("%s", arr);
        if (strcmp(arr, "我是猪") == 0) {//strcmp用来比较比较两个字符串是否相等,等于的话返回值为0
            system("shutdown -a");
            break;
        }
    }
    return 0;
}

4.shutdown命令的拓展

shutdown-a   //取消关机
shutdown-s    //关机
shutdown-f   //强行关闭应用程序
shutdown-m\\计算机名     //控制远程计算机
shutdown-i    //显示'远程关机'图形用户界面,但必须是shutdown的第一个参数
shutdown-I    //注销当前用户
shutdown-r    //关机并重启
shutdown-s-t   //时间   设置关机倒计时
shutdown-r-t   //时间   设置重新启动倒计时
shutdown-h     //休眠

总结:

以上是对goto语句的简单使用,但是也足以体现出goto语句的作用了.你学到了吗小伙伴们😜😜

如果对你有帮助的话,希望小伙伴们点个赞和关注一下哦~💗💗💗我也会继续更新学习的内容,感谢友友们的支持!😚

相关文章
|
数据安全/隐私保护 Python
BUUCTF [ACTF新生赛2020]base64隐写 1
BUUCTF [ACTF新生赛2020]base64隐写 1
858 0
BUUCTF [ACTF新生赛2020]base64隐写 1
|
敏捷开发 持续交付 项目管理
阿里云云效产品使用问题之项目管理内,任务如何关联到需求上
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
存储 数据挖掘 Linux
探索Linux命令rpm2cpio:解析RPM包内容的利器
`rpm2cpio`是Linux下用于从RPM包中提取内容的工具,它将`.rpm`转换为CPIO归档。无需安装,可直接访问包内文件,适合数据分析。命令简单,常与`cpio`结合使用,如`rpm2cpio package.rpm | cpio -idmv`解压文件。示例包括提取特定文件和列出包内所有文件。注意权限、路径和文件完整性,使用前备份数据,并查阅文档以优化使用。
|
移动开发 前端开发 HTML5
分享62个Html后端模板,总有一款适合您
分享62个Html后端模板,总有一款适合您
286 4
|
存储 C语言 C++
【C++】C&C++内存管理
【C++】C&C++内存管理
|
Linux 虚拟化
VMware虚拟机中Centos 6.x系统磁盘空间扩容实战
VMware虚拟机中Centos 6.x系统磁盘空间扩容实战
631 0
|
编译器 C++ 开发者
[C++从入门到精通] 2.inline内联函数、const的相关用法
[C++从入门到精通] 2.inline内联函数、const的相关用法
120 0
|
SpringCloudAlibaba 负载均衡 Dubbo
SpringCloud Alibaba实战(8:使用OpenFeign服务调用)
SpringCloud Alibaba实战(8:使用OpenFeign服务调用)
851 0
SpringCloud Alibaba实战(8:使用OpenFeign服务调用)
|
druid Java 数据库连接
《JavaWeb篇》02.JDBC看这一篇就够了(三)
《JavaWeb篇》02.JDBC看这一篇就够了(三)
182 0
《JavaWeb篇》02.JDBC看这一篇就够了(三)
node14-node实现登录和注册第一部分代码
node14-node实现登录和注册第一部分代码
201 0
node14-node实现登录和注册第一部分代码