本篇博客是自己学习C语言知识的总结,以写一篇猜数字小游戏进行巩固,代码如下所示:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int input = 0;
srand((unsigned int)time(NULL));//通过设置随机数的生成起点,使时间戳发生变化值 来使rand()生成随机数。整个工程只调用用一次
do
{ //打印菜单
printf("*************************\n");
printf("*********1.play**********\n");
printf("*********2.exit**********\n");
printf("*************************\n");
printf("请输入选项:");
scanf("%d", &input);
int r = rand() % 100 + 1; //生成随机数
int g = 0;
int count = 5;
switch (input)
{
case 1://玩游戏
while (count)
{
printf("请猜数:");
scanf("%d", &g);
if (r < g)
{
printf("猜大了\n");
count--;
if (count == 0)
{
printf("你用完了所有机会,游戏失败下次再来,正确数字是:%d \n", r);
break;
}
printf("你还有%d次机会\n", count);
}
else if (r > g)
{
printf("猜小了\n");
count--;
if (count == 0)
{
printf("你用完了所有机会,游戏失败下次再来,正确数字是:%d \n", r);
break;
}
printf("你还有%d次机会\n", count);
}
else
{
printf("恭喜你答对了\n");
break;
}
}
break;
case 2:
printf("退出游戏\n");
break;
default:
printf("输入错误,请再次选择\n");
break;
}
} while (input);
return 0;
}
这种写法就是一口气整完,代码层次看着就是有点没有结构化;下面将采用对代码进行模块化进行书写,见下文:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
/* 1.游戏菜单 */
void menu()
{
printf("*************************\n");
printf("*********1.play**********\n");
printf("*********2.exit**********\n");
printf("*************************\n");
}
/* 2.游戏规则制定 */
void game()
{
int r = rand() % 100 + 1; //生成随机数
int g = 0; //自己猜的数字
int count = 5; //猜数设置的机会
while (count)
{
printf("你一共有%d次机会猜数字\n", count);
printf("请猜数:");
scanf("%d", &g);
if (r < g)
{
printf("猜大了\n");
//count--;
}
else if (r > g)
{
printf("猜小了\n");
//count--;
}
else
{
printf("恭喜你答对了\n");
break;
}count--; //将count--放到分支结束 减少count--书写的次数
if (count == 0)
{
printf("你用完了所有机会,游戏失败下次再来,正确数字是:%d \n", r);
}
}
}
/* 3.主函数 */
int main()
{
int input = 0;
srand((unsigned int)time(NULL));//通过设置随机数的生成起点,使时间戳发生变化值 来使rand()生成随机数。整个工程只调用用一次
do
{
menu(); //调用menu()函数 打印菜单
printf("请输入选项:");
scanf("%d", &input);
switch (input)
{
case 1://调用game()函数 开始启动游戏
game();
break;
case 2:
printf("退出游戏\n");
break;
default:
printf("输入错误,请再次选择\n");
break;
}
} while (input);
return 0;
}
这样的板块设计可以说是通俗易懂,层次感比较好,能够帮助读者更好梳理代码的逻辑。