Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
제어변수사용
현재의반복횟수를출력해보자.
#include <stdio.h>
int main(void){
int i;
for (i = 0; i < 5; i++){
printf("%d \n", i);}
printf(“ %d반복이종료 . \n", i);return 0;
}
i= 0 , i<5, i++
start
반복이종료
end
i
예제소스
// 반복을이용한정수합프로그램#include <stdio.h>
int main(void){
int i, sum=0, limit=5;
for (i = 1; i <= limit; i++)
sum += i;
printf(“ %d\n", sum);
return 0;}
i= 1 , i<=limit, i++
sum+=i
start
i , sum=0, limit=5
sum
end
예제소스
// 반복을이용한팩토리얼구하기#include <stdio.h>
int main(void){
long fact=1;int i, n;
printf("정수를입력하시오: ");scanf("%d", &n);
for(i = 1;i <= n; i++)fact = fact * i;
printf("%d!은 %d이다.\n",n,fact);
return 0;}
예제소스
#include <stdio.h>
int main(void){
double t;
for( t=0.0 ; t<=100.0 ; t += 10.0 ){
printf("%6.2f F = %6.2f C\n", t, (t - 32.0) * 5.0 / 9.0);}
return 0;}
예제소스
#include <windows.h>#include <stdio.h>
HWND hwnd;HDC hdc;
int main(void){
int x, y;
hwnd = GetForegroundWindow();hdc = GetWindowDC(hwnd);
MoveToEx(hdc, 100, 300, 0);LineTo(hdc, 300, 300);
MoveToEx(hdc, 100, 300, 0);LineTo(hdc, 100, 0);
for (x = 0; x < 300; x++){
y = 0.01*x*x + x;SetPixel(hdc, 100 + x, 300 - y, RGB(255, 0, 0));
}return 0;
}
while 루프와 for 루프와의관계
{
초기식
while ( 조건식 )
}
장문장1 ;
장문장2 ;
증증감식 ;
for ( 초기식 ;조건식 ;증증감식 )
{
}
장문장1 ;
장문장2 ;...
...
다양한증감수식의형태
for (i = 10; i > 0; i-- )printf("Hello World!\n");
for (i = 0; i < 10; i += 2 )printf("Hello World!\n");
for (i = 1; i < 10; i *= 2 )printf("Hello World!\n");
for (i = 0; i < 100; i = (i * i) + 2 )printf("Hello World!\n");
뺄셈 사용
2씩 증가
2를 곱한다.
어떤 수식이라도 가능
다양한증감수식의형태
for (i = 0, k = 0; i < 100; i++ )printf("Hello World!\n");
for (printf("반복시작”), i = 0; i < 100; i++ )printf("Hello World!\n");
2개 이상의 변수 초기화
어떤 수식도 가능
for ( ; ; )printf("Hello World!\n");
무한 반복 루프
// 중첩 for 문을이용하여 *기호를사각형모양으로출력하는프로그램#include <stdio.h>
int main(void){
int x, y;
for(y = 0; y < 5; y++) {
for(x = 0; x < 10; x++) printf("*");
printf("\n"); }
return 0; }
예제
예제소스
#include <stdio.h>
int main(void){
int x, dan;
for (dan = 2; dan<10; dan++){
for (x = 1; x<10; x++)printf("%d*%d=%2d ", dan, x, dan*x);
printf("\n");}return 0;
}
예제소스
#include <stdio.h>#define SUM 7
int main(void){
int diceA, diceB;
printf("합이 %d이되는경우의수를찾아봅니다. \n", SUM);printf("--------------------- \n");printf("주사위A 주사위B \n");printf("--------------------- \n");
for (diceA = 1; diceA <= 6; diceA++)for (diceB = 1; diceB <= 6; diceB++)
if ( SUM== (diceA+diceB) )printf("%d %d \n", diceA, diceB);
return 0;}
예제소스
#include <stdio.h>
int main(void) {
char c;
for(;;) {printf( "어떤키나누르세요, q는종료: " );scanf(" %c", &c);if (c == 'q')
break;}return 0;
}
#include <stdio.h>int main(void){
int i;for(i=0 ; i<10 ; i++)
if( i%3 == 0 )continue;
printf("%d ", i);
return 0;}
continue 문 현재의반복을중단하고다음반복을시작하게한다.
3의 배수 는 건너뛴다.
Lab:배터리관리 배터리관리프로그램을시뮬레이션하여보자. 사용자는충전과사용을반복한다. 충전은양수로, 사용은음수로입력받는다. 만약배터리가총충전용량의 10% 이하로내려가면충전이필요하다는경고를화면에출력하고프로그램을종료한다.
예제소스
#include <stdio.h>int main (void){
double capacity, remaining, amount; capacity = 5000.0;remaining = 3000.0;printf ("현재남아있는충전량: %f\n", remaining);
while (remaining > capacity * 0.10){
printf ("\n충전(+)/사용(-): ");scanf ("%lf", &amount);remaining = remaining + amount;
if (remaining < 0.0)remaining = 0.0;
if (remaining > capacity)remaining = capacity;
printf ("현재남아있는충전량: %f\n", remaining);}printf ("경고! 충전하세요!\n");return (0);
}
알고리즘
for(a=1;a<=100;a++) for(b=1;b<=100;b++) for(c=1;c<=100;c++) if( c*c = =(a*a + b*b) ) a와 b와 c를화면에출력한다.
소스
#include <stdio.h>int main(void){
int a, b, c;
for(a=1; a<=100; a++)for(b=1; b<=100; b++)
for(c=1; c<=100; c++)if(c*c== (a*a+b*b) )
printf("%d %d %d", a, b, c);return 0;
}
알고리즘
do 사용자로부터숫자를 guess로입력받는다. 시도횟수를증가한다. if( guess < answer ) 숫자가낮다고출력한다. if( guess > answer ) 숫자가높다고출력한다. while(guess != answer); “축하합니다”와시도횟수를출력한다.
소스
#include <stdio.h>int main(void){
int answer =59; // 정답int guess;int tries = 0;do {
printf("정답을추측하여보시오: ");scanf("%d", &guess);tries++;if (guess >answer) // 사용자가입력한 정수가정답보다높으면
printf("제시한정수가높습니다.");if (guess <answer) // 사용자가입력한 정수가정답보다낮으면
printf("제시한정수가낮습니다.");} while (guess !=answer);
printf("축하합니다.시도횟수=%d", tries);return 0;