要完成一个猜数字游戏首先我们要让电脑生成一个随机数,这时候我们就可以使用rand函数这个函数的作用就是返回一个随机数但如果不先配置随机数生成器那么就会出现一个问题就是就是每一次重新启动这个代码那么生成的随机数还是你上次游玩时的随机数,这就不够随机这时我们便要使用srand函数来配置随机数生成器但使用srand函数要运用一个不断在变化的值这时候我们便可以使用时间戳来配置,而c语言中time函数便可以返回一个时间戳。其中rand和srand函数需要头文件stdlib.h。time函数需要time.h。这就i是这个代码最难以实现的bufen。
#include<stdio.h> #include<stdlib.h> #include<time.h> void menu()//这里运用void的目的是我只是需要这个函数创建一个界面不需要它返回给主函数一个值。 { printf("****猜数字游戏****\n"); printf("****1.play******\n"); printf("****0.exit*******\n"); printf("*****************\n"); } void game() { int ret = rand() % 100 + 1;//因为rand函数生成的随机数范围为0至RAND_MAX 间过于大,模了100使范围变成了0到99加上一个1变成了1到100 printf("请猜数字:\n"); int guess = 0; while (1) { scanf("%d", &guess); if (guess<ret) { printf("猜小了\n"); } if (guess>ret) { printf("猜大了\n"); } if (guess == ret) { printf("恭喜你,猜对了\n"); break; } } } int main() { int input = 0; srand((unsigned)time(NULL));//因为在使用time函数时要给与它一个指针但我们不需要所以便传给它一个空指针同时由于srand函数需要的是unsigned数据类型的变化值所以我们还得让时间戳强制转换类型 do { menu();//这个就是简单的界面函数 printf("请选择:<"); scanf("%d", &input); switch (input) { case 1: game(); case 0: break; printf("退出游戏"); break; default: printf("选择错误,请重新选择"); break; } } while (input);//这里放input意思就是当你选择了0后便会终止循环退出游戏。 return 0; }
运行结果