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