6 반복문의 기본 for 문 여러 번 반복하는 작업은 for 문으로!
이 장에서 다룰 내용 단순 for 문 1 2 중첩 for 문 그 외 for 문에 관한 이야기 3
01_단순 for 문 반복문 특정 문장을 반복하게 만들어 주는 것 주로 for 문과 while 문 사용
[기본예제 6-1] 같은 문장을 반복하여 출력하는 예 01 #include <stdio.h> 02 03 int main() 04 { 05 printf("안녕하세요? 빙글빙글 for 문을 공부중입니다. ^^\n"); 06 printf("안녕하세요? 빙글빙글 for 문을 공부중입니다. ^^\n"); 07 printf("안녕하세요? 빙글빙글 for 문을 공부중입니다. ^^\n"); 08 printf("안녕하세요? 빙글빙글 for 문을 공부중입니다. ^^\n"); 09 printf("안녕하세요? 빙글빙글 for 문을 공부중입니다. ^^\n"); 10 }
[기본예제 6-2] 기본 for 문 사용 예 01 #include <stdio.h> 02 03 int main() 04 { 05 int i; 06 07 for (i=0 ; i<5 ; i++) 08 { 09 printf("안녕하세요? 빙글빙글 for 문을 공부중입니다. ^^\n"); 10 } 11 } for 문 사용
01_단순 for 문
01_단순 for 문 for 문의 기본 형식
01_단순 for 문 for 문의 개념 이해와 표현 방식
01_단순 for 문 for 문의 동작 과정
01_단순 for 문 반복 실행할 문장이 2개 이상이면 블록 사용
[기본예제 6-3] for 문과 블록 사용 예 01 #include <stdio.h> 02 03 int main() 04 { 05 int i; 06 for ( i=0 ; i < 3 ; i++ ) 07 { 08 printf("안녕하세요? \n"); 09 printf("반갑습니다 \n"); 10 } 11 12 printf("\n\n"); 13 14 for ( i=0 ; i < 3 ; i++ ) 15 printf("안녕하세요? \n"); 16 printf("반갑습니다 \n"); 17 } for 문에 블록 사용 for 문에 블록을 사용하지 않은 경우
[기본예제 6-4] 기본 for 문 사용 예 ① 01 #include <stdio.h> 02 03 int main() 04 { 05 int i; 06 07 for (i = 5 ; i > 0 ; i--) 08 { 09 printf("%d : 안녕하세요? 빙글빙글 for 문을 공부중입니다. ^^\n", i); 10 } 11 } 초기값을 5로 지정, i 값을 1씩 줄여가며 출력
[기본예제 6-5] 기본 for 문 사용 예 ② 01 #include <stdio.h> 02 03 int main() 04 { 05 int i; 06 07 for (i=1 ; i<=5 ; i++) 08 { 09 printf("%d \n", i); 10 } 11 } 초기값을 5로 지정, i 값을 1씩 줄이면서 출력
[기본예제 6-6] for 문을 사용하지 않은 덧셈 01 #include <stdio.h> 02 03 int main() 04 { 05 int hap; 06 07 hap = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10; 08 09 printf(" 1에서 10까지의 합: %d \n", hap); 10 } hap 변수에 1~10 더하기
[기본예제 6-7] for 문을 활용하여 합계 구하기 ① 01 #include <stdio.h> 02 03 int main() 04 { 05 int hap; 06 int i; 07 08 for ( i=1 ; i<=10 ; i++) { 09 hap = hap + i; //hap +=i; 10 } 11 12 printf(" 1에서 10까지의 합: %d \n", hap); 13 } 값을 누적할 변수 선언 1~10까지 변할 변수 선언 1~10까지 반복 hap에 누적시킴
01_단순 for 문 쓰레기(garbage) 값의 이해 변수 안에 이미 다른 값이 있는 상태로 연산을 수행함으로써 비정상적인 결과 값 출력 프로그램 내에서 변수가 초기화되지 않은 것이 원인 누적값을 표현하는 변수의 초기화를 수행함으로써 문제 해결 int hap = 0;
[기본예제 6-8] for 문을 활용하여 합계 구하기 ② 01 #include <stdio.h> 02 03 int main() 04 { 05 int hap=0; 06 int i; 07 08 for ( i=1 ; i<=10 ; i++) { 09 hap = hap + i; 10 } 11 12 printf(" 1에서 10까지의 합: %d \n", hap); 13 } 누적할 변수를 초기화 함
01_단순 for 문 변수 i와 hap의 변화
[응용예제 6-9] for 문을 활용하여 합계 구하기 ③ 01 #include <stdio.h> 02 03 int main() 04 { 05 int hap = 0; 06 int i; 07 08 for ([ ① ]; i<=1000 ; [ ② ]) { 09 hap = hap + i; 10 } 11 12 printf(" 500에서 1000까지의 홀수의 합: %d \n", hap); 13 } i 값을 501부터 2씩 증가시키며 합을 구함 i = 501 i = i + 2
01_단순 for 문
[기본예제 6-10] for 문을 활용하여 합계 구하기 ④ 01 #include <stdio.h> 02 03 int main() 04 { 05 int hap=0; 06 int i; 07 int num; 08 09 printf(" 값 입력 : "); 10 scanf("%d", &num); 11 12 for ( i=1 ; i <= num ; i++) { 13 hap = hap + i; 14 } 15 16 printf(" 1에서 %d까지의 합: %d \n", num, hap); 17 } 누적할 변수를 초기화 함 1씩 증가할 변수 입력받은 최종값 최종값을 직접 입력받음 1부터 입력받은 최종값까지 반복하며 값을 더하기
응용예제 6-11] for 문을 활용하여 합계 구하기 ⑤ 01 #include <stdio.h> 02 03 int main() 04 { 05 int hap=0; 06 int i; 07 int num1, num2, num3; 08 09 printf(" 시작값, 끝값, 증가값 입력 : "); 10 scanf("%d %d %d", &num1, &num2, &num3 ); 11 12 for ( i=num1 ; i <= num2 ; [ ① ] ) { 13 hap = hap + i; 14 } 15 16 printf(" %d에서 %d까지 %d씩 증가한 합: %d \n", num1, num2, num3, hap); 17 } 입력받은 세 변수 선언 입력 시 공백으로 구분 i = i + num3 입력받은 증가값을 for 문에 사용
[기본예제 6-12] for 문을 사용한 구구단 프로그램 01 #include <stdio.h> 02 03 int main() 04 { 05 int i; 06 int dan; 07 08 printf(" 몇 단 ? "); 09 scanf("%d", &dan); 10 11 for ( i=1 ; i <=9 ; i++) { 12 printf(" %d X %d = %d \n", dan, i, dan*i); 13 } 14 } 입력값을 저장할 변수 선언 계산할 단 입력 1부터 9까지 반복하며 구구단 출력
01_단순 for 문
02_중첩 for 문 중첩 for 문의 개념 for 문 내부에 또 다른 for 문이 들어있는 형태 총 반복 횟수 = 바깥 for 문 횟수 x 안쪽 for 문
02_중첩 for 문 중첩 for 문의 동작
[기본예제 6-13] 중첩 for 문의 사용 예 ① 01 #include <stdio.h> 02 03 int main() 04 { 05 int i, k; 06 07 for ( i=0 ; i<3 ; i++) 08 { 09 for ( k=0 ; k<2 ; k++) 10 { 11 printf("중첩 for 문입니다. (i값: %d, k값: %d)\n", i, k); 12 } 13 } 14 } 반복할 변수 i, k 선언 바깥 3회 반복 내부 2회 반복 i, k 값 총 6번 출력
02_중첩 for 문 중첩 for 문에서의 i와 k 값의 변화
02_중첩 for 문
02_중첩 for 문 중첩 for 문을 활용한 구구단 출력(세로 방향)
[기본예제 6-14] 중첩 for 문의 사용 예 ② 01 #include <stdio.h> 02 03 int main() 04 { 05 int i, k; 06 07 for ( i = 2 ; i <= 9 ; i ++) 08 { 09 for ( [ ① ] ) 10 { 11 printf(" %d X %d = %d \n", i, k, i*k); 12 } 13 printf("\n"); 14 } 15 } 2~9단까지 반복 k = 1 ; k <= 9 ; k ++ 1~9까지의 뒷자리 숫자 반복 구구단 출력 각 단마다 한 줄 띄움
02_중첩 for 문
02_중첩 for 문 중첩 for 문을 활용한 구구단 출력(가로 방향)
[기본예제 6-15] 중첩 for 문의 사용 예 ③ 01 #include <stdio.h> 02 03 int main() 04 { 05 int i, k; 06 07 for ( i = 1 ; i <= 9 ; i ++) 08 { 09 for ( k = 2 ; k <= 9 ; k ++) 10 { 11 printf("%2dX%2d=%2d", [ ① ] ); 12 } 13 printf("\n"); 14 } 15 } 1~9까지의 뒷자리 숫자 반복 2~9단까지 반복 k, i, k*i 각 단별로 한 줄씩 출력 한 줄 띄움
03_그 외에 for 문에 관한 이야기 여러 개의 초기값과 증감식 사용하는 for 문 초기값과 증감식이 없는 for 문 초기값이 하나일 필요 없음 초기값이 여러 개일 때는 콤마로 구분 증감식도 하나 이상 사용 가능 초기값과 증감식이 없는 for 문 세 가지 형식 모두 결과가 같음 for ( 초기식 1, 초기식 2 ; 조건식 ; 증감식 1, 증감식 2 )
03_그 외의 for 문에 관한 이야기 초기식이 없더라도 그 자리는 반드시 세미콜론(;)으로 구분 ①번과 ③번 소스의 비교
[기본예제 6-16] 다양한 for 문의 형태 ① 01 #include <stdio.h> 02 03 int main() 04 { 05 int i, k; 06 07 for ( i = 1, k = 1 ; i <= 9 ; i++, k++ ) 08 printf (" %d X %d = %d \n", i, k, i*k); 09 } 반복할 변수 i, k 선언 초기값과 증감식이 2개
03_그 외의 for 문에 관한 이야기 무한루프 for 문에서 초기값, 조건식, 증감식을 모두 지운 형태 사용자가 어떤 작업을 계속 반복하고자 할 때 사용 사용자가 Ctrl+C 키를 눌러야 중단됨
[기본예제 6-17] 다양한 for 문의 형태 ② 01 #include <stdio.h> 02 03 int main() 04 { 05 int i; 06 i = 0; 07 for ( ; ; ) 08 { 09 printf ("%d \n", i) ; 10 i ++ ; 11 } 12 } 초기값, 조건식, 증감식 없으므로 무한루프를 의미
[기본예제 6-18] 다양한 for 문의 형태 ③ 01 #include <stdio.h> 02 03 int main() 04 { 05 int a, b; 06 07 [ ① ]( ; ; ) 08 { 09 printf ("더할 두 수 입력 (멈추려면 Ctrl+C) : ") ; 10 scanf("%d %d", &a, &b); 11 12 printf("%d + %d = %d \n", a, b, a+b); 13 } 14 } for 무한루프 두 값을 입력받음 출력
[예제모음_13] 구구단 출력 예제설명 중첩 for 문을 사용하여 제목과 구구단을 출력하는 프로그램이다. 실행결과
예제모음_13 소스 01 #include <stdio.h> 02 03 int main() 04 { 05 int i, k; 06 07 for( i = 2 ; i <= 9 ; i++ ) 08 printf(" #제%d단#", i); 09 10 printf("\n\n"); 11 12 for ( i = 1 ; i <= 9 ; i++) 13 { 14 for ( k = 2 ; k <= 9 ; k++) 15 { 16 printf("%2dX%2d=%2d", k, i, k*i); 17 } 18 printf("\n"); 19 } 20 } 제목 출력 2줄 띄움 중첩 for 문으로 구구단 출력
[예제모음_14] 아스키 코드표 출력 실행결과 예제설명 for 문과 if 문을 사용하여 0~127번까지 아스키 코드의 10진수, 16진수, 문자를 출력하는 프로그램이다. 실행결과
예제모음_14 소스 01 #include <stdio.h> 02 03 int main() 04 { 05 int i; 06 07 for ( i= 0 ; i < 128 ; i++) 08 { 09 if ( i%16 == 0 ) 10 { 11 printf("---------------------/n"); 12 printf("10진수 16진수 문자 /n"); 13 printf("---------------------/n"); 14 } 15 printf ("%5d %5x %5c\n", i, i, i); 16 } 17 } 0부터 127까지 16행 마다 제목 출력 i 값을 10진수, 16진수, 문자로 출력
[예제모음_15] 입력한 문자를 거꾸로 출력 실행결과 예제설명 for 문을 사용하여 입력된 영문자나 숫자를 다시 거꾸로 출력하는 프로그램 실행결과
예제모음_15 소스 01 #include <stdio.h> 02 03 int main() 04 { 05 char str[100]; 06 int str_cnt; 07 int i; 08 09 printf("영문자 및 숫자를 입력 (100자 이하) : "); 10 scanf("%s", str); 11 12 printf("\n"); 13 printf("입력한 문자열 ==> %s\n", str); 14 printf("변환된 문자열 ==>"); 15 문자 배열 문자 개수 변수 문자 입력 두 번째 수 입력
예제모음_12 소스 16 str_cnt = strlen(str); 17 18 for ( i= str_cnt ; i >=0 ; i--) 19 { 20 printf ("%c", str[i]); 21 } 22 23 printf("\n"); 24 } 입력 문자 개수 계산 입력된 개수만큼 거꾸로 출력
요약 for 문 중첩 for 문 반복해야 할 문장을 원하는 만큼 반복 for 문의 형식 { 반복할 문장들; } for 문 안에 또 다른 for 문이 있는 형태 중첩 for 문의 형식 구구단 계산 및 출력에 많이 쓰임 중첩 for 문 for ( i = 0 ; i < 반복횟수 ; i ++ ) { for ( k = 0 ; k < 반복횟수 ; k++) 반복할 문장들; }
요약 for 문의 다른 형태 for 문의 초기값, 조건식, 증감식은 하나 이상 생략 가능
IT CookBook for Beginner, C 언어 기초 6장 끝 www.themegallery.com Thank You ! IT CookBook for Beginner, C 언어 기초 6장 끝