第11课 安排出游车辆
安排出游车辆(取余数)
秋高气爽,126位魔法小精灵准备集体秋游,需要旅游公司安排接送车辆。已知一辆大巴可以容纳20位小精灵,一辆商务车可以容纳6位小精灵。坐不满大巴的小精灵改乘坐商务车,算一算总共需要几辆大巴,几辆商务车。
思考分析
(1)运用除法先计算需要几辆大巴:126÷20=6.3,需要6辆大巴,余下6位小精灵。
(2)再计算需要几辆商务车:6÷6=1,只需要1辆商务车。
总共需要6辆大巴+1辆商务车。
安排车辆
很多时候编程问题就是一道应用数学题,只要我们将逻辑理清楚,遵从C++的语法将其转换成编程语言,问题就解决了。
运行程序,答案出来了:
需要大巴:6辆
需要商务车:1辆
提示
这里只是将思考逻辑转换成了程序语言,在实际安排车辆时,需要考虑商务车数量无法整除的情况,此时需向上取整,多安排1辆。

个、十、百位求和
输入一个三位数,计算出这个三位数中百位、十位、个位3个数字相加的和。
运行程序,输入一个三位数652,输出结果为:

6 + 5 + 2=13
提出思考
如何从三位数中拆出个、十、百位的数字呢?
●百位:将三位数除以100,只取商的整数部分,就是百位上的数字。num / 100,这是整数的除法运算,结果会丢弃小数部分,只保留整数部分。
●个位:将三位数除以10,得到的余数就是个位的数字。num % 10,使用%进行取余(求模)运算,得到num除以10的余数。
●十位:要取到十位上的数字,需要拆成两步。
(1)进行% 100运算。这个运算返回num除以100的余数,即十位上的数字和个位上的数字合在一起。
652 % 100=52(这里得到的52包含了十位上的数字和个位上的数字)
(2)接下来进行/10运算。这个运算将52除以10,得到的就是十位上的数字。

52/10=5(这里的5是十位上的数字)
划重点
printf("%d + %d + %d=%d",hundredsDigit,tensDigit,unitsDigit,sum),重点研究一下这行代码。
printf()允许按照一定格式输出内容。这里的%用于在格式字符串中插入指定的数据格式,它与后面的字母组合在一起,形成格式控制符。

printf("%d + %d + %d=%d",hundredsDigit,tensDigit,unitsDigit,sum)讲究参数依次对应,第一个%d对应后面第一个参数。
常见的一些格式控制符如下:
●%d:用于打印十进制整数(整数类型)。
●%f:用于打印浮点数。
●%s:用于打印字符串。
●%c:用于打印字符。
敲黑板
运用对比学习法,总结3种%的使用场景及其不同的含义。
●百分号%:在数学中,百分号%表示百分数。例如:这次考试的及格率只有60%。
●格式控制符%:在C语言中,%是一个特殊字符,用于格式化输出,通常与printf()函数一起使用。例如:printf("%d", num)。
●取模运算%:在编程中,%表示取模(取余)运算符。用于计算一个数除以另一个数后的余数。例如:10% 3结果是1。

倒过来的三位数
输入一个三位数num,然后将这个三位数倒过来生成一个新数字newNum,并且将新数字newNum输出。例如:123→321。

思考分析
将输入的三位数拆分出个、十、百位的数字,然后将个位的数字乘以100,加十位上的数字乘以10,再加百位上的数字,就是新数字了。
例如:123拆成1、2、3,新数字=3×100 + 2×10 + 1=321。


巩固练习
(1)程序中的哪个部分接收用户输入的数字?()
A.在变量声明部分
B.在printf函数中
C.在newNum +=num / 100;这一行
D.在cin>>num;这一行
(2)下面哪行代码正确地计算了原数字的百位数字?()
A.newNum=num % 10*100; B.newNum=num % 100 / 10*10; C.newNum=num / 100; D.newNum=num % 1000 / 100;(3)有这样一套加密规则,输入一个三位数,加密系统会将这个三位数的个位和十位对调,并在两个数字中间随机插入1个数字,得到加密密码。
例如:123加密→1302。
现在需要编写一个破解程序,输入四位数的加密密码,破解出原密码。
例如:2349解密→293。