목차

C++ 스터디 #3: 구구단 출력하기

시간 2021년 4월 1일 목요일 20:30 ~ 22:10
장소 Google Meet
참가자 홍제준, 윤호연, 최원섭, 강동륜, 김도균, 김석호, 김진우, 류지원, 박경민, 심훈용, 안영현, 오성근, 우재원, 이언상, 임승환, 정대영, 정인하, 정지웅, 최민재, 함영석

1. 구구단 출력 예제

1.1. 구구단 2단 출력하기

구구단 2단을 출력하는 프로그램 작성하기


출력

출력 예시처럼 2 x 1 부터 2 x 9 까지 출력한다.


출력 예시

2 x 1 = 2
2 x 2 = 4
2 x 3 = 6
2 x 4 = 8
2 x 5 = 10
2 x 6 = 12
2 x 7 = 14
2 x 8 = 16
2 x 9 = 18


코드

#include <iostream>
using namespace std;

int main() {
	for (int i = 1; i <= 9; i++)
		cout << "2 x " << i << " = " << 2 * i << endl;

	return 0;
}

1.2. 숫자를 입력받아 원하는 단 출력하기

정수 N을 입력받아 구구단 N단을 출력하는 프로그램 작성하기


입력

첫째 줄에 N이 주어진다.


출력

입출력 예시처럼 N x 1 부터 N x 9 까지 출력한다.


입출력 예시

Enter a number : 5
5 x 1 = 5
5 x 2 = 10
5 x 3 = 15
5 x 4 = 20
5 x 5 = 25
5 x 6 = 30
5 x 7 = 35
5 x 8 = 40
5 x 9 = 45


코드

#include <iostream>
using namespace std;

int main() {
	int n;

	cout << "Enter a number : ";
	cin >> n;

	for (int i = 1; i <= 9; i++)
		cout << n << " x " << i << " = " << n * i << endl;

	return 0;
}

1.3. 구구단 전부 출력하기

구구단 전체를 출력하는 프로그램 작성하기


출력

출력 예시처럼 2 x 1 부터 9 x 9 까지 출력한다.


※ 탭(\t) 문자 사용하기


출력 예시

2 x 1 = 2       3 x 1 = 3       4 x 1 = 4       5 x 1 = 5       6 x 1 = 6       7 x 1 = 7       8 x 1 = 8       9 x 1 = 9
2 x 2 = 4       3 x 2 = 6       4 x 2 = 8       5 x 2 = 10      6 x 2 = 12      7 x 2 = 14      8 x 2 = 16      9 x 2 = 18
2 x 3 = 6       3 x 3 = 9       4 x 3 = 12      5 x 3 = 15      6 x 3 = 18      7 x 3 = 21      8 x 3 = 24      9 x 3 = 27
2 x 4 = 8       3 x 4 = 12      4 x 4 = 16      5 x 4 = 20      6 x 4 = 24      7 x 4 = 28      8 x 4 = 32      9 x 4 = 36
2 x 5 = 10      3 x 5 = 15      4 x 5 = 20      5 x 5 = 25      6 x 5 = 30      7 x 5 = 35      8 x 5 = 40      9 x 5 = 45
2 x 6 = 12      3 x 6 = 18      4 x 6 = 24      5 x 6 = 30      6 x 6 = 36      7 x 6 = 42      8 x 6 = 48      9 x 6 = 54
2 x 7 = 14      3 x 7 = 21      4 x 7 = 28      5 x 7 = 35      6 x 7 = 42      7 x 7 = 49      8 x 7 = 56      9 x 7 = 63
2 x 8 = 16      3 x 8 = 24      4 x 8 = 32      5 x 8 = 40      6 x 8 = 48      7 x 8 = 56      8 x 8 = 64      9 x 8 = 72
2 x 9 = 18      3 x 9 = 27      4 x 9 = 36      5 x 9 = 45      6 x 9 = 54      7 x 9 = 63      8 x 9 = 72      9 x 9 = 81


코드

#include <iostream>
using namespace std;

int main() {
	for (int i = 1; i <= 9; i++) {
		for (int j = 2; j <= 9; j++)
			cout << j << " x " << i << " = " << j * i << "\t";
		cout << endl;
	}

	return 0;
}

1.4. N-M단 출력하기

정수 두 개를 입력받아 N-M단을 출력하는 프로그램 작성하기


입력

첫째 줄에 N과 M이 주어진다.


출력

입출력 예시처럼 2 x 1 부터 N x M 까지 출력한다.


입출력 예시

Enter N and M : 4 7
2 x 1 = 2       3 x 1 = 3       4 x 1 = 4
2 x 2 = 4       3 x 2 = 6       4 x 2 = 8
2 x 3 = 6       3 x 3 = 9       4 x 3 = 12
2 x 4 = 8       3 x 4 = 12      4 x 4 = 16
2 x 5 = 10      3 x 5 = 15      4 x 5 = 20
2 x 6 = 12      3 x 6 = 20      4 x 6 = 24
2 x 7 = 14      3 x 7 = 25      4 x 7 = 28


코드

#include <iostream>
using namespace std;

int main() {
	int n, m;

	cout << "Enter N and M : ";
	cin >> n >> m;

	for (int i = 1; i <= m; i++) {
		for (int j = 2; j <= n; j++)
			cout << j << " x " << i << " = " << j * i << "\t";
		cout << endl;
	}

	return 0;
}

1.5. 홀수단은 거꾸로 출력하기

구구단에서 홀수단은 거꾸로 출력하는 프로그램 작성하기


출력

출력 예시처럼 2 x 1 부터 9 x 9 까지 출력한다.
홀수단은 N x 9 부터 N x 1 까지 거꾸로 출력한다.


출력 예시

2 x 1 = 2       3 x 9 = 27      4 x 1 = 4       5 x 9 = 45      6 x 1 = 6       7 x 9 = 63      8 x 1 = 8       9 x 9 = 81
2 x 2 = 4       3 x 8 = 24      4 x 2 = 8       5 x 8 = 40      6 x 2 = 12      7 x 8 = 56      8 x 2 = 16      9 x 8 = 72
2 x 3 = 6       3 x 7 = 21      4 x 3 = 12      5 x 7 = 35      6 x 3 = 18      7 x 7 = 49      8 x 3 = 24      9 x 7 = 63
2 x 4 = 8       3 x 6 = 18      4 x 4 = 16      5 x 6 = 30      6 x 4 = 24      7 x 6 = 42      8 x 4 = 32      9 x 6 = 54
2 x 5 = 10      3 x 5 = 15      4 x 5 = 20      5 x 5 = 25      6 x 5 = 30      7 x 5 = 35      8 x 5 = 40      9 x 5 = 45
2 x 6 = 12      3 x 4 = 12      4 x 6 = 24      5 x 4 = 20      6 x 6 = 36      7 x 4 = 28      8 x 6 = 48      9 x 4 = 36
2 x 7 = 14      3 x 3 = 9       4 x 7 = 28      5 x 3 = 15      6 x 7 = 42      7 x 3 = 21      8 x 7 = 56      9 x 3 = 27
2 x 8 = 16      3 x 2 = 6       4 x 8 = 32      5 x 2 = 10      6 x 8 = 48      7 x 2 = 14      8 x 8 = 64      9 x 2 = 18
2 x 9 = 18      3 x 1 = 3       4 x 9 = 36      5 x 1 = 5       6 x 9 = 54      7 x 1 = 7       8 x 9 = 72      9 x 1 = 9


코드

#include <iostream>
using namespace std;

int main() {
	for (int i = 1; i <= 9; i++) {
		for (int j = 2; j <= 9; j ++) {
			if (j % 2 == 0)	cout << j << " x " << i << " = " << j * i << "\t";
			else			cout << j << " x " << 10 - i << " = " << j * (10 - i) << "\t";
		}
		cout << endl;
	}

	return 0;
}

1.6. 홀수단만, 짝수단만 출력하기

문자열과 정수를 입력받아 홀수단만 혹은 짝수단만 N개 출력하는 프로그램 작성하기


입력

첫째 줄에 N과 문자열이 주어진다.


출력

입력받은 문자열이 “odd”면 홀수단만, “even”이면 짝수단만 2단부터 N번째 단까지 출력한다.


※ 문자열의 자료형은 string


입출력 예시

Enter parity and a number : odd 3
3 x 1 = 3       5 x 1 = 5       7 x 1 = 7
3 x 2 = 6       5 x 2 = 10      7 x 2 = 14
3 x 3 = 9       5 x 3 = 15      7 x 3 = 21
3 x 4 = 12      5 x 4 = 20      7 x 4 = 28
3 x 5 = 15      5 x 5 = 25      7 x 5 = 35
3 x 6 = 18      5 x 6 = 30      7 x 6 = 42
3 x 7 = 21      5 x 7 = 35      7 x 7 = 49
3 x 8 = 24      5 x 8 = 40      7 x 8 = 56
3 x 9 = 27      5 x 9 = 45      7 x 9 = 63


코드 (1)

#include <iostream>
using namespace std;

int main() {
	int n;
	string word;

	cout << "Enter parity and a number : ";
	cin >> word >> n;

	if (word == "odd") {
		for (int i = 1; i <= 9; i++) {
			for (int j = 3; j <= 2 * n + 1; j += 2)
				cout << j << " x " << i << " = " << j * i << "\t";
			cout << endl;
		}
	}
	else if (word == "even") {
		for (int i = 1; i <= 9; i++) {
			for (int j = 2; j <= 2 * n; j += 2)
				cout << j << " x " << i << " = " << j * i << "\t";
			cout << endl;
		}
	}
	else	cout << "The word entered is neither odd nor even!" << endl;

	return 0;
}


코드 (2)

#include <iostream>
using namespace std;

int main() {
	int n, parity = -1;
	string word;

	cout << "Enter parity and a number : ";
	cin >> word >> n;

	if (word == "odd") 	parity = 0;
	else if (word == "even") 	parity = 1;

	if (parity == -1) {
		cout << "The word entered is neither odd nor even!" << endl;
		return 0;
	}

	for (int i = 1; i <= 9; i++) {
		for (int j = 2; j <= 2 * n + 1; j ++) {
			if (j % 2 == parity) continue;
			cout << j << " x " << i << " = " << j * i << "\t";
		}
		cout << endl;
	}

	return 0;
}

2. 더 알아보기

2.1. setw()


예제

#include <iostream>
#include <iomanip>
using namespace std;

int main() {
	cout << 1234567 << endl;
	cout << setw(4) << 4 << endl;
	cout << setw(7) << "abc";

	return 0;
}


출력

1234567
   4
    abc

2.2. setw()를 이용하여 구구단 출력하기

예제

#include <iostream>
#include <iomanip>
using namespace std;

int main() {

	for (int i = 1; i <= 9; i++) {
		for (int j = 2; j <= 11; j++)
			cout  << j << " x " << i << " = " << j * i << "\t";
		cout << endl;
	}

	cout << endl;

	for (int i = 1; i <= 9; i++) {
		for (int j = 2; j <= 11; j++)
			cout << j << " x " << i << " = " << setw(5) << left << j * i;
		cout << endl;
	}

	return 0;
}


출력

2 x 1 = 2       3 x 1 = 3       4 x 1 = 4       5 x 1 = 5       6 x 1 = 6       7 x 1 = 7       8 x 1 = 8       9 x 1 = 9
2 x 2 = 4       3 x 2 = 6       4 x 2 = 8       5 x 2 = 10      6 x 2 = 12      7 x 2 = 14      8 x 2 = 16      9 x 2 = 18
2 x 3 = 6       3 x 3 = 9       4 x 3 = 12      5 x 3 = 15      6 x 3 = 18      7 x 3 = 21      8 x 3 = 24      9 x 3 = 27
2 x 4 = 8       3 x 4 = 12      4 x 4 = 16      5 x 4 = 20      6 x 4 = 24      7 x 4 = 28      8 x 4 = 32      9 x 4 = 36
2 x 5 = 10      3 x 5 = 15      4 x 5 = 20      5 x 5 = 25      6 x 5 = 30      7 x 5 = 35      8 x 5 = 40      9 x 5 = 45
2 x 6 = 12      3 x 6 = 18      4 x 6 = 24      5 x 6 = 30      6 x 6 = 36      7 x 6 = 42      8 x 6 = 48      9 x 6 = 54
2 x 7 = 14      3 x 7 = 21      4 x 7 = 28      5 x 7 = 35      6 x 7 = 42      7 x 7 = 49      8 x 7 = 56      9 x 7 = 63
2 x 8 = 16      3 x 8 = 24      4 x 8 = 32      5 x 8 = 40      6 x 8 = 48      7 x 8 = 56      8 x 8 = 64      9 x 8 = 72
2 x 9 = 18      3 x 9 = 27      4 x 9 = 36      5 x 9 = 45      6 x 9 = 54      7 x 9 = 63      8 x 9 = 72      9 x 9 = 81

2 x 1 = 2    3 x 1 = 3    4 x 1 = 4    5 x 1 = 5    6 x 1 = 6    7 x 1 = 7    8 x 1 = 8    9 x 1 = 9
2 x 2 = 4    3 x 2 = 6    4 x 2 = 8    5 x 2 = 10   6 x 2 = 12   7 x 2 = 14   8 x 2 = 16   9 x 2 = 18
2 x 3 = 6    3 x 3 = 9    4 x 3 = 12   5 x 3 = 15   6 x 3 = 18   7 x 3 = 21   8 x 3 = 24   9 x 3 = 27
2 x 4 = 8    3 x 4 = 12   4 x 4 = 16   5 x 4 = 20   6 x 4 = 24   7 x 4 = 28   8 x 4 = 32   9 x 4 = 36
2 x 5 = 10   3 x 5 = 15   4 x 5 = 20   5 x 5 = 25   6 x 5 = 30   7 x 5 = 35   8 x 5 = 40   9 x 5 = 45
2 x 6 = 12   3 x 6 = 18   4 x 6 = 24   5 x 6 = 30   6 x 6 = 36   7 x 6 = 42   8 x 6 = 48   9 x 6 = 54
2 x 7 = 14   3 x 7 = 21   4 x 7 = 28   5 x 7 = 35   6 x 7 = 42   7 x 7 = 49   8 x 7 = 56   9 x 7 = 63
2 x 8 = 16   3 x 8 = 24   4 x 8 = 32   5 x 8 = 40   6 x 8 = 48   7 x 8 = 56   8 x 8 = 64   9 x 8 = 72
2 x 9 = 18   3 x 9 = 27   4 x 9 = 36   5 x 9 = 45   6 x 9 = 54   7 x 9 = 63   8 x 9 = 72   9 x 9 = 81