본문 바로가기
  • 適者生存
WorkOut/정보처리기사

C언어 | 조건문과 반복문

by lcrvvxln 2024. 3. 18.

 

 

적자생존

7. 조건문


- IF 문 : 조건 참/거짓 여부 따라 실행 경로 다름
- Switch문 : 여러 경로 중 하나 선택


(1) IF 문

- 조건 참/ 거짓 여부로 경로 선택하는 명령문





if(조건문) {
   명령문;
}
else if {
   명령문;
}
else {
   명령문;
}
if 문 안 코드 한 줄일 경우,
중괄호 생략 가능
  • if 조건문 참 > if 안 명령문 실행
  • if 조건문 거짓 > else if 문 조건 판단
  • else if 문 참 > else if 문 명령문 실행
  • else if 문 여러 개 사용 가능
  • else if 문 모두 거짓 > else 명령문 실행

 

#include <stdio.h>

int main(){
   int x=5;
   if(x%3==0)
     printf('1');
   else if(x%3==1)
     printf('2');
   else
     printf('3');
   return 0;
}

# 3
  • x 5 선언
  • 5%3 = 2 이므로 if문, else if 문 거짓
  • else 안 명령문 실행 > 3 출력

 

(2) switch 문


- 조건 따라 여러 개 선택 경로 중 하나 선택하는 명령문

- Switch 문 내 Break

break 문 없을 경우,
첫 번째 case부터 switch 문 끝까지 동작

 

switch(식){
case 값 :
  명령문;
  break;
default:
  명령문;
}
  • switch 문의 식 계산 > 일치하는 값을 가진 case 문 실행
  • 모든 case 값 만족하지 않으면 default 명령문 실행
  • ** break 없을 경우, break 만날 때 까지 switch 문의 모든 문장 실행

 

#include <stdio.h>

int main(){
   int score=101;
   switch(score/10){
   case 10:
   case 9:
     printf('A'); break;
   case 8:
     printf('B'); break;
   default:
     printf('F');
   }
   return 0;
}


# A
  • 정수형 변수 score 101 선언
  • 101/10 = 10.1 이나 정수와 정수의 계산이므로 소수점 버리기 = 10
  • case 10으로 이동 > 명령문 없음 & break문 없음 > 다음 문장 실행
  • case 9 이동 > A 출력 후, break로 switch문 종료

 

8. 반복문

- 특정 부분 조건 만족할 때 까지 반복 실행
- 탈출 조건 없을 경우, 무한 루프


(1) while 문


- 조건 참일 동안, 해당 분기 반복 실행


 

while(조건문){
   명령문;
}

 

#include <stdio.h>

int main(){
   int i=0, sum=0;
   while (i<2){
     i++;
     sum=sum+i;
   }
   printf('%d\n',sum);
   return 0;
}

# 3
  • 정수형 변수 i, sum 0 선언
  • i 값이 2보다 작을 때까지 while 안 명령문 반복
  • i++로 1 증가 i=1, sum=0+1=1, 명령문 재반복
  • i++로 1 증가 i=2, sum=1+2=3, 조건 거짓으로 반복 종료
  • sum=3 출력

 

(2) do while 문


- while 값이 반복 주기 끝에 붙어있음
- 조건의 참/거짓과 상관 없이 무조건 한 번은 실행
- 다음부터 조건 참인 동안 분기 반복 실행 명령문

 

do{
  명령문;
}while(조건문);

 

#include <stdio.h>

int main(){
   int i=1, sum=0;
   do{
     sum=sum+i;
     i++;
   }while(i<0);
   printf('%d\n',sum);
   return 0;
}

# 1
  • 정수형 변수 i 1, sum 0 선언
  • do while 문이므로 일단 한 번 실행 > sum=0+1=1, i는 1증가 i=2
  • while 문 조건이 i가 0보다 작아야 하므로 조건 성립 x > 반복문 탈출
  • sum 1 출력

 

(3) for 문


- 초기식, 조건식, 증감식 지정하여 반복

for (초기식; 조건식; 증감식){
  명령문;
}

명령문;
  • 초기식 : 조건에 사용할 변수 초기화
  • 조건식 : 참일 경우, for문 안 명령문 반복 / 거짓이면 명령문 탈출
  • 증감식 : for문 안 명령문 한 번 완료하면 변수값 변경
  1. 초기식에 따라 변수 초기값 설정
  2. 조건 참/거짓 여부 확인
  3. 참이면 for문 안 명령문 실행
  4. 명령문 종료 후, 증감식에 따라 변수 값 변경
  5. 조건 참/거짓 여부 확인
  6. 거짓일 때까지 반복, 거짓이면 for 문 종료
  7. for문 밖 명령문 실행

 

for(..); 와 같이 for문 바로 뒤 세미콜론(;)은 반복 명령어가 없는 것

 

#include <stdio.h>

int main(){
   int i, sum =0;
   for(i=1; i<3; i++)
     sum=sum+i;
   printf('%d\n',sum);
   return 0;
}

# 3
  • 정수형 변수 i, sum 0 선언
  • for문 초기식에 따라 i=1로 초기화, 조건식이 i<3이므로 반복문 실행
  • sum=0+1=1, 반복문 완료 후 올라가서 증감식에 따라 i 1증가 (i=2)
  • 아직 조건식 만족하므로 반복문 실행 > sum=1+2=3
  • 반복문 완료 후, 다시 증감식에 따라 i 1증가 (i=3)
  • 조건 불만족으로 반복문 탈출
  • sum 3 출력

 

for문 안 코드 한 줄일 경우 (=반복문 명령어가 한 줄일 경우)
중괄호 생략 가능

=> 이중 for문도 동일

 

# c언어 이중 for문

#include <stdio.h>
int main(){
   int i,j;
   for(i=1; i<3; i++)
     for(j=1; j<3; j++)
       printf('%d\n', i*10+j);
   return 0;
}

# 11
# 12
# 21
# 22
  • 정수형 변수 i,j 선언
  • 첫 번째 for문 초기식에 따라 i=1 초기화
  • 조건식 1<3 만족하므로 반복문 실행
  • 두 번째 for문 초기식에 따라 j=1 초기화
  • 조건식 1<3 만족하므로 반복문 실행 > 1*10+1 = 11 출력
  • 두 번째 for문 증감식에 따라 j 1 증가 (j=2) > 조건식 2<3 만족 반복문 실행
  • 1*10+2=12 출력 > 증감식에 따라 j 1 증가 (j=3) > 조건 불만족 탈출
  • 첫 번째 for문 증감식에 따라 i 1 증가 (i=2) > 조건식 2<3 만족 반복문 실행
  • 두 번째 for문 초기식 j=1 초기화 > 조건 만족으로 반복문 실행 > 2*10+1=21 출력
  • 두 번째 for문 증감식 j 1 증가 (j=2) > 조건 만족으로 반복문 실행 > 2*10+2=22 출력
  • 두 번째 for문 증감식 j 1 증가 (j=3) > 조건 불만족 탈출
  • 첫 번째 for문 증감식 i 1 증가 (i=3) > 조건 불만족 탈출

 

(4) 루프 제어 명령어

 

[1] break 문

-  반복문이나 switch문의 중간에서 탈출할 때 사용


#include <stdio.h>

int main(){
   int i=1;
   while (i<5){
     i++;
     if(i==3)
       break;
     printf('%d',i);
   }
   printf('%d',i);
   return 0;
}

# 23
  • 정수형 변수 i 1 선언
  • while 반복문에 따라 i<5 만족할 때까지 반복, 1<5이므로 반복문 실행
  • i++에 따라 1증가 (i=2)
  • i가 3이 아니므로 if문 불만족 > 2 출력
  • 2<5이므로 반복문 실행 > i++로 1증가 (i=3)
  • i가 3이므로 if문 만족 > break 로 while문 탈출
  • 3 출력

 

[2] continue 문

- 반복문에서 다음 반복으로 넘어갈 때 사용
- 아래 명령문 실행하지 않고 반복문 시작 부분으로 이동

#include <stdio.h>

int main(){
   int i=1;
   while(i<5){
     i++:
     if(i==3)
       continue;
     printf('%d',i);
   }
   printf('%d',i);
   return 0;
}

# 2455
  • 정수형 변수 i 1 선언
  • while문 조건 1<5 만족하므로 반복문 실행
  • i++에 따라 1 증가 (i=2) > 2!=3이므로 if문 불만족 > 2 출력
  • 2<5 조건문 만족으로 반복문 실행 > i 1 증가 (i=3) > i가 3이므로 if문 만족
  • if문 안 continue 실행 > while 반복문 시작 부분으로 이동 (**밑에 명령문 건너뜀**)
  • 3<5 조건문 만족으로 반복문 실행 > i 1 증가 (i=4) > if문 불만족 > 4 출력
  • 4<5 조건문 만족으로 반복문 실행 > i 1 증가 (i=5) > if문 불만족 > 5 출력
  • 5<5 while 조건 불만족으로 반복문 탈출
  • 5 (i) 출력