一、随机数的生成
1、基础知识
- stdlib.h是 C 语言的 “通用工具箱”,提供内存、转换、随机数等基础工具函数,是 C 程序的核心依赖;
- time.h是专门处理时间戳、日期转换、计时等时间相关逻辑;
- 高频组合用法:stdlib.h的srand() + time.h的time() = 生成不重复的随机数,这是 C 语言随机数的标准写法。
2、实际运用过程中出现的问题

怀疑time没定义

定义time,且修改无符号,未见变化

修改定义time的方式,无变化

理解错误,srand,只执行一次,作为算子,不能赋值

time,括号里需要有值

time,括号里需要有值,0可以

time括号里需要有值,null也可以

成功
3、总结
最关键错误:用srand()直接生成随机数(完全用错函数)
- srand()的作用是设置随机数种子,它的返回值是void(无返回值),你试图用%100取余是完全错误的;
- 真正生成随机数的函数是rand(),必须先调用srand()设置种子,再调用rand()生成随机数。
次要错误:time()函数参数缺失
time()函数需要传入NULL作为参数(time(NULL)),你只写了time(),编译器会提示 “参数数量不匹配”,无法正确获取时间戳。
逻辑错误:种子设置后未调用生成函数
即使修正了time()的参数,srand((unsigned int)time(NULL))也只是完成 “种子初始化”,不会生成任何随机数,必须通过rand()来生成。
二、求平均数
1、输入值应放入循环前

现象:-1作为结束,实际输入两个数,但平均值却是(5+6)/3,循环次数多了。
改进措施:在循环前增加输入。
2、两次输入覆盖


现象:在while循环内先读取新值,再计数和累加,这会导致:
- 第一个输入的有效数字被直接覆盖,没有参与计算;
- 结束标志-1被错误地计入总和和计数中。
改进措施:将循环体内的输入语句放到累加后,即判断前。
3、成功





