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; }