服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C/C++ - C语言利用goto语句设计实现一个关机程序

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

2023-05-19 17:53博客小梦 C/C++

今天给大家分享一个非常有趣的知识——用goto语句编写一个关机小程序。主要用到了shutdown命令语句、goto语句、strcmp函数等知识点,感兴趣的可以了解一下

前言

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;
}

效果图

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

总结撒花

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

到此这篇关于C语言利用goto语句设计实现一个关机程序的文章就介绍到这了,更多相关C语言 goto实现关机程序内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/weixin_70261953/article/details/128585106

延伸 · 阅读

精彩推荐
  • C/C++详解C++中static的用法

    详解C++中static的用法

    这篇文章主要介绍了c++中static的用法详解,C 语言的 static 关键字有三种用途,具体内容详情大家跟随脚本之家小编一起学习吧...

    Ziven-Hu5982021-06-25
  • C/C++C/C++ Qt 运用JSON解析库的实例代码

    C/C++ Qt 运用JSON解析库的实例代码

    这篇文章主要介绍了C/C++ Qt 运用JSON解析库的相关知识,通过代码依次解析这个json文件中的每一个参数,代码简单易懂,对大家的学习或工作具有一定的参...

    lyshark9502022-08-10
  • C/C++C语言初阶之数组详细介绍

    C语言初阶之数组详细介绍

    大家好,本篇文章主要讲的是C语言初阶之数组详细介绍,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览...

    build小春宝9752022-08-01
  • C/C++opencv3/C++基于颜色的目标跟踪方式

    opencv3/C++基于颜色的目标跟踪方式

    今天小编就为大家分享一篇opencv3/C++基于颜色的目标跟踪方式,具有很好的参考价值,希望对的有所帮助。一起跟随小编过来看看吧...

    阿卡蒂奥5262021-08-08
  • C/C++C语言实现页面置换算法(FIFO、LRU)

    C语言实现页面置换算法(FIFO、LRU)

    这篇文章主要介绍了通过C语言实现的两种页面置换算法:先进先出(FIFO)页面置换算法和最近最久未使用(LRU)页面置换算法。文中的代码具有一定的学习或工...

    S_MIL9652022-07-08
  • C/C++利用C语言实现扫雷小游戏

    利用C语言实现扫雷小游戏

    这篇文章主要为大家详细介绍了利用C语言实现扫雷小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    yuelinghou11002021-10-22
  • C/C++C++ 中malloc()和free()函数的理解

    C++ 中malloc()和free()函数的理解

    这篇文章主要介绍了C++ 中malloc()和free()函数的理解的相关资料,这里提供用法示例帮助大家理解这部分知识,需要的朋友可以参考下...

    小小白杨1237822021-05-27
  • C/C++C++实现LeetCode(8.字符串转为整数)

    C++实现LeetCode(8.字符串转为整数)

    这篇文章主要介绍了C++实现LeetCode(8.字符串转为整数),本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下...

    Grandyang9262021-11-23