#include<stdio.h>
#include<conio.h>
#include<time.h>
#include<string.h>
#include<Windows.h>
#pragma warning(disable : 4996)
#define max11 3     		// T1에 입력될 문장의 개수를 위한 상수
#define max12 101	         // T1의 각 문자열의 길이를 위한 상수
#define max21 3		// T2에 입력될 문장의 개수를 위한 상수
#define max22 101		// T2의 각 문자열의 길이를 위한 상수

void main()
{
	int i, j, k, l;
	char t1[max11][max12 + 1];    	// T1에 입력될 문장을 위한 문자열 선언
	char t2[max21][max22 + 1];     	// T2에 입력될 문장을 위한 문자열 선언
	char t1t2[max11 * max21][max12 + max22 + 1]; // 접합 T1·T2를 저장하기 위한 문자열 선언
	char t2t1[max11 * max21][max12 + max22 + 1]; // 접합 T2·T1을 저장하기 위한 문자열 선언

	// 3개 문장을 입력받고 T1에 추가
	printf("\n 문자열 T1에 대해 3개의 문자열을 입력하라.\n");
	for (i = 0; i < 3; i++)
	{
		fflush(stdin);
		printf("\u25cf ");
		scanf("%s", t1[i]);
	}
	// 3개 문장을 입력받고 T2에 추가
	printf("\n 문자열 T2에 대해 3개의 문자열을 입력하라.\n");
	for (i = 0; i < 3; i++)
	{
		fflush(stdin);
		printf("\u25cf ");
		scanf("%s", t2[i]);
	}
	// T1에 있는 각 문장과 T2에 있는 각 문장의 접합을 T1·T2에 추가
	printf("\n 접합 T1 \u25cf T2\n");
	k = 0;
	for (j = 0; j < max21; j++)
	{
		for (i = 0; i < max11; i++)
		{
			strcpy(t1t2[k], t1[i]);
			strcat(t1t2[k], t2[j]);
			k++;
		}
	}
	// 접합 T1·T2에 대한 결과를 출력
	for (i = 0; i < max11 * max21; i++)
	{
		printf(" %s\n", t1t2[i]);
	}
	printf("\n 접합 T2 \u25cf T1\n");
	k = 0;
	// T2에 있는 각 문장과 T1에 있는 각 문장의 접합을 T2·T1에 추가
	for (j = 0; j < max11; j++)
	{
		for (i = 0; i < max21; i++)
		{
			strcpy(t2t1[k], t2[i]);
			strcat(t2t1[k], t1[j]);
			k++;
		}
	}
	// 접합 T2·T1에 대한 결과를 출력
	for (i = 0; i < max11 * max21; i++)
	{
		printf(" %s\n", t2t1[i]);
	}
	system("PAUSE");
}