【GESP 二级 C++ 学案】数位和计算


C++数位和计算学案

适用对象:掌握C++基础语法(变量、循环、输入输出)的学生
学习目标

  1. 理解数位和的概念与计算方法。
  2. 掌握通过循环和取模运算分解数字的技巧。
  3. 能独立编写程序解决数位和相关问题。

一、知识准备

1. 什么是数位和?

数位和是指一个整数每一位上的数字相加的结果。
示例

  • 输入 123,数位和为 1 + 2 + 3 = 6
  • 输入 2024,数位和为 2 + 0 + 2 + 4 = 8
2. 核心算法思路
  • 步骤1:通过 % 10 取出当前数字的最后一位。
  • 步骤2:通过 / 10 去掉最后一位,逐步缩小数字。
  • 步骤3:循环直到数字变为0。

二、基础代码实现

任务1:计算正整数数位和

代码模板

#include <iostream>  
using namespace std;  

int main() {  
    int num, sum = 0;  
    cout << "请输入一个正整数:";  
    cin >> num;  

    // 循环分解每一位并累加  
    while (num > 0) {  
        sum += num % 10;  // 取出最后一位  
        num /= 10;        // 去掉最后一位  
    }  

    cout << "数位和为:" << sum;  
    return 0;  
}  

关键问题思考

  1. 如果输入 0,程序会输出什么?如何改进代码?
  2. 如果输入负数,程序会出错吗?为什么?

三、进阶挑战

任务2:处理负数和零

改进要求

  • 若输入负数,取其绝对值计算数位和。
  • 若输入 0,直接输出 0

代码修改提示

// 在输入后添加以下代码  
if (num < 0) {  
    num = -num;  // 转为正数  
} else if (num == 0) {  
    cout << "数位和为:0";  
    return 0;  
}  
任务3:判断数位和是否为7的倍数

问题描述:输入一个整数,若其数位和是7的倍数,输出 Yes,否则输出 No

代码框架

// 计算完sum后添加判断  
if (sum % 7 == 0) {  
    cout << "Yes";  
} else {  
    cout << "No";  
}  

四、综合练习

题目1:美丽数字判断

若一个正整数的数位和是7的倍数,则称为“美丽数字”。编写程序,输入一个整数,判断其是否为美丽数字。
输入示例

52  

输出示例

Yes  // 5+2=7  
题目2:大数处理

挑战:输入一个最多包含100位的正整数(以字符串形式读取),计算其数位和。
提示

string s;  
cin >> s;  
int sum = 0;  
for (char c : s) {  
    sum += c - '0';  // 字符转数字  
}  

五、常见错误与调试

  1. 死循环:忘记更新循环变量(如漏写 num /= 10)。
  2. 负数处理:未取绝对值导致结果错误。
  3. 字符转换错误:在大数处理中误用 int 直接存储超长数字。

六、学习总结

  1. 核心技能
    • 使用 % 10/ 10 分解数字每一位。
    • 通过循环累加实现数位和计算。
  2. 扩展应用
    • 数位和可用于验证码生成、数字谜题等问题。
  3. 自主探索:尝试用递归函数实现数位和计算。

七、课后作业

  • XOY-1022 【入门.练1】计算一个数的数位和
  • XOY-1023 【入门.练2】比较两个数的数位和
  • XOY-1021 【入门.练3】区间数位和
  • XOY-1024 【入门.练4】区间数位和总和
  • XOY-1025 【提高.练1】数位和为素数的数的个数
  • XOY-1026 【提高.练2】平方数的数位和最大值
  • XOY-1027 【提高.练3】等差数列的数位和总和
  • GESP2-241202 【真题练习】数位和
  • GESP2-230902 【真题练习】数字黑洞

学案说明: 学生可结合代码模板和问题引导逐步练习,通过调试和扩展任务深化理解。本文配套题目、题目数据及C++参考代码,有偿分享!
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

信奥大黄

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值