//猜数字游戏
#include <time.h>
#include <stdlib.h>
//void表示“无类型”,相应的void*为无类型指针,即1.对函数返回的限定;2.对函数参数的限定
//当函数不需要返回值时,必须用void限定 例如:void func(int a,char *b)
//当函数不允许接受参数时,必须使用void限定 例如:int func(void)
void menu()//先设置一个简易菜单
{
printf("*****************************\n");
printf("*** 1.play 0.exit ****\n");
printf("*****************************\n");
}
//random的范围为0-32767
//rand_max为32767
void game()//设置游戏内容
{
int ret = 0;
int guess = 0;
//1.生成随机数
ret = rand() % 100 + 1;//生成1-100的随机数;取模的范围为1-99,该代码+1是为了将范围扩大到100;使用rand函数得加上头文件<stdlib.h>
//2.猜数字
while (1)
{
printf("请输入数字:>");
scanf("%d", &guess);
if (guess > ret)
{
printf("猜大了\n");
}
else if (guess < ret)
{
printf("猜小了\n");
}
else
{
printf("恭喜你,猜对了!!!\n");
break;//跳出do while循环语句
}
}
}
int main()
{
srand((unsigned int)time(NULL));//unsigned int time是将time的类型进行修改为int(原为long);time(NULL)表示空指针;该代码是拿时间戳来设置随机数的生成起始点,且需要引用头文件<time.h>
//unsigned int为无符号整形,该类型只能表示大于等于0的值;signed int为带符号整形,该类型可以表示正数,负数或0
//在该游戏中,我们需要的是1-100的正整数,所以要表明unsigned
int input = 0;//设置一个输入的变量
do//do while循环是先执行循环体,再判断条件是否成立;而while语句是先判断条件是否成立,再执行循环体
{
menu();//引用菜单
printf("请选择:>");
scanf("%d", &input);//输入数字
switch (input)//switch分支语句
{
case 1://输入的数若为1,执行case 1,这里input为1,即判断do while循环语句为真,执行完游戏后再跳回do while循环语句
game();//执行游戏
break;//跳出switch语句
case 0://若输入的数为0,则执行case 2,input为0,则在do while循环语句中为假,即跳出do while循环,结束代码
printf("退出游戏\n");
break;
default://若输入两者之外的数,则执行default的情况
printf("选择错误\n");//这里input为非0,即do while循环语句判断为真,跳出switch语句后再进入do while循环语句
break;
}
} while (input);
return 0;
}
我注释的很清楚了吧。
标签:语句,do,游戏,int,void,作业,while,printf,数字 From: https://blog.51cto.com/u_16170479/6986629