源代码
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<string.h>
#include<Windows.h>
void menu()
{
printf("##############################\n");
printf("### 1.play 2.exit####\n");
printf("##############################\n");
}
void game()
{
int num = 0;
int input = 0;
srand((unsigned)time(NULL));
num = rand() % 100 + 1; //产生1-100 之间的随机数
printf("请输入你猜的数字:\n");
scanf("%d", &input);
while (input != num)
{
if (input < num)
{
printf("猜小了!\n");
}
else if (input > num)
{
printf("猜大了!\n");
}
scanf("%d", &input);
}
printf("猜对了。\n");
Sleep(3000);
system("cls");
}
int main()
{
int select;
do
{
menu();
scanf("%d", &select);
switch (select)
{
case 1:game();
break;
case 2:
exit(0);
break;
default:
printf("输入有误!\n");
}
} while (1);
return 0;
}
简单分析
猜数字小游戏的过程相对来说比较好实现的,整体采用类似C语言实现通讯录小项目的结构,先写一个void menu()
函数提示用户进行选择操作。然后使用switch( )多分支选择语句,对用户的输入进行判断,在case 语句中通过函数调用实现相应功能,当用户输入选择1时,调用game()函数进入游戏,在game函数中调用srand()函数和rand()函数以时间为种子产生随机数,每一次执行程序的时间不同,所以可以产生不同的随机数,产生随机数的代码为:
srand((unsigned)time(NULL));
num = rand() % 100 + 1;
rand()函数,会根据提供给srand()的种子值返回一个范围在(0-32767)之间的随机数,对100取余的值范围为1-99,加一后产生的随机数范围为1-100。采用do while 循环当用户输入选择后,提示用户输入猜测的数字,将用户的输入与产生的随机数相比较,进而输入提示协助用户进行判断并输入相应的数字进行游戏。当用户猜对后,输出“猜对了”的提示,调用Sleep(3000);
休眠3秒后,使用system("cls");
进行清屏。然后弹出菜单,用户可选择输入1,继续游戏或者选择输入0,退出游戏。当用户输入的数字不是0或1时,执行default
后面的语句,提示输入有误!