웹_프론트_백엔드/단과

[단과_C] 2020.02.20

shine94 2020. 2. 21. 10:54

1. 반복문

1) for문

2) while문


3) do~while문
    do {
          실행할 문장;
    } while(조건식);


2. 오늘 실습코드
1) quiz.c

#include<stdio.h>

void main() {
	const char* qMsg = "Q.다음 중 프로그래밍 언어가 아닌 것은?\n";
	const char* choiceMsg = "1. JAVA\n2. 파이썬\n3. C언어\n4. 망둥어\n";

	int choice = 0, answer = 4;
	
	//0 이외 모든 수는 참
	while (-9999){
		printf("%s%s", qMsg, choiceMsg);
		scanf_s("%d", &choice);

		if (choice == answer) {
			printf("정답!\n");
			break;
		}
		else if (choice >= 1 && choice <= 4) {
			printf("오답ㅠㅠ\n");
		}
		else {
			printf("다시 시도해주세요\n");
		}
	}
}

 

2) doWhileTest.c

#include<stdio.h>

void main() {
	int choice = 0;
	const char* msg = "1.요금조회\n2.분실신고\n0.상담원 연결\n";

	do{
		printf("%s", msg);
		scanf_s("%d", &choice);
	}while (choice != 0);
    
    
	/*
	//초기값이 0이라서 단 한 번도 실행이 안됨
	//이때 do~while문을 사용, 무조건 한 번은 실행하고 검사함
	while (choice != 0) {
		printf("%s", msg);
		scanf_s("%d", &choice);
	}
	*/
    
}

 

3) 영화관 만들기(megabox.c)
** 영화관 만들기 기획

** 완성된 코드가 아님, 다음 수업시간에 완성할 예정 **

#include<stdio.h>
void main() {
	//메가 박스
	const char* title = "★MEGA BOX★";
	const char* menu = "①예매하기\n②구매하기\n③쿠폰등록\n④나가기\n";
	const char* book_menu = "①겨울왕국2(09:00)\n②포드v페라리(13:00)\n③[청소년 관람 불가]남산의 부장들(23:00)\n④홈 화면으로\n";
	const char* food_menu = "①팝콘(₩7000)\n②콜라(₩3000)\n③[청소년 구매 불가]맥주(₩4000)\n④홈 화면으로\n";
	const char* errMsg = "다시 시도해주세요.";
	const char* name = "";

	int choice = 0;

	int money = 100000000;
	
	int t_price = 12000;
	int p_price = 7000;
	int c_price = 3000;
	int b_price = 4000;

	int age = 0;

	int price = 0;

	while (1) {
		printf("%s\n%s", title, menu);
		scanf_s("%d", &choice);

		//데드코드를 해결하기 위해 
		//여기에서 if문을 사용하여 break;로 빠져나감
		if (choice == 4) { break; }

		switch (choice){
		//예매하기 영역
		case 1:
			//변수의 재사용
			//1. 메모리 효율성 증가
			//2. 가독성이 떨어진다.
			printf("%s", book_menu);
			scanf_s("%d", &choice);
			//Nested switch
			switch (choice) {
			//겨울왕국2(09:00)
			case 1:
				name = "겨울왕국2(09:00) 예매";
				break;
			//포드v페라리(13:00)
			case 2:
				name = "포드v페라리(13:00) 예매";
				break;
			//남산의 부장들(23:00)
			case 3:
				//나이 입력 후 19세 미만이면 실패처리
				printf("[청소년 관람 불가 영화입니다]\n나이 : ");
				scanf_s("%d", &age);

				name = "남산의 부장들(23:00) 예매";

				if (age < 20) {
					printf("%s 실패 / 미성년자\n", name);
					continue;
				}
				break;
			//홈 화면으로 이동
			case 4:
				continue;
			//그 외 영역
			default:
				printf("%s\n", errMsg);
				continue;
			}
			price = t_price;
			break;
		//구매하기 영역
		case 2:
			printf("%s", food_menu);
			scanf_s("%d", &choice);

			switch (choice) {
			//팝콘(₩7000)
			case 1:
				name = "팝콘 구매";
				price = p_price;
				break;
			//콜라(₩3000)
			case 2:
				name = "콜라 구매";
				price = c_price;
				break;
			//맥주(₩4000)
			case 3:
				printf("[청소년 구매 불가 음식입니다]\n나이 : ");
				scanf_s("%d", &age);

				name = "맥주 구매";

				if (age < 20) {
					printf("%s 실패 / 미성년자\n", name);
					continue;
				}

				price = b_price;
				break;
			//홈 화면으로 이동
			case 4:
				continue;
			//그 외 영역
			default:
				printf("%s\n", errMsg);
				continue;
			}
			break;
		//쿠폰등록 영역
		case 3:
			break;
            
            
		/*
		case 4:
			//데드코드
			//while문을 빠져나갈 수 없음
			//해결책 : if문을 이용하여 while문을 탈출하기
			break; break; 
		*/
        
        
		//그 외 영역
		default:
			printf("%s\n", errMsg);
			continue;
		}
		//잔액부족 검사
		if (money - price < 0) {
			printf("%s 실패 / 잔액 부족\n", name);
		}
		else {
			money -= price;
			printf("%s 성공 / 현재 잔액 : %d원\n", name, money);
		}
	}

}

'웹_프론트_백엔드 > 단과' 카테고리의 다른 글

[단과_C] 2020.02.21  (0) 2020.02.22
[단과_JAVA] 2020.02.21  (0) 2020.02.22
[단과_JAVA] 2020.02.20  (0) 2020.02.20
[단과_C] 2020.02.19  (0) 2020.02.19
[단과_JAVA] 2020.02.19  (0) 2020.02.19