제어문 조건문 반복문
제어문
순차
a = 1;
printf("%d", a);
선택 (조건문)
조건의 참(True)과 거짓(False) 에 따라 선택하여 실행
if(a >= 0)
printf("양수");
종류
- if(조건)
- if(조건) ~ else
- if(조건) ~ else if(조건) ~ else
- switch(변수) ~ case
- if(조건)
형식
if(조건) { }
특징
- 조건에 따라 선택하여 실행함
- 블록으로 그룹핑 함
- if(조건) ~ else
형식
if(조건){ }else{ }
특징
- 조건에 따라, 참인 경우와 거짓인 경우로 나누어 실행함
- 블록으로 그룹핑 함
#include <stdio.h>
int main(void){
double f, c;
printf("f를 입력:");
scanf("%lf", &f);
if(f > 32){
c = (f - 32) / 1.8;
printf("c = %lf \n", c);
}
else {
printf("f = %lf \n", f);
}
}
- if(조건) ~ else if(조건) ~ else
형식
if(조건 1){ }else if(조건 2){ } ... else{ }
특징
- 다중 조건에 따라 실행함
- 블록으로 그룹핑함
#include <stdio.h>
int main(void){
int score;
printf("2, 3의 배수 판독기 입니다. 숫자를 입력하세요: ");
scanf("%d", &score);
if (score % 2 == 0){
printf("2의 배수입니다. 입력값 %d \n",score);
} else if(score % 3 == 0) {
printf("3의 배수입니다. 입력값 %d \n",score);
} else {
printf("etc \n");
}
}
#include <stdio.h>
int main(void){
char ch;
printf("알파벳을 입력하세요 :");
scanf("%c", &ch);
if (ch >= 'a' && ch <= 'z'){
printf("소문자 입니다. \n");
}
else if (ch >= 'A' && ch <= 'Z'){
printf("대문자 입니다 \n");
}
else {
printf("알파벳이 아닙니다. \n");
}
}
- switch(변수) ~ case
형식
switch(변수){ case ~ : ... }
특징
- 다중 조건에 따라 실행함
- 블록으로 그룹핑 함
- case의 조건에는 문자 변수, 정수 변수만 기재 가능함 (문자열, 실수, 식을 조건에 표기시 오류)
#include <stdio.h>
int main(void){
char op;
int num1, num2;
printf("숫자를 입력해 주세요: \n");
scanf("%d%d", &num1, &num2);
printf("계산할 부호를 입력해 주세요: \n");
scanf(" %c", &op);
switch (op) {
case '+':
printf("%d + %d = %d \n", num1, num2, num1 + num2);
break;
case '-':
printf("%d - %d = %d \n", num1, num2, num1 - num2);
break;
case '*':
printf("%d x %d = %d \n", num1, num2, num1 * num2);
break;
case '/':
printf("%d / %d = %f \n", num1, num2, (float)num1 / num2);
break;
default:
printf("계산할 수 없는 식 입니다. \n");
break;
}
}
반복
조건이 **참(True)**일 동안, 반복 실행하는 것
while(a >= 0){
printf("양수");
}
종류
- for(초기값; 조건; 증감치)
- while(조건)
- dowhile(조건);
- for
형식
for(초기값; 조건; 증감치){ 실행문장; ... }
특징
- 조건이 참일 동안 실행
- 증감치 설정 가능
- For(;;)로 작성할 경우, 무한 반복
for(i=1; i <= 5; i++){
print("*"):
}
i | 조건(T/F) | 결과 |
---|---|---|
1 | T | `*` |
2 | T | `**` |
3 | T | `***` |
4 | T | `****` |
5 | T | `*****` |
#include <stdio.h>
int main(void){
int sum = 0;
int i;
for(i=1; i <= 100; i++){
if (i % 2 == 0){
sum = sum + i;
}
}
printf("1 ~ 100 까지의 짝수의 합 : %d \n", sum);
return 0;
}
- while
형식
while(조건){ 실행문장; ... }
특징
- 조건이 참일 동안 실행
- 변수의 증감이 자동으로 되지 않으므로 필요시 증감을 위한 수식을 추가
- 무한반복 등 반복문의 제어를 위하여
break
와continue
사용이 가능함
i = 1;
while(i <= 5;){
print("*"):
i++;
}
i | 조건(T/F) | 결과 |
---|---|---|
1 | T | `*` |
2 | T | `**` |
3 | T | `***` |
4 | T | `****` |
5 | T | `*****` |
#include <stdio.h>
int main(void){
int sum = 0;
int i = 1;
while (i <= 100) {
if (i % 2 == 0){
sum = sum + i;
}
i++;
}
printf("1 ~ 100 까지의 짝수의 합 : %d \n", sum);
return 0;
}
- do ~ while
형식
do{ 실행문장; ... }while(조건);
특징
- 조건이 참일 동안 실행
- 반드시 한번은 실행 - do 블록문
- 변수의 증감이 자동으로 되지 않으므로 필요시 증감을 위한 수식을 추가
- 무한반복 등 반복문의 제어를 위하여
break
와continue
사용이 가능함
i = 1;
do{
print("*"):
i++;
} while(i <= 5);
i | 조건(T/F) | 결과 |
---|---|---|
1 | T | `*` |
2 | T | `**` |
3 | T | `***` |
4 | T | `****` |
5 | T | `*****` |
#include <stdio.h>
int main(void){
char operator;
int num1, num2;
while (1){
printf("숫자를 입력해 주세요: \n");
scanf("%d%d", &num1, &num2);
printf("계산할 부호를 입력해 주세요: \n");
scanf(" %c", &operator);
if (operator == 'q'){
printf("계산기를 종료합니다. \n");
break;
}
switch (operator) {
case '+':
printf("%d + %d = %d \n", num1, num2, num1 + num2);
break;
case '-':
printf("%d - %d = %d \n", num1, num2, num1 - num2);
break;
case '*':
printf("%d x %d = %d \n", num1, num2, num1 * num2);
break;
case '/':
printf("%d / %d = %f \n", num1, num2, (float)num1 / num2);
break;
default:
printf("계산할 수 없는 식 입니다. \n");
break;
}
}
return 0;
}