2013-02-13 2 views
3

표준 입력에서 두 개의 숫자를 C로 문자열로 읽어야합니다. 그 합을 문자열로도 인쇄하려면 어떻게해야합니까? 나는 가지고있다 :두 숫자를 문자열로 추가하는 방법

char a[10],b[10]; 
printf("enter the two numbers"); 
scanf("%s%s",&a,&b); 
char sum[20]; 
sum=? 

작은 팁을 부탁한다. 감사합니다.

+0

snprintf (합계, ........); –

답변

1

chars은 더 작은 ints처럼 8 비트 이진수입니다. 우리는 그 (것)들을 편지로 의미를주기 위하여 해석해야한다.

귀하의 컴퓨터는 아마도 ASCII 표준을 사용하고있을 것입니다. ASCII에서 문자 0를 나타내는 char 값은 실제로 수치 0이없는 그것의 48 다행히 숫자는 모두 연속되도록 1 등,

char zero = '0'; 
printf("%d\n", zero); 
char one = '1'; 
printf("%d\n", one); 

> 48 
> 49 

(49 참고 그 %d 형식 printf의 플래그는 "정수로 해석"을 의미합니다.)

chars은 숫자이므로 수학으로 계산할 수 있습니다.

char one = '1'; 
int one_num = one - '0'; 
printf("%d\n", one_num); 

> 1 

지금, 당신은 소수점 자리 추가를 구현할 수 있으며, 당신처럼 수행하는 종이에 할 것. 그렇게 금지하지 않는 한

1

atoi을 사용하여 문자열을 숫자로 변환 한 다음 함께 추가 한 다음 printf와 같은 인쇄 기능을 사용하여 합계를 인쇄하십시오. this

+0

제안한 기능보다 strtol()이 더 좋습니다. 'strtol()'은 '바보 같은'입력이있을 때 잘 동작합니다. – pmg

+0

이것은 학교를 준비하는 데 필요한 문제 중 하나입니다. 정수로 변환 할 수 없습니다. 고마워요! – Viva

+1

오, 그래서 우리에게 숙제를하라고 요구하고 있습니다. 그건 정말 나쁘다. 이것이 학교용이고'atoi '를 사용할 수 없다면 아마도 ASCII 인코딩에 대해 가르쳐주고 싶을 것입니다. – Ameen

1

그냥 초등학교처럼 그것을 참조

는의 입력이 "... + ... 63 69"

9 + 3  = 2 and 1 to go 
6 + 6 + 1 = 3 and 1 to go 
... 
2

당신이 그것을 할 것처럼 프로그래밍이 작업을 수행했다 가정 해 봅시다 종이에. 작은 걸음을 내딛고 종이에 할 일없이 모든 단계를 분명하게 알려줍니다.

00111 
--------- 
    12345 
123456789 
--------- 
123469134 
  • 주의 다른 길이. 그 정보를 보관하려면 별도의 병이 필요합니다. 표준 함수를 사용하거나 문자열을 바이너리 0으로 끝내는 두 가지 길이를 찾아야합니다.
  • 추가하는 동안 뒤로가는 방법에 유의하십시오. 두 문자열 (char 배열)에 액세스하려면 두 개의 인덱스를 유지해야합니다.
  • 추가 숫자가 높은 숫자 인 5+9=14을 어떻게 처리하는지 확인하십시오. 다른 변수에서이를 유지해야합니다.

루프를 사용하십시오. 추가 한 후에는 전체 길이를 알고 왼쪽 가장자리로 옮겨야합니다. 우리는 길이를 미리 알지 못하기 때문에 sum 배열의 오른쪽 가장자리에서 대답을 적어두기 시작합니다. 이 점에 대해 어떻게 그리고 개선 할 수 있는지 생각하십시오.

2

, 그때 나는 다음과 같은 접근 것 :

  • 숫자로 입력 문자열 (들)을 변환합니다. 나는 strtol()을 시도 할 것입니다.

  • 는 문자열로 숫자에서 합계를 변환 번호

  • 를 추가합니다. 나는 snprintf()을 시도 할 것이다.

관련 문제