设计目的
1、加深学生对该课程基础知识和基本理论的理解和掌握,培养学生综合运用所学知识独立
分析和解决问题的能力;
2、培养学生在计算机软硬件开发、理论计算、查阅资料等方面的能力,使学生逐步树立正
确的设计思想;
3、加强理论联系实际,培养学生科学严谨、实事求是的工作作风和勇于探索的创新精神。
任务描述
为了提高学生编程能力,请设计一款人机猜数游戏程序。该程序主要功能要求如下:
1、游戏开始时,先由计算机“想”一个四位数,然后让人猜这个四位数是多少。
猜数时,计算机先判断输入的四位数猜对几个数字,并且在猜对的这些数字中有几个位置是对的,将统计情况显示出来供猜数人参考;猜数人可据此提示继续猜数,直到猜对为止。2、猜对后,计算机显示本轮猜数一共猜了几次以及获得的分数;
分数计算公式如下:
次数<=3 计100分
5<次数<=10 计60分
3<次数<=5 计80分
10<次数计0分
3、一轮猜数游戏结束后,可重复玩,直到不想再玩为止:
4、开始每轮猜数游戏时,要保证计算机“想”的数和前面“想”的数不同;
5、游戏结束后,可查看每轮猜数历史记录(显示每次计算机“想”的数,人猜数所用次数
和得分)
设计要求
1、要求按照分析、设计、编码、调试和测试的软件开发过程独立完成本任务;
2、应用模块化编程思想。系统的各项功能分别用函数编写,并通过主函数调用实现其所有功
能。
3、系统完成的各项功能要求设计成一个菜单。开始运行程序时,先显示主菜单,然后用户通过菜单项选择操作完成相应操作。例如以下菜单形式:猜数游戏查看历史2竹退出系统请选择[11213]:
源码
void display_menu()
{
puts("1、猜数游戏");
puts("2、查看历史");
puts("3、退出系统");
puts("请选择[1/2/3]: ");
}
int get_choise()
{
int i;
CLS;
display_menu();
scanf("%d", &i);
CLS;
return i;
}
void game()
{
int flag = 1;
while (flag)
{
int num = get_random();
int step = 0;
puts("我准备好了一个数字,快来猜猜看吧!");
int g_num = -1;
while (g_num != num)
{
if (g_num != -1)
{
printf(g_num > num ? "大了" : "小了");
}
step++;
puts("请输入数字:");