[C언어] n 개의 정수 중에 홀수의 합계 구하는 함수 만들기

n 개의 정수를 표현하기 가장 적합한 자료 형식은 정수 형식을 원소로 하는 배열이겠죠.

n을 10으로 하드 코딩한다면 다음과 같습니다.

int arr[10];

제일 먼저 함수 이름을 결정합시다.

홀수 합계를 구하는 것이므로 GetOddSum 이라고 정할게요.

n개의 정수 중에 홀수의 합계를 구하는 함수의 함수 원형을 정해봅시다.

C언어에서 배열 이름은 할당한 메모리 주소입니다. 해당 주소에 원소 형식을 사용할 것이므로 원소 형식 포인터로 생각할 수 있어요.

그리고 배열의 크기를 전달해야겠죠.

따라서 입력 매개변수는 2개로 int *base, int size 정도면 적당하겠네요.

*원소 개수가 음수가 올 수 없다는 것을 고려한다면 unsigned 은 size_t로 표현할 수도 있어요.*

함수에서는 결과로 홀수의 합계를 반환해야 하기 때문에 int 형식을 반환 형식으로 정할 수 있겠네요.

따라서 함수 원형은 다음처럼 정하면 적당한 수준이겠죠.

int GetOddSum(int *base, int asize);

보다 높은 신뢰성을 추구한다면 전달받은 주소의 값을 바꿀 수 없게 const int *base로 정하면 보다 높은 신뢰성을 추가할 수 있어요.

int GetOddSum(const int *base, int asize);

사용하는 예를 포함하면 다음처럼 작성할 수 있을 거예요.

#include <stdio.h>

int GetOddSum(const int* base, int asize);
int main()
{
    int arr[10] = { 1,2,3,7,8,5,4,9,11,6 };
    printf("홀수의 합계:%d\n", GetOddSum(arr, 10));

    return 0;
}
int GetOddSum(const int* base, int asize)
{
    int sum = 0;
    for (int i = 0; i < asize; i++)
    {
        if (base[i] % 2 == 1)
        {
            sum += base[i];
        }
    }
    return sum;
}