You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

多个数字按个位、十位、百位分别求和的C++代码是否正确可优化?

代码逻辑正确性校验

你给出的核心计算逻辑本身是正确的:

  • 个位求和通过%10取每个数字的个位再累加,计算规则正确
  • 十位求和通过/10 %10先移除个位再取余得到十位数值,计算规则正确
  • 百位求和通过/100 %10先移除后两位再取余得到百位数值,计算规则正确

但现有代码存在语法问题,无法直接运行:

  • 未定义变量a/b/c/d/e/f的类型和初始值,也未定义求和变量u/t/h的类型,编译会报错
  • 缺少C程序必需的main()入口函数
    *注意:如果输入数字包含负数,C
    中负数取余结果为负,需要先对数字取绝对值再计算数位和,否则结果会不符合预期*
优化建议
  • 避免硬编码固定数量的变量:如果后续需要计算更多数字的数位和,挨个罗列变量的写法冗余度极高,建议将待计算数字存入数组或vector容器,通过循环遍历完成计算
  • 支持多位数拓展:如果后续需要计算千位、万位的求和,可以嵌套循环实现,不需要单独为每一位写一行计算逻辑
  • 避免全局使用using namespace std;:工业级代码中该写法容易引发命名空间冲突,建议直接使用std::cout、std::vector等带命名空间的写法
  • 变量命名优化:将u/t/h改为unit_sum、ten_sum、hundred_sum这类语义化名称,提升代码可读性,降低后续维护成本
  • 输出格式补全:最后一行输出末尾补充换行符\n,避免不同终端输出时,末尾内容被命令行提示符覆盖

优化后完整可运行示例代码

#include <iostream>
#include <vector>
#include <cstdlib> // 用于取绝对值的abs函数

int main() {
    // 待计算的数字列表,可自由增减元素
    std::vector<int> nums = {123, 456, 789, 234, 567, 890, -111};
    int unit_sum = 0, ten_sum = 0, hundred_sum = 0;
    for (int num : nums) {
        int abs_num = abs(num);
        unit_sum += abs_num % 10;
        ten_sum += abs_num / 10 % 10;
        hundred_sum += abs_num / 100 % 10;
    }
    std::cout << "个位求和结果: " << unit_sum << "\n";
    std::cout << "十位求和结果: " << ten_sum << "\n";
    std::cout << "百位求和结果: " << hundred_sum << "\n";
    return 0;
}

内容的提问来源于stack exchange,提问作者James Alderney

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 02:06:03