본문 바로가기

포너블 멘토링/1주차

연산자와 제어문 (2)

14 - switch 와 goto 문

#include<stdio.h>

int main() {
	int choice;

	printf("새 게임 : 1\n");
	printf("불러오기 : 2 \n");
	printf("설정 : 3\n");
	printf("크레딧 : 4\n");

	scanf_s("%d", &choice);
	
	switch (choice) {
	case 1:
		printf("새 게임\n");
		break;
	case2:
		printf("불러오기\n");
		break;
	case3:
		printf("설정\n");
		break;
	case 4:
		printf("크레딧\n");
		break;
	default:
		printf("잘못 입력하셨습니다.\n");
        break;
	}

	if (choice == 1) {
		printf("새 게임\n");
	}
	else if (choice == 2) {
		printf("불러오기\n");
	}
	else if (choice == 3) {
		printf("설정\n");
	}
	else if (choice == 4) {
		printf("크레딧\n");
	}
	else {
		printf("잘못 입력하셨습니다.\n");
	}
}

break; : 일치하는 case에서 해당 구문을 실행한 후, 다음으로 넘어가지 않고 switch 문을 빠져나오게 함.

만약 일치하는 case에 break가 없으면 이후의 모든 case의 구문들을 전부 실행해버림.

default : 나머지 모든 경우에 대해 실행하는 기본 값.

 

#include<stdio.h>

int main() {
	int choice;

	makeChoice:

	printf("새 게임 : 1\n");
	printf("불러오기 : 2 \n");
	printf("설정 : 3\n");
	printf("크레딧 : 4\n");

	scanf_s("%d", &choice);
	
	switch (choice) {
	case 1:
		printf("새 게임\n");
		break;
	case2:
		printf("불러오기\n");
		break;
	case3:
		printf("설정\n");
		break;
	case 4:
		printf("크레딧\n");
		break;
	default:
		printf("잘못 입력하셨습니다.\n");
		goto makeChoice;
		break;
	}
}

makeChoice:  : goto makeChoice 를 입력하면 해당 지점으로 돌아와서 실행.

쓰지 않는게 좋은 이유 : 쓰면 쓸수록 복잡해짐.(스파게티 코드) 쓰지 않고도 다른 방식으로 대부분 구현 가능함.

#include<stdio.h>

int main() {
	int i = 1;
	
	repeat:
	printf("%d\n", i);
	if (i < 10) {
		i++;
		goto repeat;
	}
}

goto로 반복문을 구현할 수 있음.

 

 

15 - 반복하기

 

while 문의 사용법.

#include<stdio.h>

int main() {
	int i = 1;

	while (i <= 10) { // 소괄호 안에 조건 입력.
		printf("%d\n", i);
		i++; // 조건 업데이트.
	}
}

최소한 한 번은 실행하고자 할 때 사용하는 do-while문.

#include<stdio.h>

int main() {
	int i = 1;

	do { 
		printf("%d\n", i);
		i++; 
	} while (i <= 10);
}

 

무한 반복. (필요할 때가 있음.)

#include<stdio.h>

int main() {
	int i = 1;

	while (true) {
		printf("%d", i);
		i++;
	} // ctrl C로 종료
}
#include<stdio.h>

int main() {
	int n;

	do {
		printf("제발 0을 입력해주세요!!\n");
		scanf_s("%d", &n);
	} while (n != 0);

	printf("드디어 0을 입력하셨군요!\n");
}

while문을 사용하면 위와같은 코드를 구현하기 힘듦.

 

 

16 - for 문 1

 

while의 특수한 경우. 사실 while만으로 for문을 구현할 수 있긴 함.

#include<stdio.h>

int main() {
	int i = 1;
	/*while (i <= 10) {
		printf("%d\n", i);
		i++;
	}*/

	for (i = 1; i <= 10; i++) {
		printf("%d\n", i);
	}
}

일정하게 증가, 감소되는 변수가 필요할 때.

배열의 모든 원소에 순차적으로 접근하고 싶을 때.

특정 횟수만큼 작업을 반복하고 싶을 때.

--> for문 쓰면 좋음!

 

#include<stdio.h>

int main() {
	// 1, 2, 4, 8, 16, 32, ....
	int n;
	scanf_s("%d", &n);

	for (int i = 1; i <= n; i = i * 2) {
		printf("%d\n", i);
	}
}

// 걸치는 값에 대해 정상적으로 작동하는지 확인할 것.

for 문의 조건 안에서 변수를 정의하면 for 문 밖에서는 해당 변수 사용 불가.(scope)

 

#include<stdio.h>

int main() {
	// 1 ~ n  까지의 합을 출력

	int n;
	scanf_s("%d", &n);

	int sum = 0;
	for(int i = 1; i <= n; i++){
		sum = sum + i;
	}

	printf("%d\n", sum);
}
#include<stdio.h>

int main() {
	// 입력한 숫자만큼 별을 찍는 프로그램.
	int n;
	scanf_s("%d", &n);

	for(int i = 1; i <= n; i++){
		printf("*");
	}
}

'포너블 멘토링 > 1주차' 카테고리의 다른 글

배열과 포인터 (1)  (0) 2020.03.28
연산자와 제어문 (3)  (0) 2020.03.26
연산자와 제어문 (1)  (0) 2020.03.26
입출력과 변수 (3)  (0) 2020.03.26
입출력과 변수 (2)  (0) 2020.03.26