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

C언어 24차시 for문, 주의점, 연습문제, 중첩 for 반복문

Olivia-BlackCherry 2023. 3. 26. 15:00

목차

    1. for문

    특정한 조건이 만족될 때까지 반복적으로 루프를 돈다. 

    for  루프(loop)라고도 부른다. 

    일정한 횟수만큼 반복할 때, 유용하게 사용된다. 

    for (초기식; 조건식; 증감식){
       문장들;
    }

    출처: C언어 콘서트

    1) 초기식: 루프 시작시 사용되며, 루프를 초기화한다. 

     

    2) 조건식: 참인 경우 문장을 실행하며 루프가 계속 돌고, 거짓이면 종료한다.

    논리연산자로 여러 가지 조건을 결합할 수도 있다.

     

    3) 증감식: for문이 무한루프에 빠지지 않으려면 종료 조건이 있어야 한다.

    반복문에서는 루프를 제어해주는 변수(루프 제어 변수)를 만들어 이를 증가, 감소 시켜 조건식의 조건 상태를 변화시킨다. 

    주로 증가 수식이 사용되나, 경우에 따라 감소 수식도 사용된다.

     

     

    2. 주의점

    2-1 순서 주의하기 

    문장을 실행한 다음, 증감식을 수행한다.

    초기식 -> 조건식 -> 문장실행 -> 증감식 

    출처: C언어 콘서트

     

    2-2 ; ; ; --> 무한루프 -> Ctrl +C 정지

    for 문의 초기화, 조건식, 증감식이 모두 비어 있으면 무한 루프에 빠진다.

    이를 중지하려면 Ctrl -C를 누른다.

     

     

    3. 연습문제

    3-1 1-10까지 정수의 합 구하기

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h> 
    
    int main(void)
    {
    	int i, sum;
    
    	sum = 0;
    	for (i = 0; i < 11; i++) {
    		sum += i;
    	}
    	printf("1-10까지 정수의 합은 %d 입니다.\n", sum);
    	return 0;
    }

    >> 1-10까지 정수의 합은 55 입니다.

     

     

    3-2 직사각형 모양을 출력하기

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h> 
    
    int main(void)
    {
    	int i;
    	char star='*';
    
    	//첫 번째 줄
    	for (i = 0; i < 10; i++) {
    		printf("%c", star);
    	}
    	printf("\n");
    
    	//두 번째 줄
    	for (i = 0; i < 6; i++) {
    		printf("%c        %c\n", star, star);
    	}
    
    	//세 번째 줄
    	for (i = 0; i < 10; i++) {
    		printf("%c", star);
    	}
    	printf("\n");
    
    	return 0;
    }

     

     

    3-3 팩토리얼 값 계산하기

    팩토리얼 : n! = 1x2x3x..xn

    다양한 알고리즘으로 팩토리얼 값을 계산하는 코드를 작성해보자.

     

    -n과 가까운 숫자부터 곱하는 경우

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h> 
    
    int main(void)
    {
    	int number, i;
    	
    	printf("구하고자 하는 숫자를 입력하세요\n");
    	scanf("%d", &number);
    	printf("%d!를 계산해보겠습니다\n", number);
    
    	//첫 번째 줄
    	for (i = number; i > 1; i--) {
    		number = number * (i-1);
    	}
    	printf("정답은 %d입니다\n", number);
    
    	return 0;
    }

     

    -1부터 곱하는 경우 ex) 1*4*3*2

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h> 
    
    int main(void)
    {
    	int number, i;
    	int fact;
    
    	printf("구하고자 하는 숫자를 입력하세요\n");
    	scanf("%d", &number);
    	fact = number;
    
    	printf("%d!를 계산해보겠습니다\n", number);
    
    	for (i = 1; i < number; i++) {
    		fact = fact * i;
    	}
    	printf("정답은 %d입니다\n", fact);
    
    	return 0;
    }

     

    -1부터 곱하는 경우 ex) 1*1*2*3*4

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h> 
    
    int main(void)
    {
    	int number, i;
    	int fact=1;
    
    	printf("구하고자 하는 숫자를 입력하세요\n");
    	scanf("%d", &number);
    
    	printf("%d!를 계산해보겠습니다\n", number);
    
    	for (i = 1; i <= number; i++) {
    		fact = fact * i;
    	}
    	printf("정답은 %d입니다\n", fact);
    
    	return 0;
    }

     

     

    4. 중첩 반복문 nested loop

    반복문도 중첩되어 사용될 수 있다. 

    반복문 안에 반복문이 있는 구조이다. 

    바깥에 위치한 반복문을 바깥쪽 반복문 Outer loop

    안쪽에 위치한 반복문을 안쪽 반복문 Inner loop라고 한다.

    	for (i = 1; i <= x; i++) {
    		for (j = 1; j <= y; j++) {
    			printf("%d*%d=%d\n", i, j, i*j);
    		}
    		printf("\n");