1.主函数部分
int main() { srand((unsigned int)time(NULL)); int flog = 1; do { int t = rand() % 100 + 1; printf("请选择:"); scanf("%d", &flog); switch (flog) { case 1: printf("开始游戏"); break; case 0: printf("游戏结束!"); break; default: printf("选择错误,请重新输入:\n"); break; } } while (flog); return 0; }首先进入程序采用do·····while语句先执行一次选择是继续进行游戏还是结束游戏。将1设为开始游戏0设置为结束游戏,同时do····while的条件设为选择的flog,选择为0时结束循环。内部的switch语句的选择条件为flog三种情况如上。
2.随机数的生成
既然是猜数字,自然就要产生一个随机数来让玩家来猜,这里就需要一个产生随机数的函数,C语言中提供了一个rand()(0~32767)的函数来产生随机数,当然这个随机数是一个伪随机数,他产生的随机数是固定的,这时需要srand()来初始化rand的种子,这里我们用时间来作为种子,格式为time(NULL),再用一个变量来接收最终的随机数。
srand((unsigned int)time(NULL)); int t = rand() % 100 + 1;3.登录界面
void sum() { printf("***********************\n"); printf("****** 1: 开始 ********\n"); printf("****** 0:结束 ********\n"); printf("***********************\n"); }这里将登录界面封装成一个函数sum(),每次调用函数打印登陆界面,这里不需要返回值因此函数类型为void。
4.游戏界面
void Add(int t) { printf("游戏开始!%d\n", t); int count = 0; int a = 5; do { scanf("%d", &count); printf("还有%d次机会!\n", a); if (count > t) { printf("猜大了\n"); a--; } else if (count < t) { printf("猜小了\n"); a--; } else { printf("猜对了!\n"); break; } } while (a); if (a == 0) { printf("次数用完了!\n"); } }游戏部分将其封装为一个函数Add(),不需要返回值。如果前面随机数在主函数中产生的这里需要将随机数传到Add()中,然后创建一个变量来让玩家输入值来猜。这里循环采用do····while进入函数之后直接操作输入,不会让玩家进来后不知道做什么将玩家输入的数字与随机数比较判断猜大了还是猜小了或者猜对当猜对了就结束循环。当然这里加入了次数限制当猜大了或者猜小了都会减一同时输出剩余次数,do····while的条件就是次数,当次数为零时结束循环,这里要分辨是次数用完结束还是猜对了结束,最后可以再加入判断剩余次数。
if (a == 0) { printf("次数用完了!\n"); }这样就基本完成了猜数字功能。最后也不要忘记其他函数的头文件了哦。
下面是全部代码:
#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include<stdlib.h> #include <time.h> #include <windows.h> void Add(int t) { printf("游戏开始!%d\n", t); int count = 0; int a = 5; do { scanf("%d", &count); printf("还有%d次机会!\n", a); if (count > t) { printf("猜大了\n"); a--; } else if (count < t) { printf("猜小了\n"); a--; } else { printf("猜对了!\n"); break; } } while (a); if (a == 0) { printf("次数用完了!\n"); } } void sum() { printf("***********************\n"); printf("****** 1: 开始 ********\n"); printf("****** 0:结束 ********\n"); printf("***********************\n"); } int main() { srand((unsigned int)time(NULL)); int flog = 1; do { int t = rand() % 100 + 1; sum(); printf("请选择:"); scanf("%d", &flog); switch (flog) { case 1: Add(t); break; case 0: printf("游戏结束!"); break; default: printf("选择错误,请重新输入:\n"); break; } } while (flog); return 0; }