一、实验目标
- 能够运用计算思维分析解决简单的实际问题。
- 能够熟练应用
while、do...while和for语句的基本语法和执行流程。 - 能够在 VS2010 开发环境中综合运用循环结构编写较强功能的程序。
二、知识回顾
1. 循环的四要素
- 循环体:重复执行的核心操作。
- 循环初始条件:初始化循环控制变量。
- 循环控制条件:构建循环控制表达式。
- 循环控制变量的修改:构建循环退出机制,避免死循环。
2. 三种循环语句
(1)while 循环
-
语法:
while (表达式) { 循环体; } -
特点:先判断后执行,循环体执行次数为 0 到多次。
(2)do...while 循环
-
语法:
do { 循环体; } while (表达式); -
特点:先执行后判断,循环体至少执行一次。
(3)for 循环
-
语法:
for (表达式1; 表达式2; 表达式3) { 循环体; }表达式1:初始化循环变量。表达式2:循环控制条件。表达式3:更新循环变量。
-
特点:结构紧凑,适合已知循环次数的情况。
3. 循环注意事项
- 循环控制变量必须在循环开始前初始化。
- 循环体内必须有修改控制变量的语句,确保循环能正常终止。
- 避免死循环:确保循环条件最终能变为假。
- 若进入循环前条件为假,则循环体一次也不执行(
while和for)。
三、实验内容与实现
1. 实验1:统计字符串中各类字符个数
- 要求:输入一行字符,统计英文字母、空格、数字和其他字符的个数。
- 实现方法:
- 使用
while((c = getchar()) != '\n')逐字符读取。 - 使用
if-else结构判断字符类型并计数。
- 使用
- 扩展:可分别统计大写字母、小写字母、数字、空格等。
2. 实验2:输出所有“水仙花数”
- 定义:一个3位数,其各位数字的立方和等于该数本身,如 (153 = 1^3 + 5^3 + 3^3)。
- 实现方法:
- 方法一:遍历100到999的所有数,分解出各位数字,判断是否满足条件。
- 方法二:使用三重循环遍历百位、十位、个位,组合成三位数进行判断。
- 输出:153、370、371、407。
3. 实验3:猴子吃桃问题
- 问题描述:猴子每天吃前一天剩下的一半又一个,第10天只剩1个,求第一天摘了多少桃子。
- 解决方法:逆向推导,从第10天开始往前推:
- 第10天:1个
- 第9天:(1 + 1) × 2 = 4个
- 通用公式:(前一天 = (当天 + 1) × 2)
- 扩展:若每天吃前一天剩下的一半又两个,结果会不同。
4. 实验4:牛顿迭代法求方程的根
- 方法:利用切线逼近方程的根。
- 迭代公式:(x_{n+1} = x_n – \frac{f(x_n)}{f’(x_n)})
- 终止条件:(|x_{n+1} – x_n| < \varepsilon)
- 示例方程:(2x^3 – 4x^2 + 3x – 6 = 0)
- 实现:使用
do...while循环进行迭代,直到满足精度要求。 - 扩展:可修改初始值、输出迭代次数和每次迭代结果,分析不同初始值对迭代收敛的影响。
四、重点与难点
重点
- 循环结构的构建。
- 三种循环语句的语法与使用。
- 循环与选择结构的结合运用。
难点
- 实际问题中循环要素的判定与设计。
- 循环嵌套的逻辑理解与实现。
- 迭代算法的设计与实现(如牛顿迭代法)。
五、思考题
- 如何灵活中断循环的执行?举例说明(如使用
break、continue)。 - 多重循环语句的执行过程是怎样的?内外层循环如何协同工作?