티스토리 뷰

[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

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
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
글 보관함