상세 컨텐츠

본문 제목

[c언어] 코딩도장 66.7 가변 인자의 정수 합 구하기 문제풀이

c언어

by ~지우~ 2021. 7. 1. 11:19

본문

728x90

안녕하세요 지코딩입니다.

 

오늘은 코딩도장 66.7 심사문제 풀이를 해보겠습니다.

 

<문제>표준 입력으로 정수 세 개가 입력됩니다. 다음 소스 코드를 완성하여 getSum 함수에 들어간 가변 인자 중에서 정수의 합을 구하도록 만드세요.

자료형 약칭

  • int: i
  • double: d
  • char *: s

 

정수끼리만 합하는 것이므로 'i'일때만 합해주면 되지만 'd'이거나 's'일 때에도 va_arg를 사용해야 다음 인자로 넘어갑니다. 

 

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdarg.h>

int getSum(char *types, ...){
    va_list ap;
    int i = 0;
    int sum = 0;
    va_start(ap, types);
    while(types[i] != '\0'){
        switch(types[i]){
            case 'i':
                sum+=va_arg(ap, int);
                break;
            case 'd':
                va_arg(ap, double);
                break;
            case 's':
                va_arg(ap, char*);
                break;
            default:
                break;
        }
        i++;
    }
    va_end(ap); 
    return sum;
}

int main()
{
    int num1, num2, num3;

    scanf("%d %d %d", &num1, &num2, &num3);

    printf("%d\n", getSum("isi", num1, "C", 10));
    printf("%d\n", getSum("sdsi", "Hello, world!", 5.3, "A", num2));
    printf("%d\n", getSum("iiss", 25, 38, "k", "R"));
    printf("%d\n", getSum("sidii", "Hello, C", num3, 2.234567, 878, 1291));

    return 0;
}
728x90

관련글 더보기

댓글 영역