网站后台的制作,公司网站要多大空间,海淀网站制作,中铁集团2021招聘信息分支和循环
练习#xff1a;猜数字游戏 游戏要求#xff1a; 1#xff1b;电脑自动生成1~100的随机数 2#xff1b;玩家猜数字#xff0c;猜数字的过程中#xff0c;根据猜测数据的大小给出大了或小了的反馈#xff0c;直到猜出#xff0c;游戏结束
随机数生成
函数…分支和循环
练习猜数字游戏 游戏要求 1电脑自动生成1~100的随机数 2玩家猜数字猜数字的过程中根据猜测数据的大小给出大了或小了的反馈直到猜出游戏结束
随机数生成
函数rand
int rand(void);rand函数会返回一个伪随机数这个随机数的范围是在0~RAND_MAX之间这个RAND_MAX的大小是依赖编译器上实现的但是大部分编译器上是32767 rand函数的使用需要包含一个头文件是:stdlib.h
那我们就测试一下rand函数这里多调用几次产生5个随机数: #include stdio.h#include stdlib.hint main(){printf(%d\n, rand()); printf(%d\n, rand()); printf(%d\n, rand()); return 0;
}生成了三个随机数 不过在运行一遍程序之后会发现得到的三个随机数依然是以上几个
这就说明有点问题
其实rand 函数生成的随机数是伪随机的伪随机数不是真正的随机数是通过某种算法生成的随机数。真正的随机数的是无法预测下一个值是多少的。而rand 函数是对一个叫 种子的基准值进行运算生成的随机数
之所以前面每次运行程序产生的随机数序列是一样的那是因为rand函数生成随机数的默认种子是1如果要生成不同的随机数就要让种子是变化的
因此在使用rand函数之前要调用一个srand函数设置随机的种子
函数 srand void srand (unsigned int seed);程序中在调用rand 函数之前先调用srand函数通过 srand函数的参数seed来设置rand函数生成随机数的时候的种子只要种子在变化每次生成的随机数序列就会变化
#define _CRT_SECURE_NO_WARNINGS
#include stdio.h
int main() {srand(1);printf(%d\n, rand());printf(%d\n, rand());printf(%d\n, rand()); return 0;
}当srand1时输出如下 如果使srand的参数值变化
#define _CRT_SECURE_NO_WARNINGS
#include stdio.h
int main() {srand(2);printf(%d\n, rand());printf(%d\n, rand());printf(%d\n, rand()); return 0;
}会发现数字发生了变化 time
在程序中我们一般使用程序运行的时间作为种子因为时间时刻在发生变化的 在C语言中有一个函数叫time就可以获得这个时间 需要头文件time.h
time函数原型如下:
time_t time (time_t* timer);time函数会返回一个时间戳 时间戳是一个数字是当前时间–计算机的起始时间1970-1-1000单位是秒
srand(unsigned inttime(NULL));//如果不想使用time函数的参数传递NULL就可以了生成a~b的随机数
rand()%(b-a1)a;代码如下
#define _CRT_SECURE_NO_WARNINGS
#include stdio.h
#include stdlib.h
#include time.h
//玩家玩一次后可以继续玩不需要退出游戏
//1.玩游戏
//0.退出游戏
void menu()
{printf(------------------------------\n);printf(------ 1.玩游戏 --------\n);printf(------ 0.退出游戏 ----------\n);printf(------------------------------\n);
}
void game()
{int guess 0;//游戏的实现//1.生成随机数int r rand()%1001;//2/猜数字while (1) {printf(猜数字:);scanf(%d, guess);if (guess r)printf(猜大了\n);else if (guess r)printf(猜小了\n);else{printf(恭喜你猜对了,随机数是%d\n, r);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;
}如果将猜的次数限制在5以内
代码如下
#define _CRT_SECURE_NO_WARNINGS
#include stdio.h
#include stdlib.h
#include time.h
//玩家玩一次后可以继续玩不需要退出游戏
//1.玩游戏
//0.退出游戏
void menu()
{printf(------------------------------\n);printf(------ 1.玩游戏 --------\n);printf(------ 0.退出游戏 ----------\n);printf(------------------------------\n);
}
void game()
{int guess 0;//游戏的实现//1.生成随机数int r rand()%1001;//2/猜数字int count 5;while (count) {printf(剩余%d次机会,count);printf(猜数字:);scanf(%d, guess);if (guess r)printf(猜大了\n);else if (guess r)printf(猜小了\n);else{printf(恭喜你猜对了,随机数是%d\n, r);break;}count--;}if (count 0)printf(五次机会使用完猜数字失败\n);
}
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;
}