如何在C中输入非常大的数字(超过200位)?

时间:2016-10-09 12:38:58

标签: c bignum

我想在C中输入非常大的数字。我还想计算其数字的总和。有没有办法输入非常大的数字?

这是我的代码。

#include<stdio.h>
main() {
    int sum=0,rem;
    int a;
    printf("Enter a number:-");
    scanf("%d",a);
}

3 个答案:

答案 0 :(得分:0)

ANSI C C99中的最大类型是int的long long int。在C中无法直接使用200位数字,除非您将其视为char *并对其进行处理。

很抱歉,但您显示的基本代码段和&amp;你想要达到的目标实际上是非常遥远的另一个......如果你更具体一点,你想要什么样的计算可能会给你一个关于。

答案 1 :(得分:0)

有限制。有些编译器只有64位整数,有些则有128位。所以你不能使用这些整数类型。

您可以尝试使用GMP library。 GMP支持使用2^37 bits的64位构建整数。

答案 2 :(得分:0)

您可能不想将所有这200个数字加载到内存中。当你想要计算的只是数字的总和时,你在程序中需要的只是一些累加器变量,存储到目前为止的数字之和。此变量的类型可以是int,因为200 * 9 <= INT_MAX在符合C的实现时始终为true。

#include <stdio.h>

int main(void) {
    int accumulator = 0;
    int read_result;

    printf("Enter a number:-");

    while (1) {
        read_result = fgetc(stdin);

        if ('0' <= read_result && read_result <= '9') {
            accumulator += read_result - '0';
        } else {
            break;
        }
    }

    printf("The sum of the digits is %d", accumulator);

    return 0;
}