当我达到17位数字时,我的代码将不再起作用

时间:2019-02-14 14:46:06

标签: c

我正在编写一个程序,该程序应该使用长整数,例如12345678901234567890并取总和 每个数字(在这种情况下为90)的数字和数字的MOD。但是当我尝试使用此数字时,总和有效,但MOD无效。

我已经尝试将我的变量放到实际上没有用的double中。正如您在输出中看到的那样,它会一直工作到第二个7,然后变为8,然后再添加随机数。

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int leesCijfer(void) {
    switch (getchar()) {
        case '0': return 0 ;
        case '1': return 1 ;
        case '2': return 2 ;
        case '3': return 3 ;
        case '4': return 4 ;
        case '5': return 5 ;
        case '6': return 6 ;
        case '7': return 7 ;
        case '8': return 8 ;
        case '9': return 9 ;
        default: return -1 ;
    }
}

int modulo9(double getal){
    double modulo9, negen;
    modulo9 = fmod(getal, 9);
    return modulo9;
}

int main(void) {
    double getal=0, modulo, cijfer, som=0, tien=10;
    printf("Type een groot getal:\n") ;
    do {
        cijfer = leesCijfer() ;
        if (cijfer != -1) {
            printf("%.0f " , cijfer);
            som = som + cijfer;
            getal = (getal * tien) + cijfer;
            printf("%.0f\n", getal);
        }
    } while (cijfer != -1) ;
    printf("\nDe som is: %.0f\n", som);
    modulo = modulo9(getal);
    printf("Mod 9 is: %.0f\n", modulo);
    return 0 ;
    }

Type een groot getal:
12345678901234567890
1 1
2 12
3 123
4 1234
5 12345
6 123456
7 1234567
8 12345678
9 123456789
0 1234567890
1 12345678901
2 123456789012
3 1234567890123
4 12345678901234
5 123456789012345
6 1234567890123456
7 12345678901234568
8 123456789012345700
9 1234567890123457000
0 12345678901234569000

De som is: 90
Mod 9 is: 3

Process returned 0 (0x0)   execution time : 8.859 s
Press any key to continue.

0 个答案:

没有答案