作为一名编程初学者,最令人兴奋的时刻莫过于实现自己的第一个完整项目。今天,我们将一起手撕猜数字游戏,并逐步解析实现过程。这不仅能帮助你巩固 C 语言的基础知识,还能感受到编程的乐趣。
1.程序会随机生成一个 1 到 100 的整数,作为目标数字。 2.玩家需要不断输入猜测数字,程序会根据玩家的输入给出以下提示:
我们先来看看完整代码,再带着我们的疑问来抽丝剥茧。
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
void menu()
{
printf("*************************\n");
printf("***** 1.Play game *****\n");
printf("***** 2.Exit game *****\n");
printf("*************************\n");
}
void menu2()
{
printf("*****************************\n");
printf("***** 1.Continue game *****\n");
printf("***** 2.Exit game *****\n");
printf("*****************************\n");
}
void Game()
{
int input = 0;
int ret = rand() % 100 + 1;//随机生成1-100的数字
while (1) {
printf("请输入你要猜的数字(1-100)\n");
scanf("%d", &input);
if (input < ret) {
printf("猜小了!\n");
}
else if (input > ret) {
printf("猜大了!\n");
}
else {
system("cls");
printf("恭喜你!猜对了!!!\n");
break;
}
}
}
int main()
{
srand((unsigned int)time(NULL));// 设置随机数种子
int n = 0;
int flag = 0;
menu();//菜单1
while (1) {
scanf("%d", &n);//清屏
system("cls");
switch (n) {
case 1: {
Game();//实现猜数字
menu2();//菜单2
break;
}
case 2: {
flag = 1;
break;
}
default: {
printf("输入数据错误,请重新输入!\n");
break;
}
}
if (flag == 1) {
printf("成功退出游戏!\n");
break;
}
}
}srand((unsigned int)time(NULL)); // 设置随机种子
int target = rand() % 100 + 1; // 生成 1 到 100 的随机整数通过简单的条件判断 (if-else) 提示玩家目标值的范围,并在玩家猜中后退出循环。
if (input < target) {
printf("猜小了!\n");
} else if (input > target) {
printf("猜大了!\n");
} else {
printf("恭喜你!猜对了!!!\n");
break;
}使用 switch 让逻辑分支显得直观,尤其是在菜单选项较多时,可读性更高。如果改用 if-else,代码可能变得冗长。 在这里使用switch是更加合理的。
switch (n) {
case 1: {
Game();//实现猜数字
menu2();//菜单2
break;
}
case 2: {
flag = 1;
break;
}
default: {
printf("输入数据错误,请重新输入!\n");
break;
}
}这个小项目涵盖了随机数生成、循环控制和条件判断等基础知识,非常适合刚入门C语言的小伙伴们去学习。
希望你通过这篇文章,能轻松完成自己的猜数字游戏项目,并在此基础上不断优化和创新!如有错误或者不足的地方欢迎留言指正和建议!