本章分支结构的学习内容如下:
三、C语言中的分支与循环—if语句 (1)
三、C语言中的分支与循环—关系操作符 (2)
三、C语言中的分支与循环—条件操作符 与逻辑操作符(3)
三、C语言中的分支与循环—switch语句(4)分支结构 完
本章循环结构的学习内容如下:
三、C语言中的分支与循环—while循环 (5)
三、C语言中的分支与循环—for循环 (6)
三、C语言中的分支与循环—do-while循环 (7)
三、C语言中的分支与循环—break和continue语句(8)循环结构 完
三、C语言中的分支与循环—循环嵌套 (9)
三、C语言中的分支与循环—goto语句 (10) (完)
1.rand() 函数
 
rand() 函数在 C 语言中用于生成伪随机数。这个函数定义在 <stdlib.h> 头文件中,每次调用时会返回一个 0 到 RAND_MAX 之间的整数,其中 RAND_MAX 也定义在 <stdlib.h> 中,通常是一个相对较大的数(在多数系统上是 32767)。
rand() 函数在 C 语言中用于生成伪随机数。这个函数定义在 <stdlib.h> 头文件中,每次调用时会返回一个 0 到 RAND_MAX 之间的整数,其中 RAND_MAX 也定义在 <stdlib.h> 中,通常是一个相对较大的数(在多数系统上是 32767)。
1)基础语法
rand() 函数的基本语法很简单,它不需要任何参数,并返回一个伪随机数。
int randomNumber = rand();
2)使用 rand() 函数生成特定范围的随机数
 
通常,你可能需要生成一个特定范围内的随机数,比如 0 到 99。这可以通过取模操作符(%)来实现:
int randomNumber = rand() % 100; // 生成一个 0 到 99 之间的随机数
2.随机数种子 — srand()
 
rand() 生成的是伪随机数,这意味着如果你不设置随机种子,那么每次程序运行时生成的随机数序列都是相同的。为了每次都生成不同的随机数序列,我们使用 srand() 函数来设置随机数种子。
void srand(unsigned int seed);
通常,将当前时间作为种子:
#include <stdlib.h>
#include <time.h>srand((unsigned) time(NULL));
示例代码
下面是一个使用 rand() 和 srand() 函数的完整示例,程序中生成了 0 到 99 范围内的 5 个随机数。
这个程序首先包含了 <stdlib.h> 和 <time.h> 头文件,这些是使用 rand() 和 srand() 所必需的。在 main 函数中,首先调用 srand() 设置随机数种子,然后循环五次生成并打印随机数。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>int main() {// 设置随机数种子srand((unsigned) time(NULL));// 打印 5 个随机数for (int i = 0; i < 5; i++) {int randomNumber = rand() % 100;printf("%d ", randomNumber);}return 0;
}
3.注意事项
- rand()生成的是伪随机数,适合大多数基本需求,但不应用于安全相关或对随机性要求很高的场景。
- 如果不调用 srand()设置随机种子,每次程序运行时rand()函数生成的随机数序列都是相同的。
- 在一个程序中,srand()只需调用一次即可。频繁调用可能会导致随机性降低。
4.代码练习
游戏要求: 1. 电脑自动生成1~100的随机数 2. 玩家猜数字,猜数字的过程中,根据猜测数据的大小给出大了或小了的反馈,直到猜对,游戏结束
这个游戏将由以下部分组成:
- 生成随机数:电脑生成一个1到100之间的随机数。
- 用户输入:允许用户输入一个猜测的数字。
- 比较和反馈:程序将用户的猜测与随机数进行比较,并根据猜测的数字是大了还是小了给出反馈。
- 重复猜测:直到用户猜对数字,游戏结束。 解题步骤:
- 引入必要的头文件:stdio.h用于输入输出,stdlib.h和time.h用于生成随机数。
- 初始化随机数生成器:使用 srand(time(NULL))。
- 生成随机数:使用 rand() % 100 + 1生成1到100之间的随机数。
- 循环等待用户输入:使用 do-while循环。
- 读取用户输入:使用 scanf读取用户的猜测。
- 比较和反馈:使用 if-else语句判断用户输入与随机数的大小关系,并给出相应的提示。
- 猜中数字后结束游戏:当用户猜中数字时,退出循环,并恭喜用户。 #include <stdio.h> #include <stdlib.h> #include <time.h>int main() {int randomNumber, guess;// 初始化随机数生成器srand(time(NULL));// 生成1到100之间的随机数randomNumber = rand() % 100 + 1;printf("猜数字游戏开始!我已经选择了一个1到100之间的数字。\n");do {printf("请输入你的猜测:");scanf("%d", &guess);if (guess > randomNumber) {printf("太大了!再试试看。\n");} else if (guess < randomNumber) {printf("太小了!再试试看。\n");}} while (guess != randomNumber);printf("恭喜你,猜对了!数字就是 %d。\n", randomNumber);return 0; }