티스토리 뷰
[14강] 조건문
if | switch | ||
조건에 따라서 다른 명령어들을 수행 | 주어진 값에 맞는 명령어들을 수행 **break에 주의! 브레이크나 나올때까지 쭉쭉쭉 실행! |
||
if (조건) { 조건이 만족할 때 처리; } |
[문제] switch(a){ case 0 : printf("%d\n",b++); break; case 1 : printf("%d\n",++b); break; default: print(%d\n,b); break; } |
||
* if ~ else문 if (조건) { 조건이 만족할 때 처리; } else { 조건이 아닐때 처리 } |
* 다중if문 if (조건1) { 조건1이 만족할 때 } else if (조건2) { 조건2가 만족할 때 } else { 모든 조건이 아닐때 } |
[풀이] a=0 → case 0 → b를 출력 :1 → b++ 이므로 b = 2 ** 만약 break가 없다면? a=0 → case 0 → b를 출력 :1 → b++ 이므로 b = 2 수행하고, case1 → b++이므로 b= 3 → b를 출력: 3, break가 또 없으면? deafult수행 → b를 출력:3 |
[15,16,17,19강] 반복문
for | while | do-while |
정해진 횟수만큼 반복 | 조건이 만족하는 동안 반복 | 무조건 한번 수행 후 조건이 만족하는 동안 반복 |
for(초기식;조건식;증감식){ 수행하는 작업들 } (1) continue :더이상 아래 문장을 실행하지 않고 반복문 처음으로 돌아감 (2) break : 반복문을 빠져나감 |
while (조건) { 수행하는 작업들 } |
do { 수행하는 작업들 } while(조건) |
[문제] int i, sum=0; for (i=1; i<=10; i +=2) { if( i%2&&i%3) continue; sum += i; } printf("%d, sum); |
[문제] int a,b; a=2; while(a-->0){ printf("a= %d\n",a) } for (b=0; b<2; b++ ) { printf("a= %d\n",a++); } |
[문제] int i=3; do { printf("i= %d\n", i); i++; } while(i<3); printf("sum= %d\n",i); |
[풀이] (i=1) <=10 참이므로 반복문 실행 (i=1)%2=1 참 && i%3 = 1참,반복문 실행 continue 만나 반복문 처음으로 돌아감 i= i+2 실행되어 i= 1+2 =3 i=3<=10 참, 3%2=1 && 3%3=0 거짓 sum = sum+i = 0+3 = 3 i= i+2 실행되어 i= 3+2 =5 i=5<=10 참, 5%2=1 && 5%3=2 참 continue 만나 반복문 처음으로 돌아감 i= i+2 실행되어 i= 5+2 =7 i=7<=10 참, 7%2=1 && 7%3=1 참 continue 만나 반복문 처음으로 돌아감 i= i+2 실행되어 i= 7+2 =9 i=9<=10 참, 9%2=1 && 9%3=0 거짓 sum = sum+i = 3+9 = 12 i= i+2 실행되어 i= 9+2 =11 i=11<= 거짓이므로 for문 빠져나감 sum 을 출력해야 하므로 12 출력 |
[풀이] while문 시작 a=2 >0 참이므로 조건문 실행 → a-- 이므로 a=2-1=1, a=1 출력 a=1>0 참 이므로 조건문 실행 → a--이므로 a=1-1=0, a=0 출력 a=0 >0 거짓이므로 while문을 빠져나옴 ***** 하지만 a--는 해줘야 하므로 a=-1 for문 시작 b=0<2 참이므로 조건문 실행 a=-1출력 후 a=-1+1=0 → b=0+1=1 b=1<2 참이므로 조건문 실행 a=0출력후 a=0+1=1 →b=1+1=2 b=2<2 거짓이므로 for문 빠져나감 출력은 a=1 / a=0 / a=-1 / a=0 a=1, b=2 |
[풀이] do는 무조건 실행이므로 i=3출력 i++이므로 i=4 while 조건 비교 i=4<3 거짓이므로 do에 있는 반복문을 빠져나옴 sum = 4 출력 |
[18강] 조건문+반복문 복합 문제(while, if문)
[문제] int a=120, b=45; while(a != b) { if(a>b) a = a-b; else b= b-a; } printf("%d",a); |
[풀이] (a=120) != (b=45) 참이니까 조건문 수행 a=120 > b=45 참이므로 a= a-b 수행 a= 120-45=75 (a=75) != (b=45) 참이니까 조건문 수행 a=75 > b=45 참이므로 a=a-b 수행 a=75-45=30 (a=30) != (b=45)참이므로 조건문 수행 a=30 > b=45 거짓이므로 ***else를 수행, 나가는거 아님 b=b-a이므로 b=45-30=15 (a=30) != (b=15) 참이므로 조건문 수행 a=30 > b=15 참이므로 a=a-b수행, a=30-15=15 (a=15) != (b=15) 거짓이므로 whille문 빠져나감 a를 출력해야 하므로 15를 출력 |
[20강] 다중 for문, if문, continue, break
[문제] 다중 for문 for(i=0; i<2; i++){ for(j=0;j<2;j++){ printf("i: %d, j: %d",i,j); } } |
[풀이] i=0 → i<2, j=0 → j<2, i:0, j:0 출력 j++ → j=1<2 → i:0, j:1출력 j++ → j=2<2 → 거짓으로 빠져나옴 i++ i=1→ i<2, j=0 → j<2, i:1, j:0 출력 j++ → j=1<2 → i:1, j:1출력 j++ → j=2<2 → 거짓으로 빠져나옴 i++ i=2 →i<2 거짓 빠져나옴 |
[문제] continue : 위로 올라감 for(i=0; i<3; i++){ if(i==1) continue; sum++ } |
[풀이] i=0<3참, i==1 거짓이므로 sum++수행 sum=1 i++ 이므로 i==1<3참, i==1참이므로 continue수행 i++ 이므로 i==2<3참, i==1 거짓이므로 sum=2 i++이므로 i==3<3거짓이므로 끝 |
[문제] break : 아예 빠져나옴 for(i=0; i<3; i++){ if(i==1) break; sum++ } |
[풀이] i=0<3참, i==1 거짓이므로 sum++수행 sum=1 i++ 이므로 i==1<3참, i==1참이므로 break for문을 빠져나옴. sum=1 |
[문제] int i,j,sum=0; for(i=1; i<10; i++){ for(j=1;j<10;j++){ if(j%3==0) continue; if(j%4==0) break; sum++ } } |
[풀이] 규칙 찾기 i=1<10참, j=1<10참, j%3=1,i%4=1,sum++, sum=1, j++, j=2 j=2<10,2%3=2,sum++,sum=2,j++,j=3 j=3<10,3%3=0, continue, j++, j=4 j=4<10,4%3=1,sum++;sum=3,j++,j=5 j=5,sum=4,j=6 j=6, 6%3=0, continue, j=7 j는 3,6,9일때 제외하고 sum+1 sum = +1+1+0+1+1+0+1+1+0=6 씩 증가 ... i=4<10참, j=1<10참, j%3=1,i%4=0 break, for문 빠져나옴 i++ i=4,8일때 sum++안함 따라서 sum=6+6+6+0+6+6+6+0+6=6*7=42 |
※ 출처 : 흥달쌤 깨알 C언어 14~20강 https://youtu.be/x2oltFUOAes?si=p0knWy9Iha9pLwoJ
※ 컴파일 사이트 : http://ideone.com
반응형
'AI > 정보처리기사(C언어)' 카테고리의 다른 글
[정보처리기사 실기] C언어 총 정리(6) static 변수, 재귀함수, 중복 재귀함수 (0) | 2024.05.21 |
---|---|
[정보처리기사 실기] C언어 총 정리(5) 함수와 변수의 유효범위 (0) | 2024.05.20 |
[정보처리기사 실기] C언어 총 정리(4) - 2차원 배열과 포인터, 포인터 배열, 배열 포인터, 구조체 (0) | 2024.05.19 |
[정보처리기사 실기] C언어 총 정리(3) 배열과 포인터 (0) | 2024.05.18 |
[정보처리기사 실기] C언어 총 정리(1) 프로그래밍 기초 (2) | 2024.05.16 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 갓생
- 프로그래머스
- 습관
- Ai
- C언어
- llm
- 루틴
- Python
- 실기
- 오블완
- 운동
- 경제
- 미라클모닝
- 오픽
- opic
- 아침운동
- IH
- 뉴스
- 기초
- 스크랩
- 티스토리챌린지
- 빅데이터 분석기사
- 고득점 Kit
- 영어회화
- 다이어트
- SQL
- 줄넘기
- 아침
- ChatGPT
- 30분
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함