有趣的关机程序

本篇将介绍一个有趣的程序及转向语句go to

 


 一、go to 语句

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

1.1 go to 语句的使用

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

	goto again;

	return 0;
}

 goto就是到那里去,代码从上往下执行,遇到goto again就是跳转到again去,最终该程序的结果就是死循环打印hehe。

 :goto不能实现跨函数跳转

void test()
{
flag:
	printf("test\n");
}

int main()
{
	printf("hehe\n");
	goto flag;//goto 语句只能一个函数内部跳转,不能跨函数跳转的
	return 0;
}

 这样的代码是错误的

1.2 go to的实际应用场景 

如果在程序中大量使用goto语句,则会破坏代码的逻辑,因从理论上 goto语句是没有必要的,尽量少使用goto语句,实践中没有goto语句也可以很容易的写出代码。

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

例如:一次跳出两层或多层循环。  
多层循环这种情况使用 break 是达不到目的的。它只能从最内层循环退出到上一层的循环。

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

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

二、goto实现关机程序

关机程序:

1. 程序运行起来后,1分钟内电脑关机(时间可更改)
2. 如果输入:我是猪,就取消关机(内容可更改)

实现关机的原理:

按住键盘win+r,输入cmd,打开命令提示符, 或者在开始菜单中搜索

 

 输入shutdown -s -t 60,shutdown -s为关机命令,-t 60为设置关机秒数关于shutdown命令的扩展-(请点这里)

程序通过system函数即可实现这些系统命令 

程序代码如下:

#include <stdio.h>
int main()
{
    char input[10] = {0};
    //程序倒计时关机
    system("shutdown -s -t 60");
again:
    printf("电脑将在1分钟内关机,如果输入:我是猪,就取消关机!\n请输入:>");//提示用户
    scanf("%s", input);
    if(0 == strcmp(input, "我是猪"))//strcmp为字符串比较函数,相同返回0
   {
        system("shutdown -a");
   }
    else
   {
        goto again;
   }
    return 0;
}

而如果不适用goto语句,则可以使用循环:

#include <stdio.h>
#include <stdlib.h>
int main()
{
    char input[10] = {0};
    system("shutdown -s -t 60");
    while(1)
   {
        printf("电脑将在1分钟内关机,如果输入:我是猪,就取消关机!\n请输入:>");
        scanf("%s", input);
        if(0 == strcmp(input, "我是猪"))
       {
            system("shutdown -a");
            break;
       }
   }
    return 0;
}

 本篇完。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值