2016-10-09 3 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 긴 긴 INT이다. char *로 취급하지 않고 C에서 200 자리 숫자로 직접 작업 할 수있는 방법은 없습니다.

미안하지만 기본 코드 조각 &이 표시하려는 목표는 정말 아주 멀리 떨어져 있습니다 ... 구체적으로 어떤 종류의 계산을 원하면 아마도 손을.

+0

Ah..really의 구현을 준수에 사실 때문에이 변수의 유형은, int 수 있습니다 ..? 실제로 나는 많은 수의 숫자를 얻고 싶습니다. 그것을 얻을 수있는 간단한 방법이 있습니까? –

+0

물론 : 말한 것처럼 scanf ("% d", & a)를 사용하여 EOF에 도달 할 때까지 합계를 계산하거나 다른 방법으로 메모리 포인터의 모든 숫자를 선택하고 모두 합산하기 시작합니다. – DvTr

+3

@GayanthaAkalanka "큰 숫자의 숫자 합을 얻고 싶습니다."- 매우 중요한 * 세부 사항이 귀하의 질문에 속합니다. 여기에 코멘트에 묻히지 않았다. 그것이 * 유일한 * 목표 (합계 자리수)이면 큰 번호의 라이브러리가 필요하지 않습니다. 여러분이해야 할 일은 한 번에 하나씩 chars를 읽는 것입니다. 그리고 숫자가 char 인 경우, 0..9에서'int'로 변환하고 실행 합계를 계산하면됩니다. * 및 * 제목을 업데이트하십시오. – WhozCraig

0

한계가 있습니다. 일부 컴파일러는 정수가 64 비트이고 일부는 128 비트입니다. 따라서 이러한 정수 유형을 사용할 수 없습니다.

GMP library을 사용해 볼 수 있습니다. GMP는 2^37 bits으로 64 비트 빌드 정수를 지원합니다.

관련 문제