广告位联系
返回顶部
分享到

C语言利用goto语句设计实现一个关机程序

C语言 来源:互联网 作者:佚名 发布时间:2023-01-23 09:35:18 人浏览
摘要

goto语句其实在平常中我们 除了学习分支语句和循环语句时,介绍循环语句时,才会知道有goto语句这个用法,那读者可能会问:我们还有学习的必要吗? 答案是显而易见的,正如黑格尔

goto语句其实在平常中我们 除了学习分支语句和循环语句时,介绍循环语句时,才会知道有goto语句这个用法,那读者可能会问:我们还有学习的必要吗?

答案是显而易见的,正如黑格尔所说的:存在即合理!既然存在,就会有存在的必要!虽然我们现在不会遇到且用到 ,当在搞Linux硬件驱动等的时候,其内核含有较多的goto语句,如果不会且不知道的话,将会导致你无法理解这个的工作原理。因此我们要知道并学会用于它。

一、什么是goto语句

C语言中提供了可以随意滥用的goto语句和标记跳转的标号。从理论上讲,goto语句是没有必要的,实践中没有goto语句也可以很容易的写出代码。

二、goto语句的作用是什么

goto语句在某些场合下goto语句还是用得着的,最常见的用法是终止程序在某些深度嵌套结构的处理过程。例如,一次跳出多层循环的场景。一次跳出多层循环使用break是比较麻烦的,因为break每次使用只能跳出一层循环,在这里只能用多个break才能实现,goto语句的优势就体现出来了。

三、goto语句的缺点

之所以老师没有多强调它,以及各大教科书几乎都是寥寥数笔,因为它有一个致命的缺点:一旦滥用goto语句将会导致逻辑混乱,导致系统崩溃等问题!!!

四、goto语句的结构与用法

结构:

again:
      语句;
    goto again;//again可以替换成其他的,这里不要求一定是again

用法:

某些场合下goto语句还是用得着的,最常见的用法就是终止程序在某些深度嵌套的结构的处理过 程。比如结束多层嵌套的使用。

1

2

3

4

5

6

7

8

9

10

11

12

13

for(...)

    for(...)

   {

        for(...)

       {

            if(disaster)

                goto error;

       }

   }

    …

error:

 if(disaster)

         // 处理错误情况

五、goto语句的巧用实例——关机小程序

1、goto语句版关机小程序设计源代码:

goto语句的使用效果其实和我们的循环有异曲同工之妙,goto语句的编写也可以实现循环的效果。对比两个版本的关机小程序设计,你就能深刻感受到啦!

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

#define _CRT_SECURE_NO_WARNINGS 1//如果是VS编译器才需要这句代码

#include<stdio.h>

#include<stdlib.h>//shutdown命令语句的头文件

#include<string.h>//strcmp的头文件

int main()

{

    char input[20] = { 0 };

    system("shutdown -s -t 60");

again:

    printf("电脑将在1分钟内关闭,如果输入:我是猪,就取消关机!\n请输入:>");

    scanf("%s", input);

    //strcmp函数用于比较两个字符串的大小

    if (0 == strcmp(input, "我是猪"))

    {

        system("shutdown -a");

    }

    else

    {

        goto again;

    }

    return 0;

}

2、循环语句版关机小程序设计源代码:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

#define _CRT_SECURE_NO_WARNINGS 1//如果是VS编译器才需要这句代码

#include<stdio.h>

#include<stdlib.h>//shutdown命令语句的头文件

#include<string.h>//strcmp的头文件

int main()

{

    char input[20] = { 0 };

    system("shutdown -s -t 60");

    while (1)

    {

        printf("电脑将在1分钟内关闭,如果输入:我是猪,就取消关机!\n请输入:>");

        scanf("%s", input);

        if (0 == strcmp(input, "我是猪"))

        {

            system("shutdown -a");

            break;

        }

    }

    return 0;

}

3.方法三

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

#define _CRT_SECURE_NO_WARNINGS 1

#include<stdio.h>

#include<Windows.h>

int main(void)

{

    char input[20] = {0};

    system("shutdown -s -t 60");//表示将在60秒后电脑关机

again:

    printf("请注意:你的电脑将在60秒后自动关机,如果输入:不要关机,则取消自动关机\n");

    scanf("%s", input);

    if (strcmp(input,"不要关机") == 0)

    {

        system("shutdown -a");

    }

    else

        goto again;

    return 0;

}

效果图

总结撒花

上述就是我今天分享的主要内容啦,你学会了吗?但是,不要学会了这个小程序后去恶搞别人的电脑哇(在别人的电脑编写这个程序) ,可以在自己电脑玩玩测试一下就好啦哈哈哈!


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 : https://blog.csdn.net/weixin_70261953/article/details/128585106
相关文章
  • C语言实现求解素数的N种方法

    C语言实现求解素数的N种方法
    哈喽各位友友们,我今天又学到了很多有趣的知识,现在迫不及待的想和大家分享一下!我仅已此文,手把手带领大家探讨利用试除法、筛
  • C语言利用goto语句设计实现一个关机程序

    C语言利用goto语句设计实现一个关机程序
    goto语句其实在平常中我们 除了学习分支语句和循环语句时,介绍循环语句时,才会知道有goto语句这个用法,那读者可能会问:我们还有学
  • VS及Unity安装和使用Nuget包

    VS及Unity安装和使用Nuget包
    一、百科 Nuget是一个包(package)管理平台,确切的说是.net平台的包管理工具,它提供了一系列客户端用于生成,上传和使用包(package),
  • C/C++ Qt实现文章小说人物关系分析

    C/C++ Qt实现文章小说人物关系分析
    一、所需工具软件 1. Visual Stuido 2. C++ 二、使用步骤 1.引入库 代码如下(示例): 1 2 3 4 5 6 7 8 9 10 11 #include QtGuiApplication1.h #includeqDebug #incl
  • C语言实现三子棋的代码

    C语言实现三子棋的代码
    一、问题描述 用 c 语言实现三子棋。 二、基本流程 在写三子棋的代码之前,我们来看看实现这个游戏的逻辑: 1.菜单界面选择开始或者退
  • C++ system()函数的常用用法(全网最新大全)
    一.推荐: 1. system(pause) 这是萌新最常用的函数了,运行后会有个暂停的效果,在制作游戏的时候也很常见 通常用于暂停或等待用户了解完信
  • vscode调试gstreamer源码的流程介绍

    vscode调试gstreamer源码的流程介绍
    1. 安装vscode插件 C/C++ C/C++ Extension 2. 配置文件修改 vscode中每个项目都有一套配置文件集合,位于.vscode目录下,其中有: tasks.json:编译的相
  • 基于Qt实现电子木鱼小游戏的方法
    今年最火爆的解压小游戏电子木鱼,现在许多软件都上架了这个小程序。我在网上看了一下基本上都是用py和Java写的,所以我用QT重新写了一
  • C++小游戏教程之猜数游戏的实现

    C++小游戏教程之猜数游戏的实现
    0. 引言 本章主要讲解如何做一个简易的猜数游戏,分为用户猜数和系统猜数。 前置芝士: 「C++小游戏教程」基本技巧(1)随机化 1. 用户猜数
  • C++AVL树4种旋转详讲(左单旋、右单旋、左右双旋、

    C++AVL树4种旋转详讲(左单旋、右单旋、左右双旋、
    引子:AVL树是因为什么出现的? 二叉搜索树可以缩短查找的效率,如果数据有序或接近有序二叉搜索树将退化为单支树,查找元素相当于在
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计