C语言中阶第五篇:写一个强制关机的程序,以及goto语句跳出多层循环的应用

业精于勤荒于嬉,行成于思毁于随。
今天我们一起来看一看之前没有说的goto语句,还有

一、goto语句

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

但是某些场合下,goto语句还是用的着的,最常见的用法就终止程序在某些深度嵌套的结构的处理过程

例如:一次跳出两层或多层循环

多层循环这种情况使用break是达不到目的的,break一次只能跳出一层,如下:
在这里插入图片描述
The break statement terminates the execution of the nearest enclosing do, for, switch, or while statement in which it appears. Control passes to the statement that follows the terminated statement.
而goto语句可以实现我们的目的:
在这里插入图片描述
The goto statement transfers control to a label. The given label must reside in the same function and can appear before only one statement in the same function.注意,goto语句不能跨函数调整

二、goto语句的实际应用

我们先看一个简单的例子:这是一个死循环:

#include<stdio.h>
int main()
{
again:
	printf("hehe\n");
	goto again;

	return 0;
}

在这里插入图片描述
也就是跳转到again语句。

或者写一个关机程序:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<Windows.h>
int main()
{
	char input[20] = { 0 };
	system("shutdown -s -t 60");//system是一个库函数,用来执行系统命令
again:	
	printf("请注意,你的电脑在1分钟内关机,如果输入:我是猪 就取消关机\n");
	scanf("%s", &input);
	//判断
	if (strcmp(input, "我是猪") == 0)
	{
		system("shutdown -a");//取消关机
	}
	else
	{
		goto again;
	}
	return 0;
}

在这里插入图片描述

这里我在书写程序的时候,忘记取消了,结果关机了,幸好网页有还原功能,不然这篇文章就要从头再写啦!还不赶紧拿走代码试一试?
如果代码出现问题,记得cmd写上这个哦:shutdown -a
在这里插入图片描述

现在我们来看一下正确的使用goto语句(不是滥用):

#include<stdio.h>
#include<windows.h>
int main()
{
	int disaster = 0;
	for (int i = 0; i < 10; i++)
	{
		//这里可以写需要的代码
		for (int j = 0; j < 10; j++)
		{
			//这里可以写需要的代码
			for (int k = 0; k < 10; k++)
			{
				//这里可以写需要的代码
				if (disaster)
					goto error;
				//当出现disaster情况的时候,就去执行error的语句
			//这里可以写需要的代码
			}
		}
	}
error:
	system("cls");//可以不写这个,这行代码只是假设error执行清屏
	//这里可以写需要的代码
	return 0;
}

可以看出来,goto语句非常的好用,真的非常方便,所以才容易被滥用,所以平常尽量不要使用goto语句,滥用共同语句是一种很不好的行为,我们要有一个好的书写代码的习惯

那么今天对goto语句的使用,就说到这里了,欢迎各位大大指正批评。

评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值