본문 바로가기
C언어

C언어_화폐단위별 화폐의 개수 #수행2

by JiaLee0707 2019. 2. 13.

오늘은 수행평가 2번 문제.



2. 지불할 금액을 정수로 입력받아 화폐단위가 각각 몇개씩 필요한지 출력하는 프로그램을 작성하시오.

조건 1. 입력의 최소단위는 천원으로 한다.

조건 2. 화폐단위는 50000, 10000, 5000, 1000 4가지이며, 가능한 큰 화폐단위로 지불한다.



1) 변수 선언 

int money, won = 5000, n[4] = { 0 };    //money 입력받을 금액

     //won 화폐단위를 구별하기 위한 변수

     //n[4] 화폐단위별 개수를 넣을 변수


2) 입력

printf("금액을 입력(천원단위까지 입력) : ");


출력을 위해 printf() 작성 후


while (1) {    //금액을 1000원미만으로 입력했을 시 다시 반복

scanf("%d", &money);    //money에 금액 입력

      if (money >= 1000) break;    //만약 money가 1000원 이상이면 break;

}


3) 계산 및 출력

for(int i = 0; i < sizeof(n) / sizeof(int); i++){      //(sizeof(n)==16 / sizeof(int)==4) == 4, 4번 반복

if (money >= won) {                 //만약에 money가 won보다 크거나 같으면

n[i] = money / won;    //money을 won으로 나눠 n[i]에 넣는다. //이걸로 won단위 화폐개수를 구함

money -= n[i] * won;   //won단위 화폐를 빼고 다음 단위를 구해야 하므로

   //n[i](개수)와 won(단위)를 곱해 그만큼 money에서 뺀다.

  }

  printf("%d원군 %d개\n", won, n[i]);       //구한 값 출력

if (i % 2 == 0)  won /= 5;        //우리나라 화폐단위는 2와 5로 나눠서 구할 수 있음

       //i가 2로 나눠 나머지가 없으면 제일 큰자리 수가 5이므로 5로 나눔.

else won /= 2;             //아니면 2로 나눔

}


# 코드 분석!!

 i

 0                              1                          2                                        3                 4(4는 4보다 크지 않음, for문 끝)

 money

 1234000   34000          4000                     4000                                   0    

 won

 50000      10000          5000                     1000                                   500

 n[i]

 n[0]==0,   24              n[1]==3                  n[2]==0(if문 X, 초기값 0)        n[3]==4

 print(출력)

 50000원권 24개           10000원권 3개         5000원권 0개                       1000원권 4개


댓글