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

C语言中无法用long long int读取300位数字,如何计算其各位之和

解决方法

对于超出整型存储范围的超长数字,直接用字符串存储即可,实现逻辑非常简单:

  • 用字符数组读取输入的300位数字,300位数字只需要301字节的数组空间(多留1位存储字符串结束符\0),完全不存在存储压力
  • 遍历字符串的每一位字符,利用ASCII码的连续性,将字符转为对应数字:数字字符c对应的整数值为c - '0'
  • 累加所有数字得到总和,300位数字的各位和最大为300 * 9 = 2700,用普通int类型存储完全足够,不会溢出
可运行示例代码
#include <stdio.h>
#include <string.h>

int main(void) {
    char num[301];
    int sum = 0;
    // 读取输入的数字字符串,加长度限制避免缓冲区溢出
    scanf("%300s", num);
    
    for (int i = 0; num[i] != '\0'; i++) {
        sum += num[i] - '0';
    }
    
    printf("%d\n", sum);
    return 0;
}
拓展说明

如果输入的数字可能携带正负号,只需要加一步判断即可:如果首字符是+或-,遍历从下标1开始即可,符号位不需要计入求和。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 21:24:03