본문으로 건너뛰기

제어문 조건문 반복문

제어문

순차

a = 1;
printf("%d", a);

선택 (조건문)

조건의 참(True)과 거짓(False) 에 따라 선택하여 실행

if(a >= 0)
printf("양수");

종류

  • if(조건)
  • if(조건) ~ else
  • if(조건) ~ else if(조건) ~ else
  • switch(변수) ~ case
  1. if(조건)

형식

if(조건) { }

특징

  • 조건에 따라 선택하여 실행함
  • 블록으로 그룹핑 함
  1. 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);
}
}
  1. 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");
}
}
  1. 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(조건);
  1. for

형식

for(초기값; 조건; 증감치){ 실행문장; ... }

특징

  • 조건이 참일 동안 실행
  • 증감치 설정 가능
  • For(;;)로 작성할 경우, 무한 반복
for(i=1; i <= 5; i++){
print("*"):
}
i조건(T/F)결과
1T`*`
2T`**`
3T`***`
4T`****`
5T`*****`
#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;
}
  1. while

형식

while(조건){ 실행문장; ... }

특징

  • 조건이 참일 동안 실행
  • 변수의 증감이 자동으로 되지 않으므로 필요시 증감을 위한 수식을 추가
  • 무한반복 등 반복문의 제어를 위하여 breakcontinue 사용이 가능함
i = 1;

while(i <= 5;){
print("*"):
i++;
}
i조건(T/F)결과
1T`*`
2T`**`
3T`***`
4T`****`
5T`*****`
#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;
}
  1. do ~ while

형식

do{ 실행문장; ... }while(조건);

특징

  • 조건이 참일 동안 실행
  • 반드시 한번은 실행 - do 블록문
  • 변수의 증감이 자동으로 되지 않으므로 필요시 증감을 위한 수식을 추가
  • 무한반복 등 반복문의 제어를 위하여 breakcontinue 사용이 가능함
i = 1;

do{
print("*"):
i++;
} while(i <= 5);
i조건(T/F)결과
1T`*`
2T`**`
3T`***`
4T`****`
5T`*****`
#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;
}