2015년 2학기 프로그래밍개론및 실습 과목으로 본 내 용은 강의 교재인 생능출판사, 두근두근 C 언어 수업,
천인국지음을 발췌 수정하였음
프로그래밍개론및 실습
CHAPTER 11
조건으로 반복하기
예제
#include <stdio.h>
int main(void) {
printf("환영합니다. ");
printf("환영합니다. ");
printf("환영합니다. ");
printf("환영합니다. ");
printf("환영합니다. ");
return 0;
}
“환영합니다”
start
end
“환영합니다”
“환영합니다”
“환영합니다”
“환영합니다”
순서도
“환영합니다”
start
i<=5
end
fsi0
ii+1
No
Yes
“환영합니다”
start
end
“환영합니다”
“환영합니다”
“환영합니다”
“환영합니다”
while 문
while 문은 어떤 조건을 정해놓고 반복을 하는 구조while 문의 구조
기본 예제
#include <stdio.h>
int main(void) {
int i = 0;
while (i < 5) {
printf ("환영합니다. ");
i++;
}
return 0;
}
#include <stdio.h>
int main(void) {
printf("환영합니다. ");
printf("환영합니다. ");
printf("환영합니다. ");
printf("환영합니다. ");
printf("환영합니다. ");
return 0;
}
반복문
#include <stdio.h>
int main(void) {
int i = 0;
while (i < 5) {
printf ("환영합니다. ");
i++;
}
return 0;
}
“환영합니다”
start
i< 5
end
fsi0
ii+1
No
Yes
핵심 예제 : 0부터 9까지 출력
0, 1, 2, ..,, 9까지를 차례대로 화면에 출력하는 프로그램을 작성하여 보자.예제 소스
#include <stdio.h>
int main(void) {
int i = 0;
while (i < 10) {
printf ("%d ", i);
i++;
}
printf(“\n”);
return 0;
}
핵심 예제 : (1+2+...+9+10) 계산
(1+2+...+9+10)의 값을 계산하는 프로그램을 작성하여 보자.예제 소스
#include <stdio.h>
int main(void) {
int i = 1;
int sum = 0;
while (i <= 10) {
sum = sum + i;
i++;
}
printf("합계=%d\n", sum);
return 0;
}
핵심 예제 : 팩토리얼 계산
팩토리얼을 계산하는 프로그램을 작성하여 보자. 팩토리얼 n!은 1부 터 n까지의 정수를 모두 곱한 것을 의미한다.예제 소스
#include <stdio.h>
int main(void) {
int i = 1;
int factorial = 1;
while (i <= 10) {
factorial = factorial * i;
i++;
}
printf ("10!은 %d입니다. \n", factorial);
return 0;
}
핵심 예제 : 구구단 출력
구구단 중에서 3단을 반복문을 이용하여 출력하여 보자. 3*1, 3*2, 3*3, .., 3*9까지 9번 반복시키면 출력하면 될 것이다.예제 소스
#include <stdio.h>
int main(void) {
int i = 1;
while (i <= 9) {
printf("3*%d = %d\n", i, 3*i);
i++;
}
return 0;
}
핵심 예제 : 최소값 구하기
사용자로부터 받은 정수 중에서 최소값이나 최대값을 찾아 보자.예제 소스
#include <stdio.h>
#include <limits.h>
int main(void) {
int number, min_value = INT_MAX;
printf("정수를 입력하시오(종료는 Ctrl+z)\n");
while(scanf("%d", &number) != EOF) {
if( number < min_value )
min_value = number;
}
printf("최소값은 %d \n", min_value);
return 0;
}
핵심 예제 : 카운트 다운 프로그램
5->4->3->2->1과 같이 카운트를 하고 카운트가 0이 되면 “발사”라고 화면에 출력한다.예제 소스
#include <stdio.h>
int main(void) {
int count;
printf("숫자를 입력하시오: ");
scanf("%d", &count);
while( count > 0 ) {
printf("%d \n", count);
count--;
}
printf("발사! \n");
return 0;
}
핵심 예제 : 배수의 합 계산
1부터 100사이의 모든 3의 배수의 합을 계산하여 출력하는 프로그램 을 반복 구조를 사용하여 작성하라.예제 소스
#include <stdio.h>
int main(void) {
int number;
int sum = 0;
number = 1;
while( number <= 100 ) {
if( number %3 == 0 ) sum += number;
number++;
}
printf("%d입니다. \n", sum);
return 0;
}
do-while 문
반복 조건을 루프의 처음이 아니라 루프의 끝에서 검사한다는 것이 다르다.핵심 예제 : 기본 예제
do-while 문을 사용하여서 “Hello 10“부터 ”Hello 1“까지를 출력하여 보자.예제 소스
#include <stdio.h>
int main(void) {
int i = 0;
do{
printf("환영합니다. %d\n", i);
i = i +1;
} while (i < 5);
return 0;
}
“환영합니다”
start
i < 5
end
fsi0
ii+1
Yes No
반복문
#include <stdio.h>
int main(void) {
int i = 0;
while (i < 5) {
printf ("환영합니다. ");
i++;
}
return 0;
}
“환영합니다”
start
i< 5
end
fsi0
ii+1
No
Yes
반복문
“환영합니다”
start
i< 5
end
fsi5
ii+1
No
Yes
“환영합니다”
start
i < 5
end
fsi5
ii+1
Yes No
핵심 예제 : 0을 입력할 때까지 합계
사용자로부터 양수를 받아서 합계를 한다. 사용자가 0을 입력하면 반 복을 중단하고 이제까지의 합계를 화면에 출력한다.예제 소스
#include <stdio.h>
int main(void) {
int x, sum = 0;
do {
printf("정수를 입력하시오(0이면 종료) : ");
scanf("%d", &x);
sum = sum + x;
} while (x != 0);
printf("정수의 합계 : %d \n", sum);
return 0;
}
핵심 예제 : 신호등 프로그램
예를 들어서 사용자가 신호등의 색상을 나타내는 문자인 ‘r’, ‘y’, ‘g’ 을 입력할 때까지 반복해보자.예제 소스
#include <stdio.h>
int main (void)
{ char color;
do{
printf ("신호등 색상을 입력하세요(r, y, g): ");
scanf (" %c", &color);
} while (color!='r' && color!='y' && color!='g');
switch (color) {case 'r':
printf ("정지! \n");
break;
case 'y':
printf ("조심! \n");
break;
case 'g':
printf ("진행! \n");
break;
}return (0);
}