Bootstrap

分支与循环8——goto语句与练习题2

 一、先给大家讲一下goto语句呗

goto语句,goto接一个对象,就会跳到那个对象那里去,如图,执行goto again后,回到到红色框again:后面,继续执行pritnf,完了之后又执行goto,成为一个死循环

edb80c8ed4a6425d816fe7d5ff104e58.png

 goto语句不要随便乱用,可以跳过多个循环,而break一次只可以跳过一个循环如图,多个for循环嵌套,假设遇到disaster的突发情况,就要跳出去解决,此时我就可以用goto语句一步到位,而break需要两次以上才可以跳出去

7fd396c50a7b40d2973377e48f49d90f.png

 二、练习

1、请设计一个猜数字的游戏,在1-100之间,先生成一个随机数,当输入想猜的数字,比随机数大时提醒,猜大了;比随机数小,提醒猜小了;正好猜中则结束这一轮游戏。(关于生成随机数可以参考我的下一篇博文——如何输出随机数

2、设计一个1min内让电脑关机的程序,如果在屏幕上输入“大哥”,就取消关机。

 三、答案

第一题(关于生成随机数下一节给大家讲,大家有不懂的直接评论区留言哈,私信也可以)

//生成一个随机数
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <time.h>          //用time函数时头文件
#include <stdlib.h>        //rand、srand函数头文件
void menu()                //设计一个菜单
{
	printf("**************************\n");
	printf("*******  1.play   ********\n");
	printf("*******  2.exit   ********\n");
	printf("**************************\n");
}
void game()                 //猜游戏函数
{
	int guess = 0;                 //初始化要猜测的数字
	int ret = rand()%100+1;        //最大32767,这个是一个规定,取一百的模后值为0-99,加一正好1-100
	while (1)                      //让循环永久成立,知道输入到要猜的数字
	{
		printf("请输入你要猜测的数字:>  ");
		scanf("%d", &guess);       //键盘输入要猜的数字
		if (ret < guess)           //输入的数字大了,继续猜
		{
			printf("猜大了\n");
		}
		else if (ret > guess)      //输入的数字小了,继续猜
		{
			printf("猜小了\n");
		}
		else if (ret == guess)    //猜中,跳出循环
		{
			printf("恭喜你猜对了\n");
			break;
		}
	}

}
int main()
{
	srand((unsigned int)time(NULL));   //配合rand使用,srand后面要unsigned int,这里直接强制转换
	int input = 0;                     //NULL表示空指针
	do
	{
		menu();
		printf("请选择:>");
		scanf("%d", &input);          //输入1/0才决定你玩不玩这个游戏
		switch (input)
		{
		case 0:
			printf("退出游戏");
			break;
		case 1:
			game();
			break;
		default :
			printf("输入信息有误\n");
			break;
		}
	} while (input);            //输入0时候,退出程序;输入一时可以开始游戏;输入其他数字时提示一下
	
	return 0;
}

第二题

system用于执行系统命令,shutdown -s -t 60 就是60s后关机的指令,shutdown -a 可以取消这个指令,记得打英文的双引号)

goto again就是回到again的那个地方后面,这里的goto也可以换成while。

strcmp用于比较字符串的内容,一样它会返回一个0的整型值,要用string.h的头文件

#define _CRT_SECURE_NO_WARNINGS 1
#include <string.h>
#include <stdio.h>
int main()
{
	char input[20] = { 0 };
	system("shutdown -s -t 60");         //执行一个系统指令格式如图,有空格要输入
again:
	printf("你的电脑将在60s内关机,输入大哥按回车,解除关机\n");
	scanf("%s", input);       
	if (strcmp(input, "大哥") == 0)
	{
		system("shutdown -a");           //取消关机的指令
		printf("老弟还得练");
	}
	else
	{
		goto again;                      //没有输入或是输入错误,回到again那里继续循环
	}
	return 0;
}

 

 

 

 

 

;