반복제어 표월성 passwd74@cherub.sungkyul.edu
개요 for() 문 break문과 continue문 while문 do-while문
for() 문 for() 문형식 for( 표현식1; 표현식2; 표현식3) 여러문장들 ; 표현식 1 : 초기화 (1 번만수행 ) 표현식 2 : 반복문수행조건 ( 없으면무한반복 ) 표현식 3 : 반복문수행횟수
for() 문 for( 초기화 ; 조건 ; 증감식 ) 초기화실행 여러문장들 ; 증감식실행 수행순서 조건검사 참 문장들실행 초기화실행 -> 조건검사 -> 문장들실행 -> 증감식실행 -> 조건검사 -> 문장들실행 -> 증감식실행 거짓 for() 문종료
for() 문 for() 문의여러가지표현 (2) #include <stdio.h> (1) #include <stdio.h> int i=0; for( ; i<10; i++) // 초기화부분생략 (4) int i; for(i=0; i<10; i++) printf("%d\n", i); for(;;) 여러문장들 ; // 무한루프 (3) printf("%d\n", i); #include <stdio.h> int i; for(i=0; i<10; ) // 증감식부분생략 printf("%d\n", i); i++;
for() 문 문 )1 부터 10,000 까지의합을구하시오!
for() 문 예 ) 6_1.c #include<stdio.h> #include<stdio.h> int i, sum=0; int i, sum; for(i=1; i <= 10000; i++) sum += i; for(i=1, sum=0; i <= 10000; i++) sum += i; printf(" Sum from 1 to 10000 = %d \n", sum); printf(" Sum from 1 to 10000 = %d \n", sum);
for() 문 문 ) 0부터 1000까지정수중홀수만더하는프로그램을작성하시오! 단총합이 30,000 보다크면중단하시오!
for() 문 문 ) 0 에서 100 까지의정수에서 3 의배수를구하고, 구한 3 의배수중짝수인것만을더하는프로그램을작성하시오!
for() 문 예 ) 6_3.c #include <stdio.h> int i, num, score, result=0; printf("the number of student :"); scanf("%d",&num); for(i=0; i < num; i++) printf("insert your score :"); scanf("%d",&score); printf("input score : %d \n", score); if(score > 100 score < 0) printf("input score is error\n"); exit(1); if(score >= 90 && score <= 100) printf("your grade is A \n"); else if(score >= 80 && score < 90) printf("your grade is B \n"); else if(score >= 70 && score < 80) printf("your grade is C \n"); else if(score >= 60 && score < 70) printf("your grade is D \n"); else printf("your grade is F \n");
for() 문 ( 이중반복문 ) #include <stdio.h> int i, j, num, class, score, result=0; printf("the number of class :"); scanf("%d",&class); printf("the number of student :"); scanf("%d",&num); for(i=0; i < class; i++) for(j=0; j < num; j++) printf("insert your score :"); scanf("%d",&score); printf("input score : %d \n", score); if(score > 100 score < 0) printf("input score is error\n"); exit(1); printf("your Class is = %d \n", i+1); if(score >= 90 && score <= 100) printf("your grade is A \n"); else if(score >= 80 && score < 90) printf("your grade is B \n"); else if(score >= 70 && score < 80) printf("your grade is C \n"); else if(score >= 60 && score < 70) printf("your grade is D \n"); else printf("your grade is F \n"); // 내부 for 문 // 외부 for 문
break 문 break 문 현재반복제어 ( 반복문 ) 를종료 (for 문, while 문, do-while 문 ) switch 문을빠져나갈때 어던조건을만족하는경우에반복문을빠져나올수있도록해야함. ( 조건문과함께사용해야함 ) for( 초기화 ; 조건 ; 증감식 ) // 반복문 if( 조건 )... break; // 조건이참일때반복문종료 for( 초기화 ; 조건 ; 증감식 ) // 외부반복문 for( 초기화 ; 조건 ; 증감식 ) // 내부반복문... if( 조건 )... break; // 조건이참일때내부반복문종료
break 문 break 문 #include <stdio.h> int i; for(i=0; i<=10; i++) if(i==5) else break; printf( %d\n, i);
continue문 continue문 현재의반복을멈추고, 즉시다음반복을하게함 continue 이하의문장을수행하지않지만, 반복문을계속수행 for문, while문, do-while문내에서만사용 for( 초기화 ; 조건 ; 증감식 ) 여러문장들 1; if( 조건 ) continue; // 조건이맞는경우 for 문으로 여러문장들 2;
continue 문 continue 문 #include <stdio.h> int i; for(i=0; i<=10; i++) if(i==5) else continue; printf( %d\n, i);
while 문 while 문 for 문과동일하게반복작업수행 for( 초기화 ; 조건 ; 증감식 ) 여러문장들 ; 초기화 ; while( 조건 ) 여러문장들 ; 증감식 ; for() 문과 while() 문의차이점 for() 문 : 주로횟수가정해져있는단순반복제어에사용 while() 문 : 어떤문장들이수행되는과정중에발생하는결과에따라서반복문이종료되는경우.
while 문 예 ) 6_5.c #include <stdio.h> int i=0, sum=0; // 초기화 // i 가 10000 보다작은가? 검사후, i 값증가 // 만약 ++i < 10000 인경우 : i 가먼저증가한후, i 가 10000 보다작은가? 검사 while(i++ < 10000) sum += i; printf(" Sum from 1 to 10000 = %d \n", sum);
while 문 문 ) 정수 1 부터 10,000 까지더하는프로그램을작성하시오! 단, 합이 34560000 보다커지면, 그때까지의합은얼마인가? (break 와 while 문을사용 )
while 문 예 ) 6_7.c (break 문을사용한 while 문 ) #include <stdio.h> int i=0, sum=0; while(i++ < 10000) sum += i; if(sum > 34560000) break; printf(" Sum from 1 to %d = %d \n",i, sum);
while 문 예 ) 0 부터 2 의배수가되는수만더하고, 그합이 50005000 보다크면프로그램을중단하는프로그램을작성하시오! (continue 문을이용한 while 문 )
while 문 예 ) 6_9.c (continue 문을이용한 while 문 ) #include <stdio.h> int i=0, j, sum=0; while(sum < 50005000) if(i++%2) sum += (i-1); continue; // 2 의배수 : 나머지 0 => 거짓 printf("sum from 1 to %d = %d \n", i-1, sum);
do-while 문 형태 do 여러문장들 ; while( 조건 ); 반복문이먼저수행 조건검사 (while( 조건 )) 참 : 반복 (do문) 거짓 : 반복문종료 즉, 조건과무관하게최소한 1 번은수행
do-while 문 예 ) 6_10.c // 입력 1 : 19 // 입력 2 : 25 #include <stdio.h> int i, num, sum; sum = 4000; do i = 50; scanf("%d",&num); sum -= i*num; while((sum <= 3000) && (sum >= 0)); printf("sum = %d\n", sum);
연습문제 (p112 ~ 113) 풀어보세요 ^^