井字棋
1 2 核心代码相同,区别在于2的结果单独写,看2就行
在这里插入代码片
#include <stdio.h>
int main() {
//井字棋
const int num=4;
int tac[num][num];
int tac_x;
int tac_o;
int result=-1; //-1:无人获胜, 1:x获胜,0:o获胜
//输入
int i,j,x;
for(i=0; i<num; i++) {
for(j=0; j<num; j++) {
scanf("%d",&tac[i][j]);
}
}
printf("\n");
//输出
int cnt=0;
for(i=0; i<num; i++) {
for(j=0; j<num; j++) {
printf("%d\t",tac[i][j]);
cnt++;
if(cnt%num==0) {
printf("\n");
}
}
}
printf("\n");
//检验行
for(i=0; i<num&&result==-1; i++) {
tac_x=0;
tac_o=0;
for(j=0; j<num; j++) {
if(tac[i][j]==1) {
tac_x++;
} else {
tac_o++;
}
}
if(tac_x==num) {
result=1;
printf("x获胜\n");
} else if(tac_o==num) {
result=0;
printf("o获胜\n");
} else {
result=-1;
}
}
//检验列
for(j=0; j<num&&result==-1; j++) {
tac_x=0;
tac_o=0;
for(i=0; i<num; i++) {
if(tac[i][j]==1) {
tac_x++;
} else {
tac_o++;
}
}
if(tac_x==num) {
result=1;
printf("x获胜\n");
} else if(tac_o==num) {
result=0;
printf("o获胜\n");
} else {
result=-1;
}
}
//检验主对角线
{
tac_x=0;
tac_o=0;
for(i=0; i<num&&result==-1; i++) {
if( tac[i][i]==1) {
tac_x++;
} else if(tac[i][i]=0) {
tac_o++;
} else {
result=-1;
}
}
if(tac_x==num) {
result=1;
printf("x获胜\n");
} else if(tac_o==num) {
result=0;
printf("o获胜\n");
} else {
result=-1;
}
}
//检查副对角线
{
tac_x=0;
tac_o=0;
for(i=0; i<num&&result==-1; i++) {
if( tac[i][num-i-1]==1) {
tac_x++;
} else if(tac[i][num-i-1]=0) {
tac_o++;
} else {
result=-1;
}
}
if(tac_x==num) {
result=1;
printf("x获胜\n");
} else if(tac_o==num) {
result=0;
printf("o获胜\n");
} else {
result=-1;
printf("平局");
}
}
return 0;
}
2
在这里插入代码片
#include <stdio.h>
int main() {
//井字棋
const int num=4;
int tac[num][num];
int tac_x;
int tac_o;
int result=-1; //-1:无人获胜, 1:x获胜,0:o获胜
//输入
int i,j,x;
for(i=0; i<num; i++) {
for(j=0; j<num; j++) {
scanf("%d",&tac[i][j]);
}
}
printf("\n");
//输出
int cnt=0;
for(i=0; i<num; i++) {
for(j=0; j<num; j++) {
printf("%d\t",tac[i][j]);
cnt++;
if(cnt%num==0) {
printf("\n");
}
}
}
printf("\n");
//检验行
for(i=0; i<num&&result==-1; i++) {
tac_x=0;
tac_o=0;
for(j=0; j<num; j++) {
if(tac[i][j]==1) {
tac_x++;
} else {
tac_o++;
}
}
if(tac_x==num) {
result=1;
} else if(tac_o==num) {
result=0;
} else {
result=-1;
}
}
//检验列
for(j=0; j<num&&result==-1; j++) {
tac_x=0;
tac_o=0;
for(i=0; i<num; i++) {
if(tac[i][j]==1) {
tac_x++;
} else {
tac_o++;
}
}
if(tac_x==num) {
result=1;
} else if(tac_o==num) {
result=0;
} else {
result=-1;
}
}
//检验主对角线
{
tac_x=0;
tac_o=0;
for(i=0; i<num&&result==-1; i++) {
if( tac[i][i]==1) {
tac_x++;
} else if(tac[i][i]=0) {
tac_o++;
} else {
result=-1;
}
}
if(tac_x==num) {
result=1;
} else if(tac_o==num) {
result=0;
} else {
result=-1;
}
}
//检查副对角线
{
tac_x=0;
tac_o=0;
for(i=0; i<num&&result==-1; i++) {
if( tac[i][num-i-1]==1) {
tac_x++;
} else if(tac[i][num-i-1]=0) {
tac_o++;
} else {
result=-1;
}
}
if(tac_x==num) {
result=1;
} else if(tac_o==num) {
result=0;
} else {
result=-1;
}
}
//输出结果
if(result==-1){
printf("平局");
} else if(result==1){
printf("x获胜");
}else{
printf("o获胜");
}
return 0;
}