본문 바로가기

C언어_VisualStudio_실습

주문한 카페 메뉴 총 금액 출력하기; while문, switch문

문제, 풀이, 답 순서로 되어있어요! :-)

 

[문제]

다음은 카페의 메뉴판이다.
1. 아메리카노 3000원
2. 아이스아메리카노 3500원
3. 카페라떼 3800원
4. 데자와 700원
5. 카라멜마끼아또 4300원
6. 블루레몬에이드 3500원

주문은 번호로 입력 받습니다.
주문의 번호가 0일 때까지 입력 받은 음료의 금액을 모두 더합니다.
주문의 번호가 0이면 반복을 종료하고 총금액을 출력합니다.
(단 주문은 번호로 입력 받고 1~6의 정수입니다.)

 

[풀이]

일단은 변수 선언부터 합니다.

  주문을 번호로 입력받을 변수 n 선언.

  총액을 저장할 변수 sum 선언하고 0으로 초기화 (더해주는 값을 저장하기 때문에 처음 초기화 값은 0)

	int sum = 0, n;

주문은 번호로 입력을 받으니까 switch 함수를 쓸 거예요.

n을 switch에 넘겨주고 안에 내용을 작성해줍니다.

안에 내용을 쓸 때는 각 case문에 break;를 꼭 적어주어야 해요. 그렇지 않으면 해당 case문의 뒷 내용도 출력됩니다.

/*
1. 아메리카노 3000원
2. 아이스아메리카노 3500원
3. 카페라떼 3800원
4. 데자와 700원
5. 카라멜마끼아또 4300원
6. 블루레몬에이드 3500원
*/
switch (n) {
		case 1: sum += 3000; break;
		case 2: sum += 3500; break;
		case 3: sum += 3800; break;
		case 4: sum += 700; break;
		case 5: sum += 4300; break;
		case 6: sum += 3500; break;
		}

근데, 우리는 주문의 번호가 0일 때까지 입력받은 음료의 금액을 더해야 하니까 무한 반복문이 필요해요.

무한 반복이 필요한 경우에는 보통 while문을 많이 사용해요.

while문의 첫 시작에 n=0일 때, 반복문을 종료하는 문구를 추가한 다음에 위에서 적은 switch문으로 내용을 채워줍니다.

while (1) {	// 무한반복을 위해 1을 넣는다
		scanf("%d", &n);	// n입력 받기
		if (n == 0) break;	// 0을 입력 받았을 경우 반복문 종료
		// switch문
        switch (n) {
		case 1: sum += 3000; break;
		case 2: sum += 3500; break;
		case 3: sum += 3800; break;
		case 4: sum += 700; break;
		case 5: sum += 4300; break;
		case 6: sum += 3500; break;
		}
	}

마지막으로 결괏값 출력합니다.

	// 결괏값 출력
    printf("Total = %d", sum);

 

[답]

 

#pragma warning(disable:4996)	// scanf 함수 오류 무시
#include <stdio.h>

int main() {
	int sum = 0, n; // 메뉴 변수를 입력 받을 변수 n, 금액의 총액을 받을 변수 sum 선언
	while (1) {
		scanf("%d", &n);
		if (n == 0) break;
		switch (n) {
		case 1: sum += 3000; break;	// 1. 아메리카노 3000원
		case 2: sum += 3500; break;	// 2. 아이스아메리카노 3500원
		case 3: sum += 3800; break;	// 3. 카페라떼 3800원
		case 4: sum += 700; break;	// 4. 데자와 700원
		case 5: sum += 4300; break;	// 5. 카라멜마끼아또 4300원
		case 6: sum += 3500; break;	// 6. 블루레몬에이드 3500원
		}
	}
	printf("Total = %d", sum);
	return 0;
}