第四讲:分支与循环(下)
写自己的东西 不要做留声机 不要做写满字的纸 要做孤天的鹤 ——24.8.5
学点有趣的玩意 比如 制作一个猜数字游戏
1.随机数生成
rand函数 此函数可以用来生成随机数
int rand(void);
rand函数需要包含stdlib.h的头文件
rand函数会返回一个伪随机数 随机数的范围是0~RAND-MAX之间
rand函数的默认种子是1 如果要生成不同的随机数 要让种子是变化的
srand函数 可设置生成随机数的种子 只要种子变化 那么随机数就是变化的
void srand(unsigned int seed)
要让种子变化 那我们需要找一个变量 我们一般用时间作为种子 因为时间是时刻变化的
即运用time函数 运用time函数需要包含头文件time.h
time返回1970年1月1日0时0分0秒到程序运行时间之间的差值 单位是秒 返回的类型是time-t
那我们可以让生成随机数的代码改写成如下:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
//使用time函数的返回值设置种子
//因为srand的参数是unsigned int类型,我们将time函数的返回值强制类型转换
srand((unsigned int)time(NULL));
printf("%d\n",rand());
printf("%d\n",rand());
printf("%d\n",rand());
printf("%d\n",rand());
printf("%d\n",rand());
return 0;
}
srand函数不需要频繁调用 一次程序调用一次
如果我们要生成0~99之间的随机数 方法如下
rand()%100;//余数的范围是0~99
如果我们要生成1~100之间的随机数 方法如下
rand()%100+1;//%100的余数是0~99,0~99的数字+1,范围是1~100
如果我们要生成100~200之间的随机数 方法如下
100+rand()%(200-100+1)
//余数的范围是0~100,加100后就是100~200
如果我们要生成a~b的随机数 方法如下
a+rand()%(b-a+1)
2.猜数字游戏实现
#define _CRT_SECURE_NO_WARNINGS 1
#include <time.h>
#include<stdio.h>
#include<stdlib.h>
void game()
{
int r = rand() % 100 + 1;
int guess = 0;
while (1)
{
printf("请猜数字>:");
scanf("%d", &guess);
if (guess < r)
{
printf("猜小了\n");
}
else if (guess > r)
{
printf("猜大了\n");
}
else
{
printf("恭喜你,猜对了\n");
break;
}
}
}
void menu()
{
printf("*********************\n");
printf("*******1.play********\n");
printf("*******0.exit********\n");
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("游戏结束\n");
break;
default:
printf("选择错误,重新选择\n");
break;
}
} while (input);
return 0;
}