返回 课程
信奥AC之路-1级
0% 完成
0/0 步骤
-
第1课 开发环境与基础输出5 主题|小节
-
第2课 算术运算符7 主题|小节
-
第3课 printf与运算输出7 主题|小节
-
第4课 数的进制与拆位6 主题|小节
-
第5课 变量与基础运算17 主题|小节
-
第6课 常量与取整运算8 主题|小节
-
第7课 关系运算8 主题|小节
-
第8课 逻辑运算9 主题|小节
-
第9课 输入与计算进阶10 主题|小节
-
第10课 if语句及双分支语句8 主题|小节
-
第11课 if语句及双分支进阶11 主题|小节
-
第12课 三目运算9 主题|小节
-
第13课 多分支、多if和switch语句11 主题|小节
-
第14课 循环(基本输出)7 主题|小节
-
第15课 循环(While+If)8 主题|小节
-
第16课 循环(计数、求和、求乘积)10 主题|小节
-
第17课 循环进阶(While+)8 主题|小节
-
第18课 do-while及while其他用法8 主题|小节
-
第19课 For循环基础9 主题|小节
-
第20课 For循环进阶8 主题|小节
课 进展
0% 完成
“小朋友们,” 我拿起粉笔,在黑板上写下数字123,”猜猜这个数字是怎么组成的?”
小明举手说:”我知道!是1个百位、2个十位、3个个位!”
“答对了!让我们来看看如何用程序拆解数字。”
4.1.1 拆位原理
[图片:展示拆位过程的示意图,显示如何从一个多位数中提取各个位]
一个十进制数可以通过除法和求余来拆分:
- 除以10得到商,就去掉了个位数
- 除以10得到余数,就得到了个位数
// 拆解数字1234的过程
printf("个位数是%dn", 1234 % 10); // 输出:4
printf("十位数是%dn", 1234 / 10 % 10); // 输出:3
printf("百位数是%dn", 1234 / 100 % 10); // 输出:2
printf("千位数是%dn", 1234 / 1000); // 输出:1
拆位原理总结
- 拆位基本公式:
// 对于数字1234
printf("%dn", 1234 % 10); // 得个位:4
printf("%dn", 1234 / 10 % 10); // 得十位:3
printf("%dn", 1234 / 100 % 10); // 得百位:2
printf("%dn", 1234 / 1000); // 得千位:1
-
拆位金钥匙:
- 除几个0,就去掉后面几位
- 要得到某位,先除掉后面的位,再取余10
- 要得到后几位,就除以相应位数取余
-
常见应用示例:
// 拆解日期20231225
printf("%dn", 20231225 / 10000); // 2023(年)
printf("%dn", 20231225 / 100 % 100); // 12(月)
printf("%dn", 20231225 % 100); // 25(日)
// 拆解成绩12345
printf("%dn", 12345 / 10000); // 万位:1
printf("%dn", 12345 % 10); // 个位:5
printf("%dn", 12345 / 100 % 10); // 百位:3
-
核心要点:
- % 10:得到最后一位
- / 10:去掉最后一位
- 先除后余:得到中间某位
- 除几个0:去掉后面几位
-
易错提醒:
- 除法自动舍去小数部分
- 除和求余的顺序不能换
- 每次运算都要写完整的算式
- 写代码时不要省略任何一步
-
选择题:要得到数字5678的十位数,应该使用以下哪个表达式?
A. 5678 % 10
B. 5678 / 10
C. 5678 / 10 % 10
D. 5678 % 100
正确答案:C
解析:先除以10去掉个位,再对10求余得到新的个位(即原数的十位)
- 判断题:对一个数除以10,可以去掉这个数的个位数。
正确答案:√
解析:整数除法会自动去掉小数部分,所以除以10后就去掉了个位数。