1번 코드
#include <stdio.h>
#pragma warning(disable:4996)
int arr;
int array[1000][1000] = {'\0', };
void Array(int);
void Change(int);
int main(void)
{
int count=0, select;
while(1)
{
if(count==0)
{
Array(5);
count++;
}
else
{
printf("몇 개의 이차원 배열을 transpose하시겠습니까?");
scanf("%d", &arr);
Array(arr);
count++;
}
printf("더 하시겠습니까? (Yes : 1, No : 2)");
scanf("%d", &select);
if(select==1)
continue;
else
break;
}
return 0;
}
void Array(int arr)
{
int i=0, j=0;
for(i=0; i!=arr; i++)
{
for(j=0; j!=arr; j++)
array[i][j] = (arr*i) + j+1;
}
for(i=0; i!=arr; i++)
{
for(j=0; j!=arr; j++)
printf("%5d", array[i][j]);
printf("\n");
}
printf("\n\n\n");
Change(arr);
}
void Change(int arr)
{
int save, i, j;
for(i=0; i!=arr; i++)
{
for(j=0; j!=arr; j++)
array[j][i] = (j*arr)+i+1;
}
for(i=0; i!=arr; i++)
{
for(j=0; j!=arr; j++)
printf("%5d", array[j][i]);
printf("\n");
}
printf("\n\n\n\n\n\n");
}
2번 코드
//1. 빙고가 되면 탈출하자.
//2. 플레이어만 계속 넣게 된다. 컴퓨터가 넣는 함수 확인하고 플레이어 while문 탈출을 확인해보자.
//3. 빙고가 됬을 때 탈출을 하지 않는다. 확인을 해보자.
#include <stdio.h>
#pragma warning(disable:4996)
#include <stdlib.h>
#include <time.h>
#include <Windows.h>
char playground[3][3]=
{
{'\0', '\0', '\0'},
{'\0', '\0', '\0'},
{'\0', '\0', '\0'}
};
void PlayGround(char[3][3]);
int CheckTicTacToc(char[3][3], int, int, int, int);
int Players(int *, int *, int, char [3][3]);
void Center(char [3][3]);
void TwoSome(int, int, char [3][3]);
void BetWeen(int, int, char [3][3]);
int NonCenter(int, int, int, int *, int *, char [3][3]);
int Random(char [3][3], int *, int *, int, int, int);
int main(void)
{
int x, y, comx, comy, win, i=0, re=0, a, b, s=0;
//x : 플레이어가 입력하는 y축 값
//y : 플레이어가 입력하는 x축 값
//comx : 컴퓨터가 입력하는 y축 값
//comy : 컴퓨터가 입력하는 x축 값
//win : 승리를 선택하는 상수
//i : 게임 무승부 상수
//re : 두번째 이후로 이미 AI에 따라 문자 입력 시 그 자리에 문자가 존재할 경우
//a, b : 두번째 게임 때 배열의 값 초기화 하기 위해 for문을 돌리는 변수
//s : 게임 재시작 숫자
srand((unsigned)time(NULL));
PlayGround(playground);//출력
while(1)//전체 게임 재시작 무한루프
{
for(a=0; a!=3; a++)
{
for(b=0; b!=3; b++)
playground[a][b] = '\0';
}
i=0;
s=0;
win=0;
x=0;
y=0;
comx=0;
comy=0;
re=0;
//2차 게임을 하면서 모든 변수 초기화
while(1)//플레이어와 컴퓨터가 문양을 입력하는 루프
{
{//플레이어 입력
while(1)//내가 문양을 입력할 곳에 이미 문자가 있을 경우 루프
{
printf("어디에 두시겠습니까? : ");
scanf("%d %d", &x, &y);
Players(&x, &y, i, playground);//플레이어 입력 함수
if(Players(&x, &y, i, playground)!=0)//개임 재시작 선택을 할 경우 게임 반복 루프 탈출.
break;
else
continue;
}
i=0;//다음 확인을 위하여 i값 초기화
playground[x-1][y-1]= 'U';//대입
PlayGround(playground);//출력
win=1;//승리 상수 설정
CheckTicTacToc(playground, x, y, i, win);//빙고 확인 함수
if(i==1)
break;
i=0;
}
{//컴퓨터 입력
if(1)
Center(playground);//중앙이 비어있는 경우
else if(1)
TwoSome(a, b, playground);//인접한 두 정수가 같고 그 다음 정수가 빌 경우
else if(1)
BetWeen(a, b, playground);//양 쪽이 같은 문자이고 그 사이의 도형이 비어 있는 경우
else if(1)//중앙에 문자가 이미 있고 그 어떠한 규칙이 없는 경우
{
while(1)//문자 입력 중복 확인 루프
{
NonCenter(x, y, i, &comx, &comy, playground);
if(NonCenter(x, y, i, &comx, &comy, playground)!=0)//게임 반복 변수 입력 시 게임 루프 탈출
break;
else
continue;
}
i=0;//게임 반복 변수 입력 하지 않을 시 다음 루프를 위해 탈출
Sleep(3000);
printf("저는 (%d, %d)에 두겠습니다.\n", comx+1, comy+1);
Sleep(1000);
system("cls");
playground[comx][comy] = 'C';//대입
win=2;//승리 변수 설정
PlayGround(playground);//출력
CheckTicTacToc(playground, comx, comy, i, win);
if(CheckTicTacToc(playground, comx, comy, i, win)==1)
break;
i=0;
}
else if(1)//중앙이 아닌 곳에 상대가 두었고 어떠한 승리 규칙이 없는 경우
{
while(1)
{
Random(playground, &comx, &comy, x, y, i);
if(Random(playground, &comx, &comy, x, y, i)!=0)//무승부 일 경우 루프 탈출
break;
else
continue;
}
i=0;//무승부가 아닐 경우 다음 상황을 위해 초기화
Sleep(3000);
printf("저는 (%d, %d)에 두겠습니다.\n", comx+1, comy+1);
Sleep(1000);
system("cls");
playground[comx][comy] = 'C';//대입
win=2;
PlayGround(playground);//출력
CheckTicTacToc(playground, comx, comy, i, win);
if(CheckTicTacToc(playground, comx, comy, i, win)==0)
break;
i=0;
}//양 옆이 다를 경우 else if 괄호
PlayGround(playground);
}//컴퓨터 입력 완료
}//입력 루프
if(i==1)//무승부에서 재게임 입력
continue;
else if(i!=2)//무승부에서 재게임 거부
break;
else//무승부가 아닐 경우
{
if(win==1)//승리자 출력
{
printf("플레이어 승리입니다. 게임을 한 번 더 진행하시겠습니까?\nYES : 1\tNO : 2\n");
scanf("%d", &i);
if(i==1)//개임 재게
continue;
else if(i==2)
break;
}
else if(win==2)
{
printf("컴퓨터 승리입니다. 게임을 한 번 더 진행하시겠습니까?\nYES : 1\tNO : 2\n");
scanf("%d", &s);
if(s==1)//게임 재게
continue;
else if(s==2)
break;
}
}//무승부가 아닌 경우
}//전체 입력 루프
return 0;
}//main 함수
void PlayGround(char playground[3][3])//출력 함수
{
printf("┌─┬─┬─┐\n│%2c│%2c│%2c│\n├─┼─┼─┤\n", playground[0][0], playground[0][1], playground[0][2]);
printf("│%2c│%2c│%2c│\n├─┼─┼─┤\n", playground[1][0], playground[1][1], playground[1][2]);
printf("│%2c│%2c│%2c│\n└─┴─┴─┘\n\n\n\n\n\n\n\n", playground[2][0], playground[2][1], playground[2][2]);
}
int CheckTicTacToc(char playground[3][3], int comx, int comy, int i, int win)
{
if((playground[comx][0]==playground[comx][1] && playground[comx][1]==playground[comx][2] && playground[comx][0]!='\0' && playground[comx][1]!='\0' && playground[comx][2]!='\0') || (playground[0][comy]==playground[1][comy] && playground[1][comy]==playground[2][comy] && playground[0][comy] != '\0' && playground[1][comy] != '\0' && playground[2][comy] != '\0'))
//가로세로 빙고 확인
i=1;
else if((playground[0][0]==playground[1][1] && playground[1][1]==playground[2][2] && playground[0][0] != '\0' && playground[1][1] != '\0' && playground[2][2] != '\0') || (playground[2][0]==playground[1][1] && playground[1][1]==playground[0][2] && playground[0][2] != '\0' && playground[1][1] != '\0' && playground[0][2] != '\0'))
//대각선 빙고 확인
i=1;
else//빙고가 아닐 경우
{
if(win==1)
printf("컴퓨터의 턴입니다.\n");
else
printf("플레이어의 턴 입니다.\n");
}
return i;
}
int Players(int * x, int * y, int i, char playground[3][3])
{
if(playground[*x-1][*y-1] != '\0')//이미 다른 문자 존재 시
{
if( playground[0][0] != '\0' && playground[0][1] != '\0' && playground[0][2] != '\0'
&& playground[1][0] != '\0' && playground[1][1] != '\0' && playground[1][2] != '\0'
&& playground[2][0] != '\0' && playground[2][1] != '\0' && playground[2][2] != '\0')
//모든 칸에 문자가 있을 경우(위에서 문자 입력한 후 대입이 아직 되지 않아 1 칸이 빈다. 수정이 필요하다)
{
printf("무승부!\n 다시 게임을 하시겠습니까?\nYES : 1\tNO : 2");
scanf("%d", &i);
}
else//단순히 겹칠 경우
{
printf("그 곳에는 이미 숫자가 있습니다. 다른 곳에 다시 입력해주세요.\n");
}
}
else//겹치지 않을 경우 루프 탈출
i=2;
return i;
}
void Center(char playground[3][3])
{
if(playground[1][1]=='\0')//중앙에 문자가 없을 경우
{
Sleep(3000);
printf("저는 2, 2에 입력하겠습니다.\n");
playground[1][1]='C';//대입
Sleep(1000);
PlayGround(playground);//출력
}
}
void TwoSome(int a, int b, char playground[3][3])
{
for(a=0; a!=3; a++)
{
for(b=0; b!=3; b++)
{
if((playground[a][0]==playground[a][1]) && playground[a][0]!='\0' && playground[a][1]!='\0' && playground[a][2]=='\0')
{
Sleep(3000);
printf("저는 %d, 2에 입력하겠습니다.\n", a);
playground[a][2] = 'C';
Sleep(1000);
PlayGround(playground);
}
else if((playground[a][1]==playground[a][2]) && playground[a][1]!='\0' && playground[a][2]!='\0' && playground[a][0]=='\0')
{
Sleep(3000);
printf("저는 %d, 2에 입력하겠습니다.\n", a);
playground[a][0] = 'C';
Sleep(1000);
PlayGround(playground);
}
if((playground[1][b]==playground[0][b]) && playground[0][b]!='\0' && playground[1][b]!='\0' && playground[2][b]=='\0')
{
Sleep(3000);
printf("저는 2, %d에 입력하겠습니다.\n", b);
playground[2][b] = 'C';
Sleep(1000);
PlayGround(playground);
}
else if((playground[1][b]==playground[2][b]) && playground[1][b]!='\0' && playground[2][b]!='\0' && playground[0][b]=='\0')
{
Sleep(3000);
printf("저는 0, %d에 입력하겠습니다.\n", b);
playground[0][b] = 'C';
Sleep(1000);
PlayGround(playground);
}
}
}
if(playground[1][1]!='\0')
{
if((playground[0][0]==playground[1][1]) && playground[0][0]!='\0' && playground[1][1]!='\0' && playground[2][2]=='\0')
{
Sleep(3000);
printf("저는 1, 1에 입력하겠습니다.\n");
playground[2][2] = 'C';
PlayGround(playground);
Sleep(1000);
}
else if((playground[2][2]==playground[1][1]) && playground[2][2]!='\0' && playground[1][1]!='\0' && playground[0][0]=='\0')
{
Sleep(3000);
printf("저는 0, 0에 입력하겠습니다.\n");
playground[0][0] = 'C';
PlayGround(playground);
Sleep(1000);
}
}
else if(playground[1][1]!='\0')
{
if((playground[2][0]==playground[1][1]) && playground[2][0]!='\0' && playground[1][1]!='\0' && playground[0][2]=='\0')
{
Sleep(3000);
printf("저는 2, 2에 입력하겠습니다.\n");
playground[0][2] = 'C';
PlayGround(playground);
Sleep(1000);
}
else if((playground[0][2]==playground[1][1]) && playground[0][2]!='\0' && playground[1][1]!='\0' && playground[2][0]=='\0')
{
Sleep(3000);
printf("저는 2, 0에 입력하겠습니다.\n");
playground[2][0] = 'C';
PlayGround(playground);
Sleep(1000);
}
}
}
void BetWeen(int a, int b, char playground[3][3])
{
for(a=0; a!=3; a++)
{
for(b=0; b!=3; b++)
{
if((playground[0][b]==playground[2][b]) && playground[0][b]!='\0' && playground[2][b]!='\0' && playground[1][b]=='\0')
{
Sleep(3000);
printf("저는 1, %d에 입력하겠습니다.\n", b);
playground[1][b]='C';//대입
Sleep(1000);
PlayGround(playground);//출력
}
else if((playground[a][0]==playground[a][2]) && playground[a][0]!='\0' && playground[a][2]!='\0' && playground[a][1]=='\0')
{
Sleep(3000);
printf("저는 %d, 1에 입력하겠습니다.\n", a);
playground[a][1]='C';//대입
Sleep(1000);
PlayGround(playground);//출력
}
else if((playground[0][0]==playground[2][2]) && playground[0][0]!='\0' && playground[2][2]!='\0' && playground[1][1]=='\0')
{
Sleep(3000);
printf("저는 1, 1에 입력하겠습니다.\n");
playground[1][1]='C';//대입
Sleep(1000);
PlayGround(playground);//출력
}
else if((playground[0][2]==playground[2][0]) && playground[0][2]!='\0' && playground[2][0]!='\0' && playground[1][1]=='\0')
{
Sleep(3000);
printf("저는 1, 1에 입력하겠습니다.\n");
playground[1][1]='C';//대입
Sleep(1000);
PlayGround(playground);//출력
}
}
}
}
int NonCenter(int x, int y, int i, int * comx, int * comy, char playground[3][3])
{
if(x==2 && y==2)//중앙에 상대 문자가 있을 경우
{
*comx=rand()%3;
*comy=rand()%3;
//랜덤으로 받기
if(playground[*comx-1][*comy-1] != '\0')//문자 입력 장소에 문자 입력 여부 확인
{
if((playground[0][0] != '\0') && (playground[0][1] != '\0') && (playground[0][2] != '\0') && (playground[1][0] != '\0') && (playground[1][1] != '\0') && (playground[1][2] != '\0') && (playground[2][0] != '\0') && (playground[2][1] != '\0') && (playground[2][2] != '\0'))
//9개의 문자가 모두 문자 입력 시 무승부로 판단. 무승부 시 루프 탈출(이 또한 8개가 입력된 상태에서 읽히므로 수정 필요)
{
printf("무승부!\n 다시 게임을 하시겠습니까?\nYES : 1\tNO : 2");
scanf("%d", &i);
}
else//단순 중복일 경우
{
printf("그 곳에는 이미 숫자가 있습니다. 다른 곳에 다시 입력해주세요.\n");
}
}
else//중복 되지 않을 경우
i=2;
}
return i;
}
int Random(char playground[3][3], int * comx, int * comy, int x, int y, int i)
{
int re=0;
if(playground[1][1]!='C')
//양 옆이 다를 경우
{
if(re==0)//우선 정 가운데를 먹고 가므로 이를 대비하여 정 반대를 막도록 설정
{
* comx=3-x;
* comy=3-y;
}
else//반대 쪽에 이미 문자가 있을 경우 re라는 변수를 받는다. 이 변수가 0이 아니면 예상한 상황임으로 판단하고 랜덤으로 돌려버린다.
{
* comx=rand()%3;
* comy=rand()%3;
}
if(playground[* comx][* comy] != '\0')//지정된 장소에 이미 문자가 있는 경우 확인
{
if(playground[0][0] != '\0' && playground[0][1] != '\0' && playground[0][2] != '\0' && playground[1][0] != '\0' && playground[1][1] != '\0' && playground[1][2] != '\0' && playground[2][0] != '\0' && playground[2][1] != '\0' && playground[2][2] != '\0')
//무승부 여부. 하지만 수정 필요
{
printf("무승부!\n 다시 게임을 하시겠습니까?\nYES : 1\tNO : 2");
scanf("%d", &i);
}
else//단순 중복
{
printf("그 곳에는 이미 숫자가 있습니다. 다른 곳에 다시 입력해주세요.\n");
re++;
}
}
else//비중복
i=2;
}
return i;
}
#include<stdio.h>
#pragma warning(disable:4996)
int trans[5][5]={0, };
int num1=0, num2=0;
int main()
{
printf(" 1 2 3 4 5 \n");
printf(" ┌─┬─┬─┬─┬─┐\n");
printf("1│ │★│ │ │ │\n");
printf(" ├─┼─┼─┼─┼─┤\n");
printf("2│ │ │ │ │ │\n");
printf(" ├─┼─┼─┼─┼─┤\n");
printf("3│ │ │ │ │ │\n");
printf(" ├─┼─┼─┼─┼─┤\n");
printf("4│ │ │ │ │ │\n");
printf(" ├─┼─┼─┼─┼─┤\n");
printf("5│ │ │ │ │ │\n");
printf(" └─┴─┴─┴─┴─┘\n\n");
printf("표의 ★는 (1,2)좌표를 나타내는 것입니다.\n\n");
for(num1=0;num1<5;num1++)
{
for(num2=0;num2<5;num2++)
{
printf("(%d,%d)의 숫자를 입력하세요.\n", num1+1, num2+1);
scanf("%d", &trans[num1][num2]);
}
}
system("pause");
system("cls");
printf(" 1 2 3 4 5 \n");
printf(" ┌─┬─┬─┬─┬─┐\n1│");
for(num2=0;num2<5;num2++)
{
num1=0;
printf("%2d│", trans[num1][num2]);
}
for(num1=1;num1<5;num1++)
{
if(num2=4)
{
printf("\n ├─┼─┼─┼─┼─┤\n%d│", num1+1);
}
for(num2=0;num2<5;num2++)
{
printf("%2d│", trans[num1][num2]);
}
}
printf("\n └─┴─┴─┴─┴─┘\n\n");
printf(" ↓\n\n");
printf(" 1 2 3 4 5 \n");
printf(" ┌─┬─┬─┬─┬─┐\n1│");
for(num2=0;num2<5;num2++)
{
num1=0;
printf("%2d│", trans[num2][num1]);
}
for(num1=1;num1<5;num1++)
{
if(num2=4)
{
printf("\n ├─┼─┼─┼─┼─┤\n%d│", num1+1);
}
for(num2=0;num2<5;num2++)
{
printf("%2d│", trans[num2][num1]);
}
}
printf("\n └─┴─┴─┴─┴─┘\n\n\n");
system("pause");
return 0;
}
#include<stdio.h>
#pragma warning(disable:4996)
#include <windows.h>
#include <time.h>
char trans[3][3]={0, };
int num1=0, num2=0, com1=0, com2=0, times=0;
void gotoxy(int x, int y)
{
COORD Cur;
Cur.X=x;
Cur.Y=y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),Cur);
}
char ttt();
int main()
{
printf("Tic-Tac-Toe 게임\n\n");
printf(" 1 2 3 \n");
printf(" ┌─┬─┬─┐\n");
printf("1│ │★│ │\n");
printf(" ├─┼─┼─┤\n");
printf("2│ │ │ │\n");
printf(" ├─┼─┼─┤\n");
printf("3│ │ │ │\n");
printf(" └─┴─┴─┘\n");
printf("표의 ★는 (1,2)좌표를 나타내는 것입니다.\n\n");
system("pause");
system("cls");
printf(" 1 2 3 \n");
printf(" ┌─┬─┬─┐\n");
printf("1│%2c│%2c│%2c│\n", trans[0][0], trans[0][1], trans[0][2]);
printf(" ├─┼─┼─┤\n");
printf("2│%2c│%2c│%2c│\n", trans[1][0], trans[1][1], trans[1][2]);
printf(" ├─┼─┼─┤\n");
printf("3│%2c│%2c│%2c│\n", trans[2][0], trans[2][1], trans[2][2]);
printf(" └─┴─┴─┘\n\n");
while(1)
{
ttt();
if(trans[1][0]=='O' && trans[2][0]=='O' && trans[0][0]=='O' || trans[1][1]=='O' && trans[2][1]=='O' && trans[0][1]=='O' || trans[1][2]=='O' && trans[2][2]=='O' && trans[0][2]=='O' || trans[1][1]=='O' && trans[2][2]=='O' && trans[0][0]=='O' ||trans[2][0]=='O' && trans[1][1]=='O' && trans[0][2]=='O' || trans[0][1]=='O' && trans[0][2]=='O' && trans[0][0]=='O' || trans[1][0]=='O' && trans[1][1]=='O' && trans[1][2]=='O' || trans[2][1]=='O' && trans[2][0]=='O' && trans[2][2]=='O')
{
printf("플레이어가 이김");
system("pause");
break;
}
else if(trans[1][0]=='X' && trans[2][0]=='X' && trans[0][0]=='X' || trans[1][1]=='X' && trans[2][1]=='X' && trans[0][1]=='X' || trans[1][2]=='X' && trans[2][2]=='X' && trans[0][2]=='X' || trans[1][1]=='X' && trans[2][2]=='X' && trans[0][0]=='X' ||trans[2][0]=='X' && trans[1][1]=='X' && trans[0][2]=='X' || trans[0][1]=='X' && trans[0][2]=='X' && trans[0][0]=='X' || trans[1][0]=='X' && trans[1][1]=='X' && trans[1][2]=='X' || trans[2][1]=='X' && trans[2][0]=='X' && trans[2][2]=='X')
{
printf("컴퓨터가 이김");
break;
}
else if(times==9)
{
printf("무승부입니다.");
break;
}
}
system("pause");
}
char ttt()
{
printf("원하시는 좌표를 입력하세요. : ( , )");
gotoxy(31,9);
scanf("%d", &num1);
gotoxy(33,9);
scanf("%d", &num2);
trans[num1-1][num2-1]='O';
times++;
srand((unsigned)time(NULL));
com1=rand()%3;
com2=rand()%3;
printf("%d %d\n",com1,com2);
if(trans[com1][com2]!='/0')
{
while(trans[com1][com2]!=0)
{
com1=rand()%3;
com2=rand()%3;
}
trans[com1][com2]='X';
}
else
trans[com1][com2]='X';
times++;
system("cls");
/*printf(" 1 2 3 \n");
printf(" ┌─┬─┬─┐\n");
printf("1│%2c│%2c│%2c│\n", trans[0][0], trans[0][1], trans[0][2]);
printf(" ├─┼─┼─┤\n");
printf("2│%2c│%2c│%2c│\n", trans[1][0], trans[1][1], trans[1][2]);
printf(" ├─┼─┼─┤\n");
printf("3│%2c│%2c│%2c│\n", trans[2][0], trans[2][1], trans[2][2]);
printf(" └─┴─┴─┘\n\n");
printf("원하시는 좌표를 입력하세요. : ( , )");
gotoxy(31,9);
scanf("%d", &num1);
gotoxy(33,9);
scanf("%d", &num2);*/
}
1번 코드
#include <stdio.h>
int main()
{
int number[5][10];
int i=0,j;
for(i=0;i<50;i++) number[0][i]=i;
printf("한자리 숫자를 아래와 같은 형태로 입력해 주세요.\n");
printf("o o o o o\no o o o o\no o o o o\no o o o o\no o o o o\n");
printf("\n");
for(i=0;i<5;i++) scanf("%d %d %d %d %d",&number[i][0],&number[i][1],&number[i][2],&number[i][3],&number[i][4]);
printf("\n\n");
printf(" │\n │ transpose\n ▼\n\n");
for(i=0;i<5;i++)
{
for(j=0;j<5;j++) printf("%2d",number[j][i]);
printf("\n");
}
printf("\n");
return 0;
1번코드 특별과제
#include <stdio.h>
int main()
{
int number[100][100];
int i=0,j;
int matrix_size;
for(i=0;i<10000;i++) number[0][i]=i;
printf("n*n행렬의 크기(행&열의 갯수)를 입력해주세요. : ");
scanf("%d",&matrix_size);
printf("한자리 숫자를 %d*%d형태의 행렬로 입력해주세요.\n",matrix_size,matrix_size);
printf("\n");
for(i=0;i<matrix_size;i++)
{
for(j=0;j<matrix_size;j++)
{
scanf("%d",&number[i][j]);//행렬의 크기만큼 입력받도록
}
}
printf("\n\n");
for(i=0;i<=matrix_size/2;i++) printf(" ");
printf("│\n");
for(i=0;i<=matrix_size/2;i++) printf(" ");
printf("│ transpose\n");
for(i=0;i<=matrix_size/2;i++) printf(" ");
printf("▼\n\n");
for(i=0;i<matrix_size;i++)
{
for(j=0;j<matrix_size;j++) printf("%2d",number[j][i]);
printf("\n");
}
printf("\n");
return 0;
}
2번 코드-A.I.포함
#include <stdio.h>
#include <Windows.h>
#include <time.h>
void UserTurn();
void ComputerTurn_Easy();
void ComputerTurn_Hard();
int o_x[3][3];
int main()
{
int i,finish_game,mode_select,turn_select,total_count=0;
for(i=0;i<9;i++) o_x[0][i]=0;
while(1)
{
printf("tic-tac-toe\n");
printf("모드를 선택해주세요.(쉬움 : 1,어려움 : 2) : ");
scanf("%d",&mode_select);
printf("어느쪽이 먼저 시작하시겠습니까?(1. 당신,2. 컴퓨터) : ");
scanf("%d",&turn_select);
if(mode_select==1) printf("쉬움을 선택하셨습니다.\n");
else if(mode_select==2) printf("어려움을 선택하셨습니다.\n");
else
{
printf("이상한 선택을 하셨습니다.\n3초후 게임이 꺼집니다.\n");
Sleep(3000);
return 0;
}
if(turn_select==1) printf("먼저 시작합니다.\n");
else if(turn_select==2) printf("컴퓨터가 먼저 시작합니다.\n");
else
{
printf("이상한 선택을 하셨습니다.\n3초후 게임이 꺼집니다.\n");
Sleep(3000);
return 0;
}
printf("3초후에 게임 시작합니다.\n");
printf("3\n");
Sleep(1000);
printf("2\n");
Sleep(1000);
printf("1\n");
Sleep(1000);
printf("start~!");
system("cls");
printf("┌─┬─┬─┐\n");
printf("│%c │%c │%c │\n",o_x[0][0],o_x[0][1],o_x[0][2]);
printf("├─┼─┼─┤\n");
printf("│%c │%c │%c │\n",o_x[1][0],o_x[1][1],o_x[1][2]);
printf("├─┼─┼─┤\n");
printf("│%c │%c │%c │\n",o_x[2][0],o_x[2][1],o_x[2][2]);
printf("└─┴─┴─┘\n");
while(1)//게임 한판
{
printf("tic-tac-toe\n");
if(turn_select==1)
{
UserTurn();
total_count++;
turn_select=2;
}
system("cls");
printf("┌─┬─┬─┐\n");
printf("│%c │%c │%c │\n",o_x[0][0],o_x[0][1],o_x[0][2]);
printf("├─┼─┼─┤\n");
printf("│%c │%c │%c │\n",o_x[1][0],o_x[1][1],o_x[1][2]);
printf("├─┼─┼─┤\n");
printf("│%c │%c │%c │\n",o_x[2][0],o_x[2][1],o_x[2][2]);
printf("└─┴─┴─┘\n");
if((o_x[0][0]=='o'&&o_x[0][1]=='o'&&o_x[0][2]=='o')||(o_x[1][0]=='o'&&o_x[1][1]=='o'&&o_x[1][2]=='o')||(o_x[2][0]=='o'&&o_x[2][1]=='o'&&o_x[2][2]=='o')||(o_x[0][0]=='o'&&o_x[1][0]=='o'&&o_x[2][0]=='o')||(o_x[0][1]=='o'&&o_x[1][1]=='o'&&o_x[2][1]=='o')||(o_x[0][2]=='o'&&o_x[1][2]=='o'&&o_x[2][2]=='o')||(o_x[0][0]=='o'&&o_x[1][1]=='o'&&o_x[2][2]=='o')||(o_x[2][0]=='o'&&o_x[1][1]=='o'&&o_x[0][2]=='o'))
{
printf("당신이 이겼습니다. 축하드립니다.\n");
break;
}
else if(total_count==9)
{
printf("무승부입니다. 수고하셨습니다.\n");
break;
}
if(turn_select==2)
{
if(mode_select==1) ComputerTurn_Easy();
else if(mode_select==2) ComputerTurn_Hard();
total_count++;
turn_select=1;
}
system("cls");
printf("┌─┬─┬─┐\n");
printf("│%c │%c │%c │\n",o_x[0][0],o_x[0][1],o_x[0][2]);
printf("├─┼─┼─┤\n");
printf("│%c │%c │%c │\n",o_x[1][0],o_x[1][1],o_x[1][2]);
printf("├─┼─┼─┤\n");
printf("│%c │%c │%c │\n",o_x[2][0],o_x[2][1],o_x[2][2]);
printf("└─┴─┴─┘\n");
if((o_x[0][0]=='x'&&o_x[0][1]=='x'&&o_x[0][2]=='x')||(o_x[1][0]=='x'&&o_x[1][1]=='x'&&o_x[1][2]=='x')||(o_x[2][0]=='x'&&o_x[2][1]=='x'&&o_x[2][2]=='x')||(o_x[0][0]=='x'&&o_x[1][0]=='x'&&o_x[2][0]=='x')||(o_x[0][1]=='x'&&o_x[1][1]=='x'&&o_x[2][1]=='x')||(o_x[0][2]=='x'&&o_x[1][2]=='x'&&o_x[2][2]=='x')||(o_x[0][0]=='x'&&o_x[1][1]=='x'&&o_x[2][2]=='x')||(o_x[2][0]=='x'&&o_x[1][1]=='x'&&o_x[0][2]=='x'))
{
printf("컴퓨터가 당신을 이겼습니다. 분발하시기바랍니다.\n");
break;
}
else if(total_count==9)
{
printf("무승부입니다. 수고하셨습니다.\n");
break;
}
}
printf("게임을 계속 하시려면 1,그만두시려면 0을 입력하시기 바랍니다. : ");
scanf("%d",&finish_game);
if(finish_game==1)
{
system("cls");
for(i=0;i<9;i++) o_x[0][i]=0;
total_count=0;
turn_select=0;
}
else break;
turn_select=0;
}
printf("게임을 종료합니다.\n");
Sleep(2000);
return 0;
}
void UserTurn()
{
int row_number,column_number,select_check;
printf("당신의 차례입니다. 행과 열을 선택해주세요.\n");
printf("행을 선택해주세요.(1~3행) : ");
scanf("%d",&row_number);
printf("열을 선택해주세요.(1~3열) : ");
scanf("%d",&column_number);
printf("선택하신곳이 %d행 %d열이 맞습니까?\n맞으면 1, 틀리면 0을 선택해주세요. : ",row_number,column_number);
scanf("%d",&select_check);
row_number-=1;
column_number-=1;
if(select_check==1)
{
if(o_x[row_number][column_number]=='x'||o_x[row_number][column_number]=='o')
{
printf("빈 공간이 아닙니다. 다시선택해주세요\n");
UserTurn();
}
else o_x[row_number][column_number]='o';
}
else if(select_check==0) UserTurn();
}
void ComputerTurn_Easy()
{
int row_number,column_number;
srand(time(NULL));
row_number=rand();
column_number=rand();
row_number%=3;
column_number%=3;
Sleep(1);
if(o_x[row_number][column_number]=='x'||o_x[row_number][column_number]=='o') ComputerTurn_Easy();
else o_x[row_number][column_number]='x';
}
void ComputerTurn_Hard()
{
int i,j,select_check,loop_out=1;
select_check=0;
if(o_x[1][1]==0) o_x[1][1]='x';
else
{
for(i=0;i<3;i++)
{
if(loop_out==0) break;
for(j=0;j<3;j++)
{
if(o_x[i][j]=='x'&&o_x[(i+1)%3][j]=='x')//열
{
if(o_x[(i+2)%3][j]==0) o_x[(i+2)%3][j]='x';
else continue;
select_check++;
loop_out=0;
break;
}
else if(o_x[i][j]=='x'&&o_x[i][(j+1)%3]=='x')//행
{
if(o_x[i][(j+2)%3]==0) o_x[i][(j+2)%3]='x';
else continue;
select_check++;
loop_out=0;
break;
}
else if(o_x[i][j]=='x'&&o_x[(i+1)%3][(j+1)%3]=='x')//대각선
{
if(o_x[(i+2)%3][(j+2)%3]==0) o_x[(i+2)%3][(j+2)%3]='x';
else continue;
select_check++;
loop_out=0;
break;
}
else if(o_x[i][j]=='o'&&o_x[(i+1)%3][j]=='o')//열
{
if(o_x[(i+2)%3][j]==0) o_x[(i+2)%3][j]='x';
else continue;
select_check++;
loop_out=0;
break;
}
else if(o_x[i][j]=='o'&&o_x[i][(j+1)%3]=='o')//행
{
if(o_x[i][(j+2)%3]==0) o_x[i][(j+2)%3]='x';
else continue;
select_check++;
loop_out=0;
break;
}
else if(o_x[i][j]=='o'&&o_x[(i+1)%3][(j+1)%3]=='o')//대각선
{
if(o_x[(i+2)%3][(j+2)%3]==0) o_x[(i+2)%3][(j+2)%3]='x';
else continue;
select_check++;
loop_out=0;
break;
}
}
}
if(select_check==0)//아무것도 아닐때
{
ComputerTurn_Easy();
}
}
}
과제1번
#include<stdio.h>
int main()
{
int i, j;
int matrix[5][5];
printf("5행5열의 행렬을 입력하시오\n");
for(i=0;i<5;i++)
{
scanf("%d %d %d %d %d",&matrix[i][0],&matrix[i][1], &matrix[i][2], &matrix[i][3],&matrix[i][4]);
}
printf("transpose\n");
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
printf("%d ", matrix[j][i]);
}
printf("\n");
}
}
과제2번
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
int matrix[3][3]={0};
int y, x, a, b;
srand((unsigned)time(NULL));
while(1)
{
printf("┌─┬─┬─┐\n");
printf("│%d │%d │%d │\n",matrix[0][0],matrix[0][1],matrix[0][2]);
printf("├─┼─┼─┤\n");
printf("│%d │%d │%d │\n",matrix[1][0],matrix[1][1],matrix[1][2]);
printf("├─┼─┼─┤\n");
printf("│%d │%d │%d │\n",matrix[2][0],matrix[2][1],matrix[2][2]);
printf("└─┴─┴─┘\n");
printf("몇행몇열을 선택하시겠습니까\n");
while(1)
{
scanf("%d %d",&x,&y);
if(matrix[x-1][y-1]==1)
{printf("비어있는곳을선택하시오\n");
continue;}
else if(matrix[x-1][y-1]==2)
{printf("비어있는곳을선택하시오\n");
continue;}
else if(matrix[x-1][y-1]==0)
{
printf("%d행 %d열을 선택하셨습니다\n",x,y);
matrix[x-1][y-1]=1;
break;
}
}
while(1)
{ a=rand()%(3);
b=rand()%(3);
if(matrix[a][b]==1)
continue;
else if(matrix[a][b]==2)
continue;
else if(matrix[a][b]==0)
matrix[a][b]=2;
break;
}
if((matrix[0][0]==1&&matrix[0][1]==1&&matrix[0][2]==1)||(matrix[1][0]==1&&matrix[1][1]==1&&matrix[1][2]==1)
||(matrix[2][0]==1&&matrix[2][1]==1&&matrix[2][2]==1)||(matrix[0][0]==1&&matrix[1][0]==1&&matrix[2][0]==1)||
(matrix[0][1]==1&&matrix[1][1]==1&&matrix[2][1]==1)||(matrix[0][2]==1&&matrix[1][2]==1&&matrix[2][2]==1)||
(matrix[0][0]==1&&matrix[1][1]==1&&matrix[2][2]==1)||(matrix[2][0]==1&&matrix[1][1]==1&&matrix[0][2]==1))
{
printf("┌─┬─┬─┐\n");
printf("│%d │%d │%d │\n",matrix[0][0],matrix[0][1],matrix[0][2]);
printf("├─┼─┼─┤\n");
printf("│%d │%d │%d │\n",matrix[1][0],matrix[1][1],matrix[1][2]);
printf("├─┼─┼─┤\n");
printf("│%d │%d │%d │\n",matrix[2][0],matrix[2][1],matrix[2][2]);
printf("└─┴─┴─┘\n");
printf("당신이 이겼습니다\n");
break;
}
else if((matrix[0][0]==2&&matrix[0][1]==2&&matrix[0][2]==2)||(matrix[1][0]==2&&matrix[1][1]==2&&matrix[1][2]==2)
||(matrix[2][0]==2&&matrix[2][1]==2&&matrix[2][2]==2)||(matrix[0][0]==2&&matrix[1][0]==2&&matrix[2][0]==2)||
(matrix[0][1]==2&&matrix[1][1]==2&&matrix[2][1]==2)||(matrix[0][2]==2&&matrix[1][2]==2&&matrix[2][2]==2)||
(matrix[0][0]==2&&matrix[1][1]==2&&matrix[2][2]==2)||(matrix[2][0]==2&&matrix[1][1]==2&&matrix[0][2]==2))
{
printf("┌─┬─┬─┐\n");
printf("│%d │%d │%d │\n",matrix[0][0],matrix[0][1],matrix[0][2]);
printf("├─┼─┼─┤\n");
printf("│%d │%d │%d │\n",matrix[1][0],matrix[1][1],matrix[1][2]);
printf("├─┼─┼─┤\n");
printf("│%d │%d │%d │\n",matrix[2][0],matrix[2][1],matrix[2][2]);
printf("└─┴─┴─┘\n");
printf("컴퓨터가 이겼습니다\n");
break;
}
}
return 0;
}