문제
영어와 정수를 포함한 문자열을 입력받고, 문자열에 포함된 정수들의 합을 구하시오.
(문자열의 길이는 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 |
---|
댓글