C언어 기초: 함수 예제

kevinkim2586·2020년 4월 19일
0

C언어

목록 보기
15/23
post-thumbnail

다음은 이번 실습에서 가장 오랜 시간을 쏟아부은 문제다. 별거 아닌 줄 알았는데 막상 풀기 시작하니 뭐가 계속 잘 안 풀려서 머리가 많이 아팠다.

문제부터 보자.

우선 문제에서 요구하는게 굉장히 많았다. 사용자로부터 4개의 정수: start, end, n,m 을 입력을 우선 받고, 저렇게 하나씩 출력해야 한다.

밑에 끄적거린 흔적부터 같이 보자..

삽질한 흔적이 보일 것이다. 우여곡절 끝에 결국 코드를 완성하기는 했으나, 함수를 제대로 이용하는 방법은 터득하지 못한 것 같다.


#include <stdio.h>

int sumMultiple(int start, int end, int x);

int main(){
    
    int start, end, n, m, x;
    
    scanf("%d %d %d %d", &start, &end, &n, &m);
    
    printf("%d\n",sumMultiple(start, end, n));  //1
    printf("%d\n",sumMultiple(start, end, m));  //2
    
    x=(n>m)?n:m;
    for(int i=x;;i++){
        if(i%n==0 && i%m==0){
            x=i;
            break;
        }
    }
    printf("%d\n",sumMultiple(start, end, x));  //3
    printf("%d\n",sumMultiple(start, end, n)+sumMultiple(start, end, m)-sumMultiple(start, end, n*m)); //4
    printf("%d\n",sumMultiple(start, end, m)-sumMultiple(start, end, x));  //5
    
    int sum=0;
    
    for(int i=start;i<end;i++){
        if(i%n>=1 && i%m>=1){
            sum+=i;
        }
    }
    printf("%d", sum);
    
    return 0;
}

int sumMultiple(int start, int end, int x){
    
    int sum=0;
    
    for(int i=start;i<end;i++){
        if(i%x==0){
            sum+=i;
        }
        else{
            continue;
        }
    }
    
    return sum;
}

예를 들어,

sumMultiple(start, end, m)-sumMultiple(start, end, x)

이런 식으로 함수의 연산을 이용해서 결과값을 출력해야 하는데, 내가 이해를 잘 하지 못해서 그냥 main함수에다가 연산을 직접 넣어버렸다. 어쨌거나 결과는 제대로 출력이 되지만 만족스럽지는 않은 코드였다. 이 코드는 주위 친구들에게 물어봐서 다시 수정해야겠다,,

profile
공개적으로 학습하고자 만든 블로그

0개의 댓글