※반복문이란???
→ 말그대로 같은 구조로 반복되는 명령을 내릴때 쓰는 것이 반복문이다.
이러한 반복문에는 while문, do ~ while문, for문이 있다.
※while문의 반복문 구조는?
기본적으로 이러한 형태를 가진다.
예제를 통해서 반복문의 활용에 대해 알아보자.
#include <stdio.h> int main() { int num = 0; while(3 > num) { printf("Hello world! %d \n", num); num++;
} return 0; }
|
▶위의 반복문은 아래와 같은 순서로 이루어진다.
초기 num의 값이 0이고 실행여부를 확인한다. 값이 참이므로 실행내용을 바탕으로 첫번째 반복을 실행한다.
그리고 0이었던 num의 값은 1이 증가한 상태로 다시 실행여부로 올라간다.
다시 비교연산후에 참이면 실행여부를 결정하고 실행내용을 반복한다.
값이 아직 2이므로 마저 반복하고 num값은 이제 3이된다.
비교연산결과 거짓이므로 실행하지 않고 반복문 영역을 나온다.
▶실행결과 :
Hello world! 0 Hello world! 1 Hello world! 2 |
※ 반복문 while문을 이용하여 ASCII CODE A~Z 출력하기
#include <stdio.h>
int main() {
int iCnt = 'A';
while ( 'Z' >= iCnt) { printf("%d : [ %C ]\n", iCnt , iCnt); ++iCnt; }
return 0;
} |
▶실행결과
65 : [ A ] 66 : [ B ] 67 : [ C ] 68 : [ D ] 69 : [ E ] 70 : [ F ] . . . . 90 : [ Z ] |
※ 반복문 for문을 이용하여 ASCII CODE A~Z 출력하기
#include <stdio.h> int main() {
int iCnt ;
for(iCnt = 'A' ; 'Z' >= iCnt; iCnt++) {
printf("%d : [ %C ]\n", iCnt , iCnt);
} return 0; }
|
▶실행결과 : while문하고 동일하게 나온다.
※do~while문 반복문 구조는?
→do~while문의 반복문은 while문과 달리 '반복조건'을 뒷부분에서 검사한다. 이렇듯 '반복조건'을 뒷부분에서 검사하기 때문에, 처음부터 '반복조건'을 만족하지 못하면 '반복영역'을 한번도 실행하지 않는 while문과 달리, 반복영역을 최소한 한번은 실행하는 구조이다.
▶예제를 통해서 한번 알아보자.
#include <stdio.h>
int main() { int num=0; do { printf("Hello world! \n"_; num++; }while(num<3);
return 0;
} |
→while문과는 반복조건의 검사위치가 다르며, 이로 인해서 반복영역을 최소한 1회 이상 실행한다는 점이 while문과의 유일한 차이점이다.
▶do~while문 실습해보기.
#include <stdio.h>
int main() { int total=0; int num=0; do { printf("정수 입력(0 to quit): "); scanf("%d", &num); total = total + num; }while(num!=0); printf("합계: %d \n", total);
return 0;
} |
▶실행결과 :
→위 예제는 사용자로부터 값을 입력을 받는다. 입력받은 정수를 모두 더하는데 0을 입력할때까지 계산을 해주며 사용자가 0을 입력하면 그 순간 종료된다.
→다음은 위의 예제의 흐름도이다.
※문제풀이
#include <stdio.h>
int main() { int input; int iCnt=0; printf("Hello World! 를 몇번 출력?"); scanf("%d",&input);
while(input > iCnt) {
printf("Hello World! %d번째 \n",iCnt+1);
iCnt++;
}
} |
▶실행결과 :
#include <stdio.h>
int main() { int input; int iCnt=0; printf("3의 배수를 몇번 출력?"); scanf("%d",&input);
while(input > iCnt) {
printf("%d \t",(iCnt+1)*3);
iCnt++;
} return 0;
} |
▶실행결과 :
#include <stdio.h> int main() { int input; int isum=0;
while(0 != input) {
printf("더해야할 값을 입력하시오(0입력시 종료): "); scanf("%d",&input); isum = isum + input; } printf(" 모든 수의 합은 %d 입니다.\n",isum);
}
|
▶실행결과 :
#include <stdio.h>
int main() { int input; int iCnt=9; printf("구구단 몇단 출력?"); scanf("%d",&input);
while(0 < iCnt) {
printf("%d * %d = %d \n",input,iCnt,input*iCnt);
iCnt--;
} return 0;
} |
▶실행결과 :
#include <stdio.h>
int main() { int input; int iCnt=0; int suminput; int isum = 0; double davg = 0;
printf("몇개의 정수를 입력하시겠습니까?"); scanf("%d",&input);
while(input > iCnt) { printf("%d번째 정수입력하세요 : ", iCnt+1); scanf("%d",&suminput); isum = isum + suminput;
iCnt++;
}
davg = (double)isum /(double)input; printf(" %d 개의 정수의 평균은 %f입니다.\n", input, davg);
return 0; } |
▶실행결과 :
※중첩 반복문
▶while문으로 작성
#include <stdio.h>
int main() {
int input=0; int iCnt =0; int isum =0; while(5 > iCnt) { while(2>input) { printf("2이상의 정수를 입력하시오:"); scanf("%d",&input); } isum = isum + input; input = 0; iCnt++; } printf("5개의 정수의 합은 %d입니다.\n",isum); return 0;
} |
▶for문으로 작성
#include <stdio.h>
int main() {
int input; int iCnt; int isum =0; for(iCnt=0;5 > iCnt;iCnt++) { for(input=0;2>input;) { printf("1이상의 정수를 입력하시오:"); scanf("%d",&input); } isum = isum + input; } printf("5개의 정수의 합은 %d입니다.\n",isum); return 0;
} |
▶실행결과 : 0과 1은 덧셈에 입력이 안되고 2이상인 경우에만 입력하게 만들었다. 1이상으로 하고싶으면 위의 두번째 while문에서 조건의 2를 1로 바꿔주면된다.
#include <stdio.h> int main() {
int iCnt =0; int iCnt2 =0; while(5 > iCnt) { while(iCnt>iCnt2) { printf("o"); iCnt2++; } printf("* \n"); iCnt2 =0; iCnt++; } return 0; }
|
▶실행결과 :
#include <stdio.h> int main() { int total=0; int num; while(0 != num) { printf("정수 입력(0 to quit): "); scanf("%d", &num); total = total + num; } printf("합계: %d \n", total);
return 0; }
|
▶실행결과 :
#include <stdio.h>
int main() { int iSum=0; int iNum=0; do { iSum= iSum + iNum; iNum= iNum + 2; }while(100>=iNum);
printf("0~100사이의 짝수의 합계: %d \n", iSum);
return 0;
} |
▶실행결과 :
#include <stdio.h> int main() { int cur=2; int iNum=1; do { printf("구구단 [%d]단 \n",cur);
do { printf("[%d] * [%d] = [%d]\n",cur,iNum,cur*iNum); iNum++; }while(10>iNum); iNum=1; cur++; }while(10>cur);
return 0; }
|
▶실행결과 :뒤에거는 너무 길어서 생략했습니다.
#include <stdio.h>
int main() {
int inFi; int inSe; int iCnt; int iSum;
printf("사이값의 합을 계산할 첫번째 숫자는?:"); scanf("%d",&inFi);
printf("사이값의 합을 계산할 두번째 숫자는?:"); scanf("%d",&inSe); printf("%d",inFi); iSum=inFi; inFi= inFi+1; for(;inFi<inSe+1;inFi++) { iSum=iSum + inFi;
printf(" + %d",inFi); } printf(" = %d [사이값들의 합계입니다.] \n",iSum);
return 0;
} |
▶실행결과 :
#include <stdio.h>
int main() {
int input; int iCnt; int iFac=1;
printf("몇 !(팩토리)를 계산할 것인가?:"); scanf("%d",&input);
printf("%d",1); for(iCnt=2;input+1>iCnt;iCnt++) { iFac=iFac * iCnt;
printf(" * %d",iCnt); } printf(" = %d [ %d!의 결과값] \n",iFac,input);
return 0;
} |
▶실행결과 :
오늘 하루도 수고하셨습니다.
부족한거나 틀린거 있으면 지적해주세요^^
출처 :http://ryuwoo.tistory.com/53