오늘은 수행평가 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개 |
'C언어' 카테고리의 다른 글
C언어_문자열 입력받아 거꾸로 출력 #수행4 (0) | 2020.04.14 |
---|---|
C언어_2진수 10진수 변환 #수행3 (0) | 2019.02.27 |
C언어_점수대별로 학생수 표시 #수행1 (0) | 2019.02.05 |
댓글