C언어/참고서: C언어 콘서트

C언어 22차시 반복문 iteration, system함수, 루프제어변수

Olivia-BlackCherry 2023. 3. 25. 01:07

목차

    1. 반복문 iteration

    동일한 문장을 여러 번 반복시키는 구조이다. 

    반복을 하면 프로그램이 간단하고 빠르다. 

     

    2. 반복문 종류

    2-1 while

    특정한 조건이 참(true)인 경우, 계속 반복한다. 

    조건이 거짓(false)가 되면 중단한다.

    실행할 문장들은 { } 중괄호로 감싸서 블록으로 만든다.

    while(조건식)
    {
        실행할 문장들 ;
    }

    - 팩토리얼 구하기

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h> 
    
    int main(void)
    {
    	int i = 5;
    	int factorial = 1;
    
    	while (i >= 1)
    	{
    		factorial = i * factorial;
    		i -= 1;
    	}
    
    	printf("%d", factorial);
    }

    반복 조건은 한 번씩 반복할 때마다 반복을 계속할 것인지를 결정하는데, 이때 쓰이는 것이 i이다.

    변수 i를 루프 제어 변수라고 한다.

    - 구구단 구하기

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h> 
    
    int main(void)
    {
    	int number, i, result ;
    	printf("구구단을 계산해보겠습니다. 몇단을 계산할까요?\n");
    	scanf("%d", &number);
    
    	i = 1;
    	while (i <= 9)
    	{
    		result = number * i;
    		printf("%d*%d=%d\n", number, i, result);
    		i += 1;
    	}
    	return 0;
    }

     

    -1부터 1000까지 모두 더하기

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h> 
    
    int main(void)
    {
    	int sum, i;
    	sum = 0;
    	i = 1;
    	while (i <= 1000)
    	{
    		i += 1;
    		sum += i;
         }
    	printf("%d\n", sum);
    
    	return 0;
    }

    >>500500

     

    - 두 배씩 값 불리기

    에베레스트 산 높이가 8800m이다. 종이를 접어 에베레스트 산 보다 높게 쌓아야 하는데, 한 번 접을 때마다 두께가 2배씩 늘어나고 무한대로 접을 수 있다. 처음 종이의 두께는 1mm이다. 종이 접기 횟수를 구한다.

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h> 
    
    int main(void)
    {
    	double paper_height = 1;
    	const double mt = 8800000;
    	int count=0;
    
    	while (paper_height <= mt)
    	{
    		paper_height *= 2;
    		count += 1;
         }
    	printf("%d\n", count);
    
    	return 0;
    }

    >>24회

     

    -디지털 시계를 만들기

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h> 
    #include <stdlib.h>
    #include <windows.h>
    
    int main(void)
    {
    	int hour, min, sec;
    	hour = min = sec = 0;
    
    	while (1)
    	{
    		system("cls"); //화면 지우기
    		printf("%d : %d : %d", hour, min, sec);
    		sec++;
    		if (sec == 60) {
    			min++;
    			sec == 0;
    		}
    		if (min == 60) {
    			hour++;
    			min == 0;
    		}
    		if (hour == 24) {
    			hour = min = sec = 0;
    		}
    		Sleep(1000); //1000초 동안 프로그램을 재운다.
         }
    
    	return 0;
    }

     

    - system 함수

    인수로 실행시킬 프로세스 이름을 받아서 호출한다. 

    그 프로세스가 종료될 때까지 기다리는 역할도 한다. 

    사용법은 두 가지이다. 

    1) 경로 지정

    2) 쉘 명령어로 입력

    system("notepad")

    system("explore.exe")

    system("cls")