2016-10-09 10 views

答えて

0

おそらく200桁の数字をすべてメモリにロードしたくないでしょう。あなたが計算したいのは数字の合計です。あなたのプログラム中に必要なのは数字の和を格納するあるアキュムレータ変数今まではです。 200 * 9 <= INT_MAXは常にC.

#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; 
} 
+0

あなたの説明をありがとう... –

0

int型の場合、C99型はlong long intです。 C言語で200桁の数字を直接扱う方法はありませんが、char *として扱い、それについて作業しない限りはありません。

申し訳ありませんが、&を表示する基本的なコードスニペットは、あなたが到達したいと思う目的は、実際には非常に遠く離れています。もっと具体的には、あなたはおそらくあなたに手にする。

+0

Ah..reallyの実装を準拠にtrueになりますので、この変数の型は、intすることができ..?実際には、大きな数字の数字の合計を取得したいです。それを得るための簡単な方法はありますか? –

+0

もちろん:言われたように、あなたはscanf( "%d"、&a)を使ってEOFに達するまでそれを合計するか、別の方法でメモリへのポインタのすべての数字を取り出し、それらの合計を合計し始めます。 – DvTr

+3

@GayanthaAkalanka「大きな数字の数字の合計を得たい」 - あなたの質問には*非常に*重要な詳細が含まれています。ここのコメントには埋もれていません。それが*唯一の*目標(合計数字)であれば大きな数のライブラリは必要ありません。あなたがする必要があるのは、一度に1文字ずつ読み込まれ、数字の文字である限り、それらを '0..9 'から' int'に変換し、それらを実行合計に集計します。あなたの質問*と*のタイトルを更新してください。 – WhozCraig

0

制限があります。いくつかのコンパイラは64ビットの整数を持ち、128ビットのものもあります。したがって、これらの整数型は使用できません。

GMP libraryを試すことができます。 GMPは、2^37 bitsで64ビットの整数をサポートしています。

関連する問題