사자자리
[C언어] 4주차 제어문 본문
제어문
조건문 | if, switch |
반복문 | for, while, do while |
분기문 | break, continue, return, goto |
조건문 if
#include <stdio.h>
int main(){
int score;
scanf("%d", &score);
if (score < 0 || score > 100) printf("잘못 입력하셨습니다.");
else{
if (score >= 90) printf("A");
else if (score >= 80) printf("B");
else if (score >= 70) printf("C");
else printf("D");
}
return 0;
}
조건문 switch
- 형식이 균일하고, 처리할 조건이 많을 때 사용한다.
- switch (정수식)에서 정수식의 값이 case에 지정한 값과 같으면 해당 코드를 실행한다.
- 아무 case에도 해당되지 않으면 default의 코드를 실행한다. default는 생략 가능하다. (조건문 if의 else같은 역할)
#include <stdio.h>
int main(){
int menu;
printf("1. 에스프레소\n");
printf("2. 아메리카노\n");
printf("3. 카페라떼\n");
printf("4. 카페모카\n");
printf("메뉴를 고르세요: ");
scanf("%d", &menu);
switch (menu){
case 1:
printf("3,000원입니다.");
break;
case 2:
printf("4,000원입니다.");
break;
case 3:
printf("4,500원입니다.");
break;
case 4:
printf("5,000원입니다.");
break;
default:
printf("잘못 입력했습니다.");
break;
}
return 0;
}
- break를 작성하지 않으면, 해당 case와 그 밑의 case, default가 모두 실행된다.
#include <stdio.h>
int main(){
int num;
printf("1 이상 5 이하의 정수를 입력하세요: ");
scanf("%d", &num);
switch (num) {
case 1:
printf("2보다 작다.\n");
case 2:
printf("3보다 작다.\n");
case 3:
printf("4보다 작다.\n");
case 4:
printf("5보다 작다.\n");
case 5:
printf("6보다 작다.\n");
}
return 0;
}
- switch (정수식)에는 정수 자료형만 사용할 수 있다. 문자 자료형(char)은 정수 자료형이므로 사용할 수 있다.
#include <stdio.h>
int main(){
char grade;
scanf("%c", &grade);
switch (grade){
case 'A':
printf("90점 초과 100점 이하입니다.");
break;
case 'B':
printf("80점 초과 90점 이하입니다.");
break;
case 'C':
printf("70점 초과 80점 이하입니다.");
break;
default:
printf("70점 이하입니다.");
break;
}
return 0;
}
반복문 for
초기식 int i = 0
- 정수형 변수 i: 루프 인덱스. index의 첫 알파벳인 i를 주로 사용한다. for문 밖에서 선언해도 된다.
조건식 i < 3
- 조건식일 참일 동안 반복하고, 거짓일 때 끝낸다.
변화식 i++
- 반복문이 한 번 실행될 때마다 수행하는 식
#include <stdio.h>
int main(){
for (int i = 0; i < 3; i++){
printf("Regulus Black\n");
}
return 0;
}
- 초기식, 조건식, 변화식, 반복할 문장은 각각 생략 가능하다.
- 무한 루프에서 빠져나오려면 Ctrl + c
#include <stdio.h>
int main(){
//초기식 생략
int i = 0;
for ( ; i < 3; i++) printf("%d\n", i);
//조건식 생략(무한 루프)
for (int j = 0; ; j++) printf("%d\n", j);
//변화식 생략(무한 루프)
for (int k = 0; k < 3; ) printf("%d\n", k);
//초기식, 조건식, 변화식 생략(무한 루프)
for ( ; ; ) printf("Regulus\n");
//반복할 문장 생략
for (int l = 0; l < 3; l++);
return 0;
}
- 중첩해서 사용할 수 있다.
#include <stdio.h>
int main(){
//구구단
for (int i = 2; i <= 9; i++){
for (int j = 1; j <= 9; j++){
printf("%d X %d = %2d\n", i, j, i*j);
}
printf("\n");
}
return 0;
}
반복문 while
- while (조건식)에서 조건식이 참일 동안 반복한다.
- 중괄호 {} 안에 변화식을 입력한다. 변화식이 없으면 무한 루프가 된다.
#include <stdio.h>
int main(){
int i = 0;
while (i < 3){
printf("Regulus Black\n");
i++;
}
return 0;
}
- 무한 루프를 만들기 편하다.
#include <stdio.h>
int main(){
//조건식에 true를 입력하는 방법
while (true) printf("Regulus Black\n");
//조건식에 1을 입력하는 방법
while (1) printf("Regulus Black\n");
return 0;
}
반복문 do while
- 반복문 for와 while은 조건식을 먼저 검사하고, 조건식이 참인 경우에만 문장을 수행한다.
- 반복문 do while은 일단 먼저 문장을 수행한 다음에 조건식을 검사한다. 따라서 문장이 적어도 한 번은 수행된다.
#include <stdio.h>
int main(){
int i = 100;
do {
printf("Regulus Black\n");
i++;
} while (i < 50);
return 0;
}
분기문 break
- 가까운 반복문을 탈출한다.
분기문 continue
- 가까운 반복문의 시작 부분으로 이동한다.
분기문 return
- 함수를 호출한 곳으로 돌아간다.
- main 함수 안에서 return을 만나면 프로그램이 종료된다.
#include <stdio.h>
int main(){
for (int i = 1; i <= 10; i++){
if (i == 5) return 0;
else printf("%d\n", i);
}
printf("이 문장은 출력되지 않습니다.");
return 0;
}
분기문 goto
- 별다른 제약 없이, 프로그램 수행 중 특정 위치로 이동한다.
- 제어의 흐름을 갑자기 바꾸면 프로그램을 이해하기 어려워지므로 사용을 자제하는 것이 좋다.
- 이동할 문장을 가리키는 레이블(lable)을 지정해서 사용한다. 레이블은 " : "을 붙여서 만든다.
#include <stdio.h>
int main(){
for (int i = 1; i <= 10; i++){
if (i == 5) goto exit;
else printf("%d\n", i);
}
exit:
printf("이 문장은 출력됩니다.");
return 0;
}
[백준] 1009번 분산처리
#include <stdio.h>
int main(){
int t, a, b, num;
scanf("%d", &t);
for (int i = 0; i < t; i++){
scanf("%d %d", &a, &b);
num = 1;
for (int j = 0; j < b; j++){ //제곱을 하기 위한 반복문
num = (num*a)%10; //1의 자리 수만 알면 되므로 10으로 나눈 나머지를 구한다.
}
if (num == 0) num = 10;
printf("%d\n", num);
}
return 0;
}
'C언어 > C언어 이론' 카테고리의 다른 글
[C언어] 5주차 배열과 문자열 (0) | 2022.05.20 |
---|---|
[C언어] 4주차 함수 (0) | 2022.05.14 |
[C언어] 3주차 연산자 (0) | 2022.05.06 |
[C언어] 2주차 (0) | 2022.04.29 |
[C언어] 1주차 #include <stdio.h> (0) | 2022.04.02 |