开始之前先推荐一篇博客:
C语言:素数求解的N种境界_碧瑶的博客呀-CSDN博客_素数求解的n种境界
然后开始今天的重头戏:猜数字游戏。
今天需要用到两个void函数,一个主函数。
我们先写一个菜单
void main() { printf("按下1开始游戏n"); printf("按下2退出游戏n"); }这就完成了一个简易菜单的设置,主函数中我们直接调用就行了。
紧接着我们写主函数
#includeint main() { int input = 0;//定义输入数 do { menu()//引用菜单,注意菜单要写在循环的内部这样每次循环才会重新调用菜单 printf("请选择"); scanf("%d",&input); switch(input) { case 1://这里的1和0其实是菜单中说的1和0 printf("选择正确"); break; case 0: printf("选择错误"); break; default: printf("输入错误"); break; } }while(input);//这里注意 do while 循环的书写方式 return 0; } 主程序的书写就完成了。
之后我们还要在case 1 处引用一个game,来作为游戏的主要部分。
void game() { //首先我们要一个随机数,在C语言中如何产生随机数呢?我们可以用rand函数 int r = rand; }打开MSDN,我们在这里看到rand使用之前还需要加一个srand来对它进行定义,怎么定义呢,直接srand加上括号就行了。
void game() { srand(1) int r = rand; }可是这样会发现只有随着srand的变化,rand的值才会发生变化。如何将srand随机化呢?我们这里就要用到时间戳这一概念了。时间戳是当前时间与计算机起始时间之间的差值,我们在此引用时间戳。
void game() { srand(time(NULL)) int r = rand; }MSDN上面写道,time_t * 说明这是一个指针,让其返回空值那么就可以输出一个数字。
类型转换后,代码变成
srand((unsigned int)time(NULL));为了避免每一次都要重新同步时间戳,把这行代码放进主函数里面,这样子就可以让产生的数字真正随机。
之后的游戏部分就十分简单
int guess = 0; while (1) { printf("猜数字"); scanf("%d", &guess); if (guess > r) { printf("大了n"); } else if (guess < r) { printf("小了n"); } else { printf("恭喜恭喜你猜中了 (*^▽^*) n"); break;
整个程序就完成了
#include#include void menu() { printf("按下 1 开始游戏 n"); printf("按下 0 结束游戏 n"); } void game() { int r = rand() % 100 + 1;//rand max 为0-32767 int guess = 0; while (1) { printf("猜数字"); scanf("%d", &guess); if (guess > r) { printf("大了n"); } else if (guess < r) { printf("小了n"); } else { printf("恭喜恭喜你猜中了 (*^▽^*) n"); break; } } } int main() { int input = 0; srand((unsigned int)time(NULL)); do { menu(); printf("请选择:"); scanf("%d", &input); switch (input) { case 1: game(); break; case 0: printf("退出游戏"); break; default: printf("选择错误"); break; } } while (input); return 0; }



