在C中代表大数字?

时间:2016-08-10 05:16:10

标签: c data-structures programming-languages

我如何用C长度高达100位或更多来表示(存储)大数字?

或者。,

有没有办法将一个系列存储在变量中(而不是数组,因为我必须自己创建一个系列数组)

1 个答案:

答案 0 :(得分:-1)

你可以通过将数字存储为字符串来实现,这里是一个例子,用于对那种反复数据的数字进行求和(它在c ++中,但应该很容易将其转换为c):

    string add (string &s1, string &s2){
    int carry=0,sum,i;

    string  min=s1,
    max=s2,
    result = "";

    if (s1.length()>s2.length()){
        max = s1;
        min = s2;
    } else {
        max = s2;
        min = s1;
    }

    for (i = min.length()-1; i>=0; i--){
        sum = min[i] + max[i + max.length() - min.length()] + carry - 2*'0';

        carry = sum/10;
        sum %=10;

        result = (char)(sum + '0') + result;
    }

    i = max.length() - min.length()-1;

    while (i>=0){
        sum = max[i] + carry - '0';
        carry = sum/10;
        sum%=10;

        result = (char)(sum + '0') + result;
        i--;
    }

    if (carry!=0){
        result = (char)(carry + '0') + result;
    }       

    return result;
}