欢迎光临
我们一直在努力

第四周-循环应用

一、随机数的生成

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、成功

赞(0)
未经允许不得转载:171主机测评 » 第四周-循环应用
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址