쉽게 풀어쓴 c 프로그래밍program201701.lucidotech.kr/lesson/chapter_11.pdf · 30명의...
TRANSCRIPT
© 2015 생능출판사 All rights reserved
CHAPTER 11 조건으로 반복하기
© 2015 생능출판사 All rights reserved
반복문
Q) 반복 구조는 왜 필요한가?
A) 같은 처리 과정을 되풀이하는 것이 필요하기 때문이다. 학생
30명의 평균 성적을 구하려면 같은 과정을 30번 반복하여야
한다.
© 2015 생능출판사 All rights reserved
예제 #include <stdio.h>
int main(void)
{
printf("환영합니다. ");
printf("환영합니다. ");
printf("환영합니다. ");
printf("환영합니다. ");
printf("환영합니다. ");
return 0;
}
환영합니다.
환영합니다.
환영합니다.
환영합니다.
환영합니다.
같은 처리가 반복된다.
© 2015 생능출판사 All rights reserved
반복문의 종류
© 2015 생능출판사 All rights reserved
스크래치에서의 반복문
© 2015 생능출판사 All rights reserved
스크래치 포탄궤적
© 2015 생능출판사 All rights reserved
while 문
while 문은 어떤 조건을 정해놓고 반복을 하는 구조
© 2015 생능출판사 All rights reserved
while 문의 구조
© 2015 생능출판사 All rights reserved
기본 예제 #include <stdio.h>
int main(void)
{
int i = 0;
while (i < 5)
{
printf ("환영합니다. ");
i++;
}
printf ("반복이 종료되었습니다. ");
return 0;
}
환영합니다.
환영합니다.
환영합니다.
환영합니다.
환영합니다.
반복이 종료되었습니다.
© 2015 생능출판사 All rights reserved
핵심 예제: 0부터 9까지 출력
0, 1, 2, ..,, 9까지를 차례대로 화면에 출력하는 프로그램을 작성하여
보자.
© 2015 생능출판사 All rights reserved
예제 소스 #include <stdio.h>
int main(void)
{
int i = 0;
while (i < 10)
{
printf ("%d ", i);
i++;
}
printf(“\n”);
return 0;
}
© 2015 생능출판사 All rights reserved
핵심 예제: (1+2+...+9+10) 계산
(1+2+...+9+10)의 값을 계산하는 프로그램을 작성하여 보자.
© 2015 생능출판사 All rights reserved
예제 소스 #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;
}
© 2015 생능출판사 All rights reserved
핵심 예제: 팩토리얼 계산
팩토리얼을 계산하는 프로그램을 작성하여 보자. 팩토리얼 n!은 1부터 n까지의 정수를 모두 곱한 것을 의미한다.
© 2015 생능출판사 All rights reserved
예제 소스 #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;
}
© 2015 생능출판사 All rights reserved
핵심 예제: 구구단 출력
구구단 중에서 3단을 반복문을 이용하여 출력하여 보자. 3*1, 3*2,
3*3, .., 3*9까지 9번 반복시키면 출력하면 될 것이다.
© 2015 생능출판사 All rights reserved
예제 소스 #include <stdio.h>
int main(void)
{
int i = 1;
while (i <= 9)
{
printf("3*%d = %d\n", i, 3*i);
i++;
}
return 0;
}
© 2015 생능출판사 All rights reserved
핵심 예제: 최소값 구하기
사용자로부터 받은 정수 중에서 최소값이나 최대값을 찾아 보자.
© 2015 생능출판사 All rights reserved
예제 소스 #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;
}
© 2015 생능출판사 All rights reserved
핵심 예제: 카운트 다운 프로그램
5->4->3->2->1과 같이 카운트를 하고 카운트가 0이 되면 “발사”라고
화면에 출력한다.
© 2015 생능출판사 All rights reserved
예제 소스 #include <stdio.h>
int main(void)
{
int count;
printf("숫자를 입력하시오: ");
scanf("%d", &count);
while( count > 0 ) {
printf("%d \n", count);
count--;
}
printf("발사! \n");
return 0;
}
© 2015 생능출판사 All rights reserved
핵심 예제: 배수의 합 계산
1부터 100사이의 모든 3의 배수의 합을 계산하여 출력하는 프로그램을 반복 구조를 사용하여 작성하라.
© 2015 생능출판사 All rights reserved
예제 소스 #include <stdio.h>
int main(void)
{
int number;
int sum = 0;
number = 1;
while( number <= 100 )
{
if( number %3 == 0 )
sum += number;
number++;
}
printf("1부터 100 사이의 모든 3의 배수의 합은 %d입니다. \n", sum);
return 0;
}
© 2015 생능출판사 All rights reserved
do-while 문
반복 조건을 루프의 처음이 아니라 루프의 끝에서 검사한다는 것이
다르다.
© 2015 생능출판사 All rights reserved
핵심 예제: 기본 예제
do-while 문을 사용하여서 “Hello 10“부터 ”Hello 1“까지를 출력하여
보자.
© 2015 생능출판사 All rights reserved
예제 소스 #include <stdio.h>
int main(void)
{
int i = 10;
do{
printf("Hello %d\n", i);
i = i - 1;
} while (i > 0);
return 0;
}
© 2015 생능출판사 All rights reserved
핵심 예제: 0을 입력할 때까지 합계
사용자로부터 양수를 받아서 합계를 한다. 사용자가 0을 입력하면 반복을 중단하고 이제까지의 합계를 화면에 출력한다.
© 2015 생능출판사 All rights reserved
예제 소스 #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;
}
© 2015 생능출판사 All rights reserved
핵심 예제: 신호등 프로그램
예를 들어서 사용자가 신호등의 색상을 나타내는 문자인 ‘r’, ‘y’, ‘g’ 을
입력할 때까지 반복해보자.
© 2015 생능출판사 All rights reserved
예제 소스 #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); }
© 2015 생능출판사 All rights reserved
Q & A