본문 바로가기
Programming/C

[C언어] 문자열에 포함된 정수들의 합

by jerry_kang 2021. 1. 4.

문제

영어와 정수를 포함한 문자열을 입력받고, 문자열에 포함된 정수들의 합을 구하시오.

(문자열의 길이는 10을 넘지않는다.)

 

입력 예시

ab23

 

출력 예시

5

 

10개 이하의 문자열을 입력받고 그 안에서 숫자를 찾아 전부 더해서 출력하면 된다.

이때, 문자를 숫자로 변환하는 코드가 필요한데,

 

C언어에서는 문자끼리 연산하게되면 그 문자의 아스키코드 값으로 연산이 이루어 진다.

 

예를 들어 "3"(51)  - "1"(49)  는 2이다.

 

"3" 이 "1" 보다 아스키 코드 상으로 2칸 앞에 있기 때문인데 이를 이용해서 우리는 문자를 숫자로 변환할 수 있다.

 

기존 (문자 N) - (문자 0) 의 연산을 진행하게되면 문자 N과 문자 0의 아스키 코드상의 차이값이 나오게 된다.

 

예를들어 "5" - "0" = 5 이고, "9" - "0" = 9 이다. 그러므로 문자 N 에 문자 "0"을 빼면 그 문자 N을 숫자로 바꾼 값이 된다.

#include <stdio.h>
#include <string.h>

int main(void) {
	char str[11];
	int total = 0;
	scanf("%s", str);
    
	for(int i=0; i<strlen(str); i++){
		if ( '0' <= str[i] && str[i] <= '9' ){
        	total += (str[i] - '0');
		}
	}
    
	printf("%d", total);
	return 0;
}

 

'Programming > C' 카테고리의 다른 글

[C언어] 마름모 출력하기  (0) 2021.01.04

댓글