C语言利用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语句还是用得着的,最常见的用法就是终止程序在某些深度嵌套的结构的处理过 程。比如结束多层嵌套的使用。
for(...) for(...) { for(...) { if(disaster) goto error; } } … error: if(disaster) // 处理错误情况
五、goto语句的巧用实例——关机小程序
1、goto语句版关机小程序设计源代码:
goto语句的使用效果其实和我们的循环有异曲同工之妙,goto语句的编写也可以实现循环的效果。对比两个版本的关机小程序设计,你就能深刻感受到啦!
#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、循环语句版关机小程序设计源代码:
#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.方法三
#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实现关机程序内容请搜索编程宝库以前的文章,希望以后支持编程宝库!
背景:个人的Qt项目中,需要一个图片分割算法。该算法之前在Matlab上实现过,同时转成C++版本有点麻烦,因此尝试通过Qt与Matlab编程相结合的方式,实现该功能。注意:以下所有功能及配置 ...