1. 조건문
- 분기문(분기란? 실행의 흐름을 다른쪽으로 보내는 것)
: 조건분기 (if, if-else, is-else-if)
- 무조건 분기문
: goto문
- 선택문(switch)
2. 반복문(for, while, do-while)
단일 조건문
#include <stdio.h>
int main() {
int a = 20;
if (a > 20) {
printf("a는 20보다 크다.\n");
}
if (a < 20) {
printf("a는 20보다 작다.\n");
}
else {
printf("a는 20보다 크다.\n");
}
// C언어에서는 정수값을 가지고 논리값을 처리하는 특성이 있어서 정수식도 가능하다.
if (a - 20) {
printf("a는 20이 아니다.\n");
}
else {
printf("a는 20이다.\n");
}
return 0;
}
다중 조건문(조건이 여러개)
값을 조건으로 따질 때는 큰 값부터 작은 값으로 잘라서 조건을 만들지 말고
값의 범위를 명확하게 조건으로 만드는게 좋음.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
int money = 0;
printf("용돈 금액을 입력하세요. : ");
scanf("%d", &money);
if (money > 100000) {
printf("피시방\n");
}
else if (money <= 100000 && money > 80000) {
printf("영화관람\n");
}
else if (money <= 80000 && money > 60000) {
printf("친구만남\n");
}
else if (money <= 60000 && money > 40000) {
printf("중국집\n");
}
else { // 생략가능
printf("낮잠\n");
}
return 0;
}
선택문(switch)
정수 값의 변화에 따라서 분기 처리할 때 사용.
if-else if 보다 가독성이 좋음.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
int buttonNum = 0;
printf("리모컨의 번호를 입력하세요.(0:TV꺼 1:TV켜 2:볼륨업 3:볼륨다운 ): ");
scanf("%d", &buttonNum);
switch (buttonNum) {
case 1:
{
int i = 0;
printf("TV꺼\n");
break;
}
case 2:
printf("TV켜\n");
break;
case 3:
printf("볼륨업\n");
break;
case 4:
printf("볼륨다운\n");
break;
default: printf("잘못 입력하셨습니다.\n");
break;
}
return 0;
}
* case구문 안에서 변수를 만들 때에는 중괄호 블럭 생성하고, 그 안에 변수 만들어야 함.
반복문(for문)
for문은 반복 횟수를 아는 경우에 사용하기 좋은 구조
for(초기식; 조건식; 증감식) {
명령어
}
int main() {
int count = 0;
for (int i = 0; i < 10; i++) {
printf("*");
}
printf("\n\n");
// 조건식 생략 가능
for (int i = 0; ; i++) {
if (i > 10) break;
printf("count = %d\n", count);
}
printf("\n");
// 중첩 가능
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
printf("*");
} printf("\n");
}
printf("\n\n");
// 초기식,조건식,증감식에 여러 변수를 넣을 수 있음
for (int i = 0, j = 10; i < 10 && j>0; i += 2, j -= 2) {
printf("i = %d, j = %d\n", i, j);
}
printf("\n\n");
// 실수식도 가능!
for (float a = 0.0f; a < 10.34f; a += 0.2f) {
printf("*");
} printf("\n");
return 0;
}
반복문(while, do-while문)
while문은 반복횟수를 모르는 경우에 사용하기 좋은 구조
반복횟수는 모르나 while문의 소괄호 안에 조건만 만족한다면 몇 번을 반복해도 상관없을 때 사용하기 좋음.
#include <stdio.h>
int main() {
float value = 343.34f;
printf("while문\n\n");
while (value > 0) {
value -= 12.3f;
printf("value = %f\n", value);
}
printf("do-while문\n\n");
do {
value += 11.234f;
printf("value = %f\n", value);
} while (value < 2000.0f);
return 0;
}
goto문(무조건 분기)
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
int number = 0;
Start: // 레이블: 프로그램의 코드 실행 위치
printf("정수값을 입력하세요. : ");
scanf("%d", &number); // 0보다 작은 수를 입력하면 종료
if (number > 0) goto Start;
else goto Exit;
printf("종료중\n"); // 이 라인은 절대 실행되지 않음
Exit: // 레이블
printf("종료됨\n");
return 0;
}
continue문
#include <stdio.h>
int main() {
for (int i = 0; i < 100; i++) {
if (i % 2 == 0) { // 짝수는 건너띄고 홀수만 출력
continue; // 반복문에서 continue문을 만나면 continue문 이후의 코드를
// 건너 뛰어서 실행됩니다.
}
printf("i = %d\n", i);
return 0;
}
flag
중첩된 반복문을 탈출할때 flag값을 사용
#include <stdio.h>
int main() {
int count = 1000;
int count1 = 10000;
int count2 = 20000;
int flag = 0;
while (count > 0) {
count -= 10;
while (count1 > 0) {
count1 -= 100;
while (count2 > 0) {
count2 -= 10;
printf("count = %d, count1 = %d, count2 = %d\n", count, count1, count2);
if (count < 100 && count1 < 100 && count2 < 100) {
flag = 1;
break; // 가장 가까운 반복문을 탈출할 때 break문을 사용
}
}
if (flag == 1) break;
}
if (flag == 1) break;
return 0;
}
goto 문을 사용하여 중첩된 반복문을 한번에 탈출
#include <stdio.h>
int main() {
count = 1000;
count1 = 10000;
count2 = 20000;
while (count > 0) {
count -= 10;
while (count1 > 0) {
count1 -= 100;
while (count2 > 0) {
count2 -= 10;
printf("count = %d, count1 = %d, count2 = %d\n", count, count1, count2);
if (count < 100 && count1 < 100 && count2 < 100) {
goto LoopExit;
}
}
}
}
LoopExit:
return 0;
}
'👩💻 Language > C, C++' 카테고리의 다른 글
3강. [주말에 배우는 C/C++] C언어 - 구조체 (0) | 2023.01.14 |
---|---|
3강. [주말에 배우는 C/C++] C언어 - 배열 (0) | 2023.01.14 |
2강. [주말에 배우는 C/C++] C언어 - 연산자 (0) | 2023.01.07 |
1강. [주말에 배우는 C/C++] C언어 - 응용(숫자 맞추기 게임) (1) | 2023.01.01 |
1강. [주말에 배우는 C/C++] C언어 - 연산자 (0) | 2022.12.31 |