购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

◎ ◎ ◎ ◎ ◎ ◎ ◎ ◎ ◎ ◎

1.4 人生就是不断地选择:if…else

在C++中,经常需要对一些条件做出判断,从而决定执行哪段代码,这时就需要使用选择结构语句。

1. if条件语句

if条件语句有三种语法格式,如下图所示。

(1)if语句——单分支结构,如下图所示。

(2)if…else语句——双分支结构,如下图所示。

(3)if语句的嵌套。在一个if语句中还可以包含一个或多个if语句,这叫作if语句的嵌套,如下图所示。

2. switch条件语句

除了if语句,switch条件语句也是一种常用的选择结构语句。和if条件语句不同,switch条件语句只能针对某个表达式的值做出判断,从而决定程序执行哪段代码。

注意,switch条件语句在执行完一个case之后不会自动停止,可以使用break语句停止;switch语句中的每一个case都必须是一个单独的值,该值必须是整数或字符,不能是浮点数。如果涉及取值范围、浮点数或比较,则先使用if…else转换。

训练1-5: 输入一个学生的成绩score,判断是否及格。

训练1-6: 输入一个学生的成绩score,判断其成绩等级(小于60为不及格,60~69为及格,70~79为中等,80~89为良好,90~100为优秀)。

训练1-7: 输入一个年份,判断其是闰年还是平年(非整百年:能被4整除的为闰年。整百年:能被400整除的是闰年)。

训练1-8: 输入一个整数,判断其是否为水仙花数。水仙花数是指一个3位数,它的各位数字的3次幂之和等于它本身。例如,3位数153是水仙花数,各位数字的立方和1 3 +5 3 +3 3 = 153。

训练1-9: 输入一个月份,判断该月份属于什么季节(在阳历中,3~5月为春季,6~8月为夏季,9~11月为秋季,12月至来年2月为冬季)。 RNiTO1CiLZKygA3Hto9TkyjyMBuM57QVI/+zkanfLFUVnus/imDsA1oyl8+UmTKB



◎ ◎ ◎ ◎ ◎ ◎ ◎ ◎ ◎ ◎

1.5 每天都有很多次重复:for/while

我们在实际生活中经常会将同一件事情重复做很多次。在C++中也经常需要重复执行同一代码块,这时就需要使用循环结构。循环结构包括for、while和do while语句。

1. for语句

for语句示例及其流程图如下图所示。

训练1-10: 输入一个整数 n ,输出1~ n 的所有整数。

1)调试程序

(1)工具→编译选项→代码生成/优化→连接器,在“产生调试信息”中将“no”改为“yes”。

(2)设置断点。

(3)单击菜单→运行→调试,按F5或者单击工具栏上的“√”可以开始调试。“X”用于停止调试。

(4)设置需要监控的对象。

(5)单步运行。

2)break语句

break语句指直接跳出所在的循环,流程图如下图所示。

训练1-11: 输入一个整数 n ,输出1~ n 的所有整数,遇到5时停止。

训练1-12: 输入一个整数 n ,输出 n 行1~ n 的整数(输出1~ n 的整数时遇到5停止)。

3)continue语句

continue语句指直接执行下一次循环,流程图如下图所示。

训练1-13: 输入一个整数 n ,输出1~ n 的所有整数,遇到偶数时不输出。

训练1-14: 输入一个整数 n (0< n <10),输出 n !。

训练1-15: 输出斐波那契数列第100项( F (1)= F (2)=1; F ( n )= F ( n -1)+ F ( n -2))。

2. while语句

while语句会反复地进行条件判断,只要条件成立,“{}”内的执行语句就会一直执行,直到条件不成立,while循环才会结束。其示例及流程图如下图所示。

训练1-16: 输入一个整数 n ,输出1~ n 的所有整数。

3. do while语句

do while循环语句先执行一次大括号内的代码再判断循环条件。

训练1-17: 输入一个整数 n ,输出1~ n 的所有整数。

for、while、do while语句三者的区别如下。

● while语句先判断循环条件,再决定是否执行循环体。

● do while语句先执行循环体,再判断循环条件,至少执行一次循环体。

● for语句在省略测试条件时,会认为条件为true。

● for语句可以用初始化语句声明一个局部变量,while语句则不可以。

● 如果在循环体中包含continue语句,则for语句会跳到循环更新处,while语句会跳到循环条件处。

● 在无法预知循环次数或者循环更新不规律时,用while语句。

训练1-18: 输入一个整数 n ,输出1~ n 的所有整数。

训练1-19: 输入一个整数 n ,输出1~ n 的所有整数。

训练1-20: 输入一个整数 n ,输出1~ n 的所有整数,跳过3的倍数。

训练1-21: 输入一个大于1的整数 n n <100),若 n 为奇数,则 n 变为3 n +1;否则 n 变为 n /2。经过若干变换, n 会变为1并停止,输出变换次数。

在无法预知循环次数或者循环更新不规律时,用while语句。 lAvdjGym/8tDBkZpfVKQeFiLdSDWz+C4NCVsdeqUuPFXwgLEHrm5T9l8UnrAmO+N



◎ ◎ ◎ ◎ ◎ ◎ ◎ ◎ ◎ ◎

1.6 如何轻松写一个函数

函数是对实现某一功能的代码的模块化封装,其定义如下:

1. 标准函数

训练1-22: 输入 n 对整数 a b ,输出它们的和。

如果前面有函数原型声明,则可以将函数定义放在被调用函数之后。

2. 无返回值函数

如果没有返回值,则返回值类型为void。

训练1-23: 输入 n ,输出1~ n 的所有整数(无返回值)。

3. 无参数函数

训练1-24: 输入 n ,如果 n 为10的倍数,则输出3个“very good!”。

4. 传值参数函数

传值参数在函数内部的改变出了函数后无效。

训练1-25: 输入两个整数 a b ,交换后输出。

5. 引用参数函数

引用参数在参数前加“&”符号,引用参数在函数内部的改变出了函数后仍然有效。

训练1-26: 输入两个整数 a b ,交换后输出。

6. 数组参数函数

训练1-27: 输入 n 个整数并将其存入 a []数组,求和后输出和值。

7. 字符串参数函数

训练1-28: 输入 n 个字母,如果是小写字母,则将其转换为大写字母,输出转换后的字符串。

8. 函数嵌套

训练1-29: 输入两个整数 a b ,求这两个整数的最大公约数和最小公倍数。

9. 函数重载

函数重载(多态)指有多个同名函数,但是每个同名函数的参数数量、类型、顺序不同。

训练1-30: 写一个函数,对于字符串类型的数据,取其长度的一半;对于浮点数类型的数据,取其值的二分之一。

10. 函数模板

训练1-31: 输入两个数 a b (整数或者浮点数),求这两个数的和值。

练习:

(1)输入10个学生的程序设计成绩,将其存储在数组中,写3个函数,分别输入、显示和计算平均成绩。

(2)一直输入两个数,直到其中一个为0,对每两个数都求它们的调和平均数。调和平均数=2× x × y /( x + y )。 lAvdjGym/8tDBkZpfVKQeFiLdSDWz+C4NCVsdeqUuPFXwgLEHrm5T9l8UnrAmO+N

点击中间区域
呼出菜单
上一章
目录
下一章
×