<C语言> 猜数字(猜不对就捣蛋!)(一)

       为了理解分支语句(选择结构)与循环语句(循环结构)如何使用及其应用场景,就浅浅写了一个猜数字游戏,当然光猜肯定很没意思!所以就小小恶搞了一下,猜不对就关机咯。在这里会在游戏中涉及到的相关内容内容做一个小小的讲解,也会涉及说到个人觉得难懂的地方。非专业,本文纯纯口语化,还处于薅狗毛努力学习C语言的状态,欢迎各位语法或专业术语等的纠错、补充与交流~

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<time.h>
#include<windows.h>
//调用函数
void menu();
void game();
int main()
{
	int choice = 0;
//设置随机值
	srand((unsigned int)time(NULL));
//设置关机时间
	system("shutdown -s -t 60");
	printf("注意电脑将在60秒内关机,若猜对数字则取消关机\n");
	printf("范围:0到200\n");
	Sleep(2000);
	menu();
	scanf("%d",&choice);
	switch(choice)
	{ 
	case 1:
//调用名为“game”的函数,开始游戏
		game();
		break;
	default:
		printf("hhh没想到吧你别无选择\n");
		game();
		break;
	}
	return 0;
}
void menu()
{
	while (1)
	{
		Sleep(2000);
		printf("请选择1(开始游戏)或0(退出游戏)然后回车\n");
		printf("----1.迫不及待了冲冲冲!(管你想不想)----\n");
		printf("骗你的没有0,只能硬着头皮玩hhhhhh\n");
		printf("大王~快来和妲己玩耍吧~\n");
		break;
	}
}
void game()
{
//设置随机数范围
	int r = rand() % 200 + 1;
	int guess = 0;
//死循环,如果猜不对数,就一直输出“请猜”,直到猜对,break跳出循环
	while (1)
	{
		printf("请猜:");
		scanf("%d", &guess);
		if (r > guess)
			printf("猜小了\n");
		else if (r < guess)
			printf("猜大了\n");
		else
		{ 
			printf("bingo!恭喜\n");
//取消关机
			system("shutdown -a");
			break;
		}
	}
}

刚开始运行出现如下:

后面游戏过程如下:

你别说还真别说!玩得我汗流浃背的!还真有点小紧张。。

                                                    接下来进入代码拆分讲解吧

一、if-else 语句

     if-else语句属于分支结构,意为“如果......就(执行语句),否则......就(执行语句)”,通常是在少量选择(3个以内)中做出一个选择

1.一般形式:

   if(表达式)

{

         语句1;

         语句2;

         语句3;

}

   else 

   {

           表达式;

   }

       每个大括号内可有一个或多个语句,含多条语句的必须要有大括号括起来!!!否则会传递错误的信息!!

tip:咱不做不合法的事啊......

        为什么期望的那句长大了没有打出来但下面那句就打出来了呢??那是因为,在没有大括号的时候,当 if 后面的表达式为真时,默认 if 后面第一句为条件成立时的执行语句,当输入18 ,18 < 22,不符合条件,不执行if后面的语句(默认为第一句“长大了”),而后面那句领证,无论条件真假都会被打印出来。正确代码如下:

如果不加大括号:

可见大括号的重要性~

2. 悬空 if 

     在此之前先看一段代码:

       啥都没输出这是为什么呢?如果有多个 if else 的话, else 总是跟离它最近的 if 匹配。上面的代码中,else 是和 第二个 if 匹配的,所以当第一个if 条件(a > b)不成立时,无法执行下面的 if-else 语句(第一关都过不了第二关当然也没办法啦)。如果希望else 和第一个 if 进行匹配,可做以下修改:

还是可见大括号的重要性~

       在游戏中,r是生成的随机值,然后就是我们猜的数与随机值大小的比较,记住!我们所猜的数只有大于或小于或等于随机值其中一种情况,不可能同时满足两或三种情况!!也就是最后的三条路中,我们只会选择一条走。

     

   二、switch语句

       switch语句属于选择结构的一种(总体有三种结构即:顺序,选择与循环),其应用场景就是当抛出多个(一般三个以上)选项让你选择时,用多次if-else略显累赘,在这时switch语句就是当下的不二之选啦。

1. switch后面的括号跟的是整型表达式或字符型,其他妖魔鬼怪退!退!退!

2. case:案例情况条件的意思,就是可供你选择的多个选择对象。case后面要先加空格再加整型常量表达式或字符型,所有整型常量表达式的值不能相等

3.  default 的使用:若整型表达式的值与整型常量表达式的值不相等就执行default语句,default语句可以省略,当整型表达式的值与整型常量的值不相等时什么都不执行。

4. case 语句与default语句没有顺序可言,但一般都把default写在最后。

5. 要养成在每个语句段后面都加 break 的好习惯,否则,当整形表达式与整型常量表达式相等时,不但执行相对应的语句段,还会执行后面的全部语句段(包括default)。

       而游戏中的整型常量表达式只有1,也就是说按了1游戏就会开始,但这里也设了个小小的陷阱,就是没有选择可言,就算不想玩游戏按了非1的数游戏也会开始。猜数,启动启动启动!!

    欢迎纠错与补充~

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值