C언어 기초 (2) : for, while 반복문

STUDY_J·2024년 6월 24일

C언어 기초 (1) 을 공부하며 궁금했던 내용들

  • c파일 첫 시작에 #include <stdio.h> 는 무엇을 의미할까?

    • #include: 전처리기 지시자.
      컴파일러가 본격적으로 코드를 컴파일하기 전에 전처리 단계에서 해당 파일을 포함하도록 지시한다.
    • <stdio.h>: 표준 입력 출력 헤더 파일.
      printf, scanf 등 표준 입출력 함수의 선언이 포함되어 있음.
      이 파일을 포함함으로써 프로그램에서 표준 입출력 함수를 사용할 수 있게 됩니다.
    • #include <stdio.h>는 C 프로그램에서 표준 입출력 기능을 사용하기 위해 반드시 포함해야 하는 헤더 파일이다.
  • int main()은 무엇을 의미할까?
    • int: main 함수의 반환 타입.
      main 함수는 프로그램의 진입점이며, 정수를 반환하도록 정의되어 있다.
      일반적으로 0(return)은 프로그램이 정상적으로 종료되었음을 나타내며, 다른 값은 오류를 나타낼 수 있습니다.
    • main: 프로그램의 시작 지점.
      C 프로그램은 main 함수부터 실행을 시작함.

for 반복문

  • ++의 개념
#include <stdio.h>

int main(){

	int b = 20;
	printf("b = %d\n", ++b);
	printf("b = %d\n", b++);
	printf("b = %d\n", b);

	return 0;
}

여기서 숫자 변수 앞에 ++이 붙는다면 기존 값에서 1을 더한 후에 출력.

숫자 변수 뒤에 ++이 붙는다면 다음 출력때 1이 더해져서 출력됨을 의미함.

  • for를 사용한 반복문
    for(초기화식; 조건식; 증감식){
    }
#include <stdio.h>

int main(){

	for( int i=1; i<=10; i++){
		printf("Hello world %d\n", i);
	}
	return 0;

}

while 반복문

  • while 을 사용한 반복문
    while(조건){ }
#include <stdio.h>

int main(){

	int i = 1;
	while(i <= 10){
	
		printf("Hello wolrd %d\n", i++);
	}
	return 0;
}
  • 주의점 : 우분투에서 무한반복에 빠지면 ctrl + c를 누르면 된다.
    ctrl + d 는 터미널 종료

do while 반복문

  • do while 을 사용한 반복문
    do { } while(조건)
#include <stdio.h>

int main(){

	int i = 1;
	do {
		printf("Hello world %d\n", i++);	
	} while(i <= 10);
	
	return 0;
}

이중 반복문

2중 반복문 코드 예시 및 실행 결과

#include <stdio.h>

int main(){

	for(int i = 1; i <=3; i++){
	
		printf("First for : %d\n", i);
		
		for(int j = 1; j <= 5; j ++){
		
			printf("  Second for : %d\n", j);
		
		}
	
	}
	
	return 0;

}

이중 반복문으로 구구단 작성하기

#include <stdio.h>
	
int main(){

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

이중 반복문으로 * 피라미드 쌓기

#include <stdio.h>

int main(){

	for(int i=1; i <= 5; i++){
	
		for(int j=1; j<=i; j++){
			printf("*");
		}
		printf("\n");
	}
	return 0;
}

(줄바꿈에 주의하기)

  • 심화버전

피라미드를 역순으로 출력하기

#include <stdio.h>

int main(){

	for(int i=1; i<=5;i++){
	
		for(int j = 5; j>i; j--){
			printf(" ");
		}
		for(int k = 1; k<=i; k++){
			printf("*");
		}
		printf("\n");
	}
	return 0;
}

프로젝트

  • 층의 개수를 입력받아 피라미드 쌓기

강의 예시 코드

#include <stdio.h>

int main(void)
{
	int floor;
	printf("몇 층으로 쌓겠느냐");
	scanf("%d", &floor);

	for (int i = 0; i < floor; i++)
	{
		for (int j = i; j < floor - 1; j++)
		{
			printf("S"); // printf(" "); 
		}
		for (int k = 0; k < i * 2 + 1; k++)
		{
			printf("*");
		}
		printf("\n");
	}

	return 0;
}          

내가 작성한 코드

#include <stdio.h>

int main(){

	int floor;
	printf("How many layers? : ");
	scanf("%d", &floor);
	
	for(int i=1; i <= floor; i++){
		for(int j = floor; j > i; j--){
			printf(" ");
            
        //j를 층의 개수와 동일하게 설정, 1씩 작아지도록 함
		}
		for(int k = 1; k<=i; k++){
			printf("*");
            
        //k는 1부터 시작하고, i보다 작다면 별을 출력
        //그러면 바로 위에서 작성한 심화버전처럼 출력이 된다
        
		}
		for(int h = 1; h < i; h++){
			printf("*");
            
        //위 심화버전에서 1개의 코드를 추가해준다
        //h는 1부터 시작하여 i보다 작을때 별을 출력하게 한다
        //그러면 0개부터 1개씩 증가하며 추가적인 별을 출력한다.
        
		}
		printf("\n");
	} 
	return 0;
}

0개의 댓글