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

如何实现支持100位及以上数字输入并完成各位求和的程序?

解决超大位数数字的各位求和问题

你的核心问题是用数值类型存储超大数字——哪怕是long long int,最多也只能存18位左右的十进制数,100位的数字早就超出它的存储范围了,输入时直接溢出,后续处理全错。改vector大小、换long long都没碰对根因。

正确的做法是把输入当作字符串处理,直接遍历每个字符转成数字求和,完全不需要用数值类型存整个数。修正后的代码如下:

#include <iostream>
#include <string>
using namespace std;

int main()
{
    string num_str;
    cin >> num_str; // 用字符串接收任意长度的数字输入

    int sum = 0;
    // 遍历字符串每一位
    for (char c : num_str) {
        int digit = c - '0'; // 字符转对应数字,比如'3'转成3
        cout << digit << endl; // 输出各位数字
        sum += digit;
    }

    cout << sum << endl;
    return 0;
}

顺便说下你原代码的其他问题:

  • 用pow计算10的幂是浮点运算,会有精度误差,比如pow(10, 20)可能不是精确的10^20,导致后续取位错误
  • 你只收集大于0的数字,输入里的0会被忽略,比如输入100,原代码只会处理1,求和结果完全错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 06:03:25