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 |