본문 바로가기

Programming Language/C

[C언어] 혼공C 예제 연습_반복문을 활용한 구구단, 교차되는 별 찍기 코드

320x100

혼공C에 대한 C언어 자습 파일입니다.

출처 : 혼자 공부하는 C 언어 (hanbit.co.kr)

 

이번 시간에는 간단하게, 반복문과 중첩된 for문을 사용해서 만든 c파일을 구현해 보겠습니다.

 

1) for문만 사용해서 구구단을 출력하는 프로그램

 

목표는 2단, 3단, 4단, ... 9단까지 차례로 곱셈을 표현하는 구구단 표를 만드는 것입니다.

 

제어 변수는 교재의 경우, 2가지만 사용했지만 이번 코드의 경우, i와 j를 곱한 변수를 따로 저장하기 위해 k라는 변수를 다시 선언해줍니다. 

 

 

#include <stdio.h>

int main(void)
{
	int i, j, k;
	for (i = 2; i < 10; i++) // i가 2에서 9까지 변하면서 8번 반복함
	{
		for (j = 1; j < 10; j++)
		{
			k = j * i;
			printf("%d x %d = %d\n", i, j, k);
		}
		printf("\n");
	}
	return 0;
}

 

 

 

 

2) *가 교차되는 별표 찍기

 

for문과 if문, continue를 사용해서 아래와 같이 만드는 것이 목표입니다.

 

행과 열을 보통 파이썬에서 matrix를 만들때처럼 i와 j로 설정합니다.

for문 안에 for문을 만들어서, 교차되는 것을 표현하겠습니다.

 

실행문은 \(i + j = 4\)가 되는 조건식, \(i == j\)가 같은 경우의 조건식에만 반응하여 \(*\)를 찍도록 만듭니다. 

그 외의 경우에는 무조건 한칸 띄어줍니다.

 

안쪽의 for문이 다 돌아가면(변수 i 사용) \n을 통해 줄을 바꿔서 위의 조건식을 다시 적용시킵니다.

 

#include <stdio.h>
int main(void)
{
	int i = 0, j = 0; // 별이 존재하는 경우는 1. 행과 열이 합쳐서 4가 되는 경우
	for (j = 0; j < 5; j++) // 2. 행과 열 값이 같은 경우, 이렇게 두 가지만 존재함
	{
		for (i = 0; i < 5; i++)
		{
			if (i + j == 4) 
			{
				printf("*");
			}
			else if (i == j)
			{
				printf("*");
			}
			else
			{
				printf(" "); // 위의 두 경우가 아니면 space로 띄어줌
				continue;
			}
		}
		printf("\n", j);
	}
	return 0;
}

 

이를 구현한 화면입니다.

 

 

더 좋은 풀이

 

#include <stdio.h>
int main(void)
{
	int i, j; 
	for (i = 0; i < 5; i++)
	{
		for (j = 0; j < 5; j++)
		{
			if (i + j == 4) || (i == j)
			{
				printf("*");
			}
			else
			{
				printf(" ");
			}
		}
		printf("\n", j);
	}
	return 0;
}

 

if 문을 굳이 else if 까지 써서 실행문을 복잡하게 만들지 않았습니다. 논리 연산자 \(||(or)\)을 사용해서

둘 중 하나만 참인 조건식을 만들었네요.

 

다만 실제상황에서 for문과 if문 만에 집중하지 않고 ||를 쓸 수 있을지 의문이 드긴 합니다.

 

이상으로 프로그램은 마치겠습니다.

728x90