练习背景:
学习并掌握了C语言的循环语句,选择语句,及少量函数知识。
游戏规则:
输入数字,程序会将输入的数字与生成的随机数比较,直到猜中为止。
运行展示:
补充知识:
1.rand()函数:使用该函数时需要包含头文件<stdlib.h>,以“种子”为基准用算法生成随机数的函数,范围0~~32767,种子默认为“1”,因此虽然会生成随机数,但每次程序运行时生成的随机数相同,如图
#include <stdio.h>
int main()
{
int r = rand();
printf("%d\n", r);
r = rand();
printf("%d\n", r);
r = rand();
printf("%d\n", r);
return 0;
}
为避免此类情况,我们需要用到srand()函数。
2.srand()函数:void srand (unsigned int seed);用来初始化随机数的生成器,详情参考srand - C++ Reference (cplusplus.com)https://legacy.cplusplus.com/reference/cstdlib/srand/?kw=srand。简单来说,函数中的seed种子如果变化,那么rand就会生成随机数,从而避免上述情况。但是让seed变化又是一个问题,这里就需要另一个函数time()。
3.time()函数:time_t time (time_t* timer);该函数用来返回当前日历时间,如果参数不为NULL,也会返回指定内存。使用该函数时需要包含头文件<time.h>,详情参考时间 - C++参考资料 (cplusplus.com)https://legacy.cplusplus.com/reference/ctime/time/?kw=time
代码编写:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void menu()//游戏菜单
{
printf("************************\n");
printf("******* 1.play *******\n");
printf("******* 0.exit *******\n");
printf("************************\n");
}
void game()//猜数字游戏
{
//1.生成随机数
int r = rand()%100+1;
//随机数1~~100
//2.猜数字
int guess = 0;
int court = 7;//增设机会,添加趣味性
while(1)
{
printf("请猜数字\n");
scanf("%d", &guess);
if (guess > r)
{
printf("猜大了\n");
}
else if (guess < r)
{
printf("猜小了\n");
}
else
{
printf("恭喜你,猜对了!\n");
break;
}
court--;
printf("还有%d次机会\n", court);
}
if(court == 0)
{
printf("很遗憾,机会用完了。\n");
}
}
int main()
{
int num = 0;
srand((unsigned int)time(NULL));
do
{
menu();//菜单
printf("请输入选择:");
scanf("%d", &num);//输入选择
switch(num)
{
case 1:
game();
break;
case 0:
printf("退出游戏\n");
break;
default:
printf("选择错误\n");
break;
}
} while (num);
return 0;
}
收获总结:
1.完成了一次循环和选择的应用实践。
2.了解了随机数函数以及time函数。
3.首次应用思维导图,首次进入c++网站查阅资料。