[C언어] 해결한 문제

[C언어] 연봉에 대한 세금 계산 프로그램

에게 묻다 2021. 3. 23. 01:46

대학교에 입학하고 처음으로 A4에 문제를 정리해가며 푼 문제다.

C언어 정도는 껌이라 여겼건만,,,

"교수님이 학생들 기(?)를 잡으려 만든 문제가 아닐까?"라는 생각이 들었다.

이제 막 if, for, while 정도를 맛본 다른 새내기한테는 좀 어려웠을 것 같다.

 

 

 

 

 

 

 

 

 

단순하게 일정 금액 이상이면 소득의 일정 비율을 세금으로 때리는 줄 알았는데 아니었다.

10,000$ 일때, 0에서 1,000$의 9%, 4,000$ 초과분의 18% 등등... 이런식으로 각 구간의 세금을 구하고 총 세금을 결과로 출력해야 한다.

if, else로 구간에 따라 노가다를 하면 계산은 되겠지만 코드 내부적으로, 겉보기에도 그리 아름다운 코드는 아닐것 같았다. 

그래도 실습 때 배운 문법으로 깔끔하게 해보려 했고 아래가 나의 소스코드다.

 

#include <stdio.h>

int main(int argc, const char * argv[]) {
    float income = 0; //연봉
    int totalTax = 0; //총 세금
    scanf("%f", &income);
    
    if (income>1000){
        printf("1000 * 0.09 = 90\n");
        totalTax += 90;
        
        if (income>4000){
            printf("3000 * 0.18 = 540\n");
            totalTax += 540;
            
            if (income>8000){
                printf("4000 * 0.27 = 1080\n");
                totalTax += 1080;
                
                printf("%.0f * 0.36 = %.0f\n", income-8000, (income-8000)*0.36);
                totalTax += (income-8000)*0.36;
            }
            else{
                printf("%.0f * 0.27 = %.0f\n", income-4000, (income-4000)*0.27);
                totalTax += (income-4000)*0.27;
            }
        }
        else{
            printf("%.0f * 0.18 = %.0f\n", income-1000, (income-1000)*0.18);
            totalTax += (income-1000)*0.18;
        }
    }
    else{
        printf("%.0f * 0.09 = %.0f\n", income, income*0.09);
        totalTax += income*0.09;
    }
    
    printf("= %d\n", (int)totalTax);
    
    return 0;
}

 

솔직히 내 방법도 효율적이고 깔끔하지 않다고 생각한다.

뭔가 더 개선시킬수 있을것 같은 그런 너낌...?

 

궁금한 점, 조언, 훈수 다 좋으니 댓글로 알려주시면 감사하겠습니다!

 

 

 

반응형