返回 课程

信奥AC之路-1级

0% 完成
0/0 步骤
  1. 第1课 开发环境与基础输出
    5 主题|小节
  2. 第2课 算术运算符
    7 主题|小节
  3. 第3课 printf与运算输出
    7 主题|小节
  4. 第4课 数的进制与拆位
    6 主题|小节
  5. 第5课 变量与基础运算
    17 主题|小节
  6. 第6课 常量与取整运算
    8 主题|小节
  7. 第7课 关系运算
    8 主题|小节
  8. 第8课 逻辑运算
    9 主题|小节
  9. 第9课 输入与计算进阶
    10 主题|小节
  10. 第10课 if语句及双分支语句
    8 主题|小节
  11. 第11课 if语句及双分支进阶
    11 主题|小节
  12. 第12课 三目运算
    9 主题|小节
  13. 第13课 多分支、多if和switch语句
    11 主题|小节
  14. 第14课 循环(基本输出)
    7 主题|小节
  15. 第15课 循环(While+If)
    8 主题|小节
  16. 第16课 循环(计数、求和、求乘积)
    10 主题|小节
  17. 第17课 循环进阶(While+)
    8 主题|小节
  18. 第18课 do-while及while其他用法
    8 主题|小节
  19. 第19课 For循环基础
    9 主题|小节
  20. 第20课 For循环进阶
    8 主题|小节
课 4, 主题|小节 2
进行中

4.1 十进制数字的拆位魔法

2025年9月22日
课 进展
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

拆位原理总结

  1. 拆位基本公式:
   // 对于数字1234
   printf("%dn", 1234 % 10);         // 得个位:4
   printf("%dn", 1234 / 10 % 10);    // 得十位:3
   printf("%dn", 1234 / 100 % 10);   // 得百位:2
   printf("%dn", 1234 / 1000);       // 得千位:1
  1. 拆位金钥匙:

    • 除几个0,就去掉后面几位
    • 要得到某位,先除掉后面的位,再取余10
    • 要得到后几位,就除以相应位数取余
  2. 常见应用示例:

   // 拆解日期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
  1. 核心要点:

    • % 10:得到最后一位
    • / 10:去掉最后一位
    • 先除后余:得到中间某位
    • 除几个0:去掉后面几位
  2. 易错提醒:

    • 除法自动舍去小数部分
    • 除和求余的顺序不能换
    • 每次运算都要写完整的算式
    • 写代码时不要省略任何一步
  3. 选择题:要得到数字5678的十位数,应该使用以下哪个表达式?
    A. 5678 % 10
    B. 5678 / 10
    C. 5678 / 10 % 10
    D. 5678 % 100

正确答案:C
解析:先除以10去掉个位,再对10求余得到新的个位(即原数的十位)

  1. 判断题:对一个数除以10,可以去掉这个数的个位数。

正确答案:√
解析:整数除法会自动去掉小数部分,所以除以10后就去掉了个位数。