C语言程序设计(四)顺序分支循环综合应用
训练编程思维,解决实际问题
编程能力精髓——“映射”能力
- 训练“映射能力”:把能想清楚的事情,映射到计算机语言的表达。
- 也就是把客观世界的事物及其变化过程,映射到计算机世界的变量和算法。
- 变量反应客观世界的事物,算法反应事物的变化过程。
1. 随机函数rand()和srand()函数
C库函数中系统提供了两个函数用于产生随机数:srand()和rand()。 原型为:
函数一:int rand(void);
返回一个[0,RAND_MAX]间的随机整数。
函数二:void srand(unsigned seed);
参数seed是rand()的种子,用来初始化rand()的起始值。
srand和rand()配合使用产生伪随机数序列。rand函数在产生随机数前,需要系统提供的生成伪随机数序列的种子,rand根据这个种子的值产生一系列随机数。如果系统提供的种子没有变化,每次调用rand函数生成的伪随机数序列都是一样的。srand(unsigned seed)通过参数seed改变系统提供的种子值,从而可以使得每次调用rand函数生成的伪随机数序列不同,从而实现真正意义上的“随机”。通常可以利用系统时间来改变系统的种子值,即srand(time(NULL)),可以为rand函数提供不同的种子值,进而产生不同的随机数序列

2. 用实验测量圆周率pi
蒙特卡罗方法-统计模拟方法
计算机模拟实验-随机函数


#define 标识符 常量
#define 标识符 常量
其中#define也是一条预处理命令(预处理命令都以"#"开头),称为宏定义命令(在后面预处理程序中将进一步介绍),
其功能是把该标识符定义为其后的常量值。一经定义,以后在程序中所有出现该标识符的地方均代之以该常量值。
习惯上符号常量的标识符用大写字母,变量标识符用小写字母,以示区别。
几点说明:
- 用标识符代表一个常量,称为符号常量。
- 符号常量与变量不同,它的值在其作用域内不能改变,也不能再被赋值。
- 使用符号常量的好处是:含义清楚;能做到“一改全改”。
探索未知问题的方法:
- 逻辑推理
- 实验与观察
- 计算模拟
3. 一孩半政策对男女比例的影响
第一胎生男孩不能再继续生
第一胎生女孩可以再生一胎

如果第二胎有5%人工性别选择干预,对男女平衡有多大影响

4. 奇偶归一猜想——未被证明

输入一个正整数,返回归一过程,并统计执行的步数

5. do while 和 break 语句###
do {}
while()
先执行,再判断,该循环至少执行一次。
break结束循环语句
当break语句用于do-while、for、while循环语句中时,可使程序终止循环而执行循环后面的语句,通常break语句总是与if语句联在一起,即满足条件时便跳出循环。
6. 抢最后一根火柴游戏###
共有30根火柴,甲乙两人依次取火柴,每次至少取1根,至多取两根,谁抢到最后一根,谁胜出。
设计一个机器和人玩的游戏
策略:
- 要抢到30,必须抢到27,要抢到27,必须抢到24,依次类推,需要抢到3的倍数根。
- 谁先拿谁不利
设计: - 让人选择谁先拿
- 机器选择的策略是
- 如果剩余火柴数%3==0,随机拿1或2根
- 否则拿剩余火柴数%3根
浙公网安备 33010602011771号