秋高气爽,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。