반복문
무엇인가를 여러번 반복해야 할 때, 사용하는 함수 ?
반복문의 종류는 3가지가 있다.
while, do~while, for 문
while
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | #include<stdio.h> int main() { int num=0; while(num<3) { printf("Hello world!\n"); num++; } return 0; } |
num은 0이고 3보다 작으니 당연히 그 안의 코드문이 실행이 된다. Hello world!가 출력되고 num이 1증가된다.
그리고 다시 처음으로 가서 num1은 1 3보다 작으니 코드문이 또 실행이 된다.
이렇게 반복을 하고, 어느순간 num이 3일 때, 3과 같으므로 조건이 거짓이된다. 이 때, 반복문을 빠져 나가게 된다.
10번행의 num++을 해주지 않으면, 반복이 멈추지 않는 무한루프가 된다. 반복의 조건을 무너뜨리기 위한 최소한의 연산은 꼭 필요하다.
ex)구구단
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #include<stdio.h> int main() { int dan=0,i=1; printf("몇단?"); scanf("%d",&dan); while(i<10) { printf("%d * %d = %d\n",dan,i,dan*i); i++; } return 0; } |
출력결과
몇단?4
4 * 1 = 4
4 * 2 = 8
4 * 3 = 12
4 * 4 = 16
4 * 5 = 20
4 * 6 = 24
4 * 7 = 28
4 * 8 = 32
4 * 9 = 36
ex) 중첩 while을 통한 구구단
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | #include<stdio.h> int main() { int i=2; int j=1; while(i<10) { while(j<10) { printf("%d * %d = %d\n",i,j,i*j); j++; } j=1; i++; } return 0; } |
출력결과
2 * 1 = 2
2 * 2 = 4
2 * 3 = 6
...
...
9 * 8 = 72
9 * 9 = 81
do~while문
while과 다른점은 반복조건을 뒤에서 검사한다.
처음부터 반복조건을 만족하지 못하면 반복영역을 한번도 시도하지 않는 while문과는 달리, 반복 영역을 최소한 한번은 실행하는 구조이다.
ex)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #include<stdio.h> int main() { int num=0; do { printf("Hello world!\n"); num++; }while(num<3); return 0; } |
출력결과
Hello world!
Hello world!
Hello world!
위의 중괄호가 반복영역이고, 중괄호 뒤에 등장한 것이 반복조건이다. 일단 최소 한번은 실행하고, 다음 조건을 검사한다. num =1 이 3보다 작기 때문에 ,
반복을 더 실행하고 또 조건을 검사한다. num = 2 3보다 작기 때문에 한번 더 출력을 한다. 그 후, num = 3이 돼서 조건이 거짓이 되기 때문에, 반복을 빠져 나가게 된다.
do~while문이 while문을 대체할 수 있다. while문과 do~while 문을 언제 써야하나 모르겠으면, 최소 한번 실행해야 한다면 do~while문을 쓰는게 맞다.!
입맛에 맞게 골라서 쓰면 된다.
for문
while문이 조건에 의해서 반복을 실행한다면, for 문은 횟수에 의해서 반복을 실행한다.
ex)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #include<stdio.h> int main() { int i; for(i=0;i<3;i++) { printf("Hello world!\n"); } return 0; } |
출력결과
Hello world!
Hello world!
Hello world!
for문의 옆에 소괄호에 초기식; 조건식; 증감식;이 필요하다.
초기식 : 반복을 위한 변수의 선언 및 초기화에 사용, 반복을 시작하기에 앞서 딱 한번 실행된다.
조건식 : 반복의 조건을 검사하는 목적으로 선언됨, 매 반복의 시작에 앞서 실행되며, 그 결과를 기반으로 반복 유무를 결정
증감식 : 반복의 조건을 '거짓'으로 만드는 증가 및 감소연산, 매 반복 실행 후, 마지막에 연산이 이뤄진다.
ex)0이상 사용자가 입력한 정수 이하의 값의 합
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | #include<stdio.h> int main() { int i; int num=0; int sum=0; scanf("%d",&num); for(i=0;i<=num;i++) { sum+=i; } printf("%d",sum); return 0; } |
10 // 입력한 정수
55 // 0부터 입력한 정수까지의 합
for( ; ; ) // 이처럼 초기식,조건식,증감식을 비우게되면 이는 무조껀 참으로 인식이 되어 무한루프가 된다.
ex)중첩 for 문을 이용한 구구단
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | #include<stdio.h> int main() { int i,j; for(i=2;i<10;i++) { for(j=1;j<10;j++) { printf("%d * %d = %d\n",i,j,i*j); } } return 0; } |
출력결과
2 * 1 = 2
2 * 2 = 4
2 * 3 = 6
...
...
9 * 8 = 72
9 * 9 = 81
'programming > C' 카테고리의 다른 글
C // 함수 (0) | 2017.12.13 |
---|---|
C// 조건에 따른 흐름의 분기 (0) | 2017.12.11 |
C // printf함수와 scanf 함수 (0) | 2017.12.02 |
C // 상수와 기본 자료형 (0) | 2017.12.01 |
C // 변수와 연산자 (0) | 2017.11.28 |