课程首页 › 第2部分 › 第16课

第16课 条件有点多

第2部分 智能的开始 · 选择结构· 知识点:多if组合

条件有点多(多if组合)

有了if语句,很多计算判断和程序侦测就能实现自动化。数学中有很多有趣的数字(雷劈数、完全数、水仙花数……),之前都是苦苦计算的,现在只需要编写程序,让if进行判断就可以快速确定。

先来试试水仙花数(水仙花数是指一个三位数,各位上的数字的3次幂之和等于它本身。例如:13+53+33=153。)

水仙花数

结合百、十、个位的数字拆分算法,运用次方计算判断输入的数字是不是水仙花数。

插图
插图

运行程序:

请输入要判断的数字:153

153是水仙花数!

如果没有输出,那么说明这个数字不是水仙花数。

(1)pow()函数用于计算一个数的次方。pow(1,3)表示计算1的3次方。pow(double base, double exponent)函数接收两个参数:base是底数,exponent是指数。它返回base的exponent次幂的结果,返回值是一个double类型的浮点数。

(2)sum=pow(units Digit,3)+pow(tensDigit,3)+ pow(hundredsDigit,3):将各位数的3次方加起来。

(3)num==sum:比较数字num和sum,如果二者相等,那么num就是水仙花数。

插图

判断奇偶数

一个if只能针对一种情况进行判断,当出现多种情况应该怎么办呢?例如:要区分奇偶数,需要将两种情况分开判断。

运行程序:

①请输入要判断的数字:6

6是偶数!

②请输入要判断的数字:9

插图

9是奇数!

优良中差

输入考试成绩评定优良中差,考试分数范围是0~100,假设低于60分为不及格,大于或等于60分为及格,大于或等于70分为中等,大于或等于80分为良好,大于或等于90分为优秀。

编写一个程序,输入得分,输出成绩对应的评定。

插图

多次运行程序并输入不同的分数,注意观察程序的输出情况,并分析为什么。

(1)用户的输入通常比较随意,所以在输入时需要考虑一些错误情况。例如:分数必须大于或等于0,且小于或等于100。

插图

(2)通过多个if对分数进行判断,但是输出结果有些奇怪。当我输入分数96时,程序输出了优秀、良好、中等、及格,其实我只想它输出优秀。

输入得分:96

优秀良好中等及格

提出思考

96分符合多种情况,因此会一一输出。如果每次判断后都调整输出内容,最后只输出一次,结果又会如何?

插图
插图

运行程序:

输入得分:96

及格

插图

敲黑板

逐一分析:

①因为96<100,所以直接跳过下面代码。

插图

②因为96>90,符合条件,所以level变成“优秀”。

插图

③因为96>80,符合条件,所以level变成“良好”。

插图

④因为96>70,符合条件,所以level变成“中等”。

插图

⑤因为97>60,符合条件,所以level变成“及格”。

插图

⑥后续不符合条件。

所以最后level变成“及格”,输出结果是“及格”。

从90到60,相当于一层一层地降级,如果把条件倒过来,那么条件就会一层一层地升级。

插图
插图
插图

(1)将不符合的分数条件排除。

(2)将分数判断倒过来,按照之前的推理过程,分数只需要往后满足条件,level就会被重新赋值。

运行程序:

输入得分:96

优秀

尝试看看程序是否还有其他问题。

巩固练习

(1)以下对408这个数字描述正确的是()。

A.是奇数

B.是偶数

C.是水仙花数

D.是二进制

(2)阅读以下程序,写出程序的输出结果。

插图
插图

输出:

(3)不断输入数字,计算出输入的数字中偶数的数量。