c언어 구구단 출력하기

지난 글에서는 반복문( for, while, do ~ while)의 사용법에 대해서 공부했습니다. 이번에는 반복문속에 반복문을 사용해서 구구단을 만들어보겠습니다. 

 

for문을 사용해 1단씩 나오는 구구단 

1단씩 나오는 구구단을 그냥 만들면 재미가 없죠?? 그래서 지난번에 배웠던 scanf함수를 같이 응용해서 출력하고 싶은 단 수를 입력하고 해당 단수를 계산하는 구구단을 만들어봤습니다. 

#include <stdio.h>

int main(void) {
	
	int a; // 구구단 1 ~ 9까지 증가할 변수
	int gugudan;  // 단 수를 저장할 변수 

	printf("출력하고 싶은 단 입력:");
	scanf("%d", &gugudan);  //scanf함수를 활용해서 출력하고 싶은 단 수를 입력받음 

	printf("출력하는 단 %d입니다\n", gugudan);   //입력받은 단수를 printf함수로 출력해 확인 
	for (a = 1; a < 10; a++)   // a가 10보다 작을동안 a를 1씩 증가시키는 반복문 시작
	{
		printf("%d * %d = %d\n", gugudan , a, a * gugudan);  // 단 수와 a값을 보여주고 a*단수를 곱함

	}
}

필요한 변수는 구구단 계산을 위해 1 ~ 9까지 증가시키기 위한 변수 a 와 출력하고 싶은 구구단의 단 을 입력하는 gugudan 변수 두개를 선언하고 scanf함수를 활용해 gugudan 변수의 값을 입력받았습니다. 

 

반복문을 통해서 a 값을 1 ~ 9까지 증가시키며 반복문을 돌면서 gugudan의 값과 계속해서 곱해줍니다. 

 

다중 반복문을 활용한 1단 ~ 9단까지 구구단을 출력하는 예제! 

가로 줄에 한단씩 계산
세로줄에 한단씩 계산

위에 사진을 보면 첫번째 사진은 첫번째줄에 1단, 2번째 줄에 2단, 3번째 줄에 3단으로 구성되는 구구단이고 두번째 사진은 구구단을 세로로 정렬한 사진입니다. 먼저 첫번째 사진의 소스코드를 보면서 이해해보도록 하겠습니다. 

 

#include <stdio.h>

int main(void) {
	
	int a;
	int b;

	for (a = 1; a < 10; a++) 
	{
		for (b = 1; b < 10; b++) {
			printf("%d * %d = %d   ", a, b, a * b);
		}
		printf("\n");
	}
   
}

for문속에 for문을 활용해 구구단을 만드는 소스입니다.

반복문 속에 반복문은 a값이 1일때 b값을 증가시키는 반복문이 거짓이 될때까지 반복문을 계속 동작하고 a값을 2로 증가시켜 줍니다. 즉 첫번째 반복문 1회당 반복문 속에 있는 반복문은 10회를 반복하게 되는 것입니다. 

 

printf("%d * %d = %d", a, b, a * b); 로 출력을 하게 되면 

까지 출력을 하게 되고  b값을 증가시키는 for문이 끝난뒤에 printf("\n") 줄바꿈을 하고  a값을 증가시켜 다시 반복하게 됩니다. 이렇게 출력한다면 구구단은 한줄에 한단씩 출력하게 될 것입니다. 

 

그렇다면 왼쪽부터 1단 ~ 9단 식으로 출력하는 프로그램을 만들고 싶을때는 어떻게 해야하는가??

#include <stdio.h>

int main(void) {
	
	int a;
	int b;

	for (a = 1; a < 10; a++) 
	{
		for (b = 1; b < 10; b++) {
			printf("%d * %d = %d   ", b, a, a * b);  // a, b 위치를 b, a로 변경
		}
		printf("\n");
	}
   
}

아주 간단합니다! printf 함수의 a와 b의 위치를 바꿔주기만 하면 됩니다. 앞뒤를 바꾸게 되면 b값이 증가하는 반복문을 수행할 동안은 a값은 고정됩니다. 그렇다면 b값을 단 으로 생각하고 a값을 1~9까지 증가시키는 값이라고 생각하시면 됩니다. 

댓글

Designed by JB FACTORY