홀수, 짝수 판별 및 합산 C

입력 및 연산에 관한 문제


출처 링크 : 혀니C와 함께하는 프로그래밍

4월 4일 수업, 코딩학원에서 C언어를 배우면서 과제로 받은 문제.

해결 과정이 인상 깊어서 블로그에다가 기록해야겠다고 생각했다.
(물론 문제의 예시는 변형하였음.)

문제

아래와 같이 일련의 숫자들이 문자열 형태로 저장되어 있다. 이 문자열의 짝수와 홀수의 합과 개수를 구하는 프로그램을 작성해보자.

예시
char str[] = "123456789";

[출력결과]

짝수의 합 : 20, 짝수의 개수 : 4

홀수의 합 : 25, 홀수의 개수 : 5


제출 코드

#include <stdio.h>

#pragma warning (disable :4996)

int main() {
    int cnt_even = 0, cnt_odd = 0, even = 0, odd = 0;

    char c[255];
    printf("문자열 입력: ");
    fgets(c, 254, stdin);

    for (int i = 0; c[i] != '\0'; i++) {
        
        if (!(c[i] >= '0' && c[i] <= '9' )|| c[i] == '\n') {
            // 방어코드.
            // 숫자가 아닌경우를 배제하기 위한 코드.
            // 그리고 fgets를 입력받으면 '\n'까지 같이 입력되는데 -38이 합산되는 현상 발생.

            continue;
        }
        

        int j = (c[i] - '0');

        if (j % 2 == 0) {
            cnt_even++;
            even += j;
        }

        else if (j % 2 == 1) {
            cnt_odd++;
            odd += j;
        }
    }

    printf("짝수의 합 : %d, 짝수의 개수 : %d\n", even, cnt_even);
    puts("");
    printf("홀수의 합 : %d, 홀수의 개수 : %d\n", odd, cnt_odd);

fgets() 함수를 쓰니 ‘\n’까지 입력되는 현상이 발생해서 방어코드를 추가했다.

다른 부분에서도 참고가 될 것 같다.


© 2022.07. by Wookey_Kim

Powered by Hydejack v7.5.2