#include<iostream>

#include<stdio.h>
using namespace std;
int main()
{
//-1 没人赢 0:O赢 1:X赢
int size;
printf("0表示“甲方”,1表示“乙方”\n\n");
printf("请输入矩阵的大小\n");
while (scanf("%d", &size) == )
{
int board[][];
int num_of_O;
int num_of_X;
int result = -;
int i, j;
for (i = ; i < size; i++)
for (j = ; j < size; j++)
{
scanf("%d", &board[i][j]);
} //检查行
for (i = ; i < size&&result == -; i++)
{
num_of_O = num_of_X = ;
for (j = ; j < size; j++)
{
if (board[i][j] == )
{
num_of_X++;
}
else if(board[i][j] == )
{
num_of_O++;
}
}
if (num_of_O == size)
{
result = ;
}
else
if (num_of_X == size)
{
result = ;
}
} //检查列
if (result == -)
{
for (j = ; j < size&&result == -; j++)
{
num_of_O = num_of_X = ;
for (i = ; i < size; i++)
{
if (board[i][j] == )
{
num_of_X++;
}
else
if (board[i][j] == )
{
num_of_O++;
}
}
if (num_of_O == size)
{
result = ;
}
else
if (num_of_X == size)
{
result = ;
}
}
}
//检查正对角线
num_of_O = num_of_X = ;
for (i = ; i < size; i++)
{
if (board[i][i] == )
{
num_of_X++;
}
else
if (board[i][i] == )
{
num_of_O++;
} } if (num_of_O == size)
{
result = ;
}
else
if (num_of_X == size)
{
result = ;
} //检查反对角线
num_of_O = num_of_X = ;
for (i = ; i < size; i++)
{
if (board[i][size - - i] == )//反对角线计算方法
{
num_of_X++;
}
else
if (board[i][size - - i] == )
{
num_of_O++;
}
} if (num_of_O == size)
{
result = ;
}
else
if (num_of_X == size)
{
result = ;
} if (result == -)
{
printf("抱歉啊,没有人赢哦!\n不服,再战!\n");
}
else
if (result == )
{
printf("恭喜!!!甲方赢啦\n");
}
else
if (result == )
{
printf("恭喜!!!乙方赢啦\n");
}
printf("请输入矩阵的大小\n");
}
return ;
}

C语言之二维数组棋盘游戏的更多相关文章

  1. C语言之二维数组

    二维数组 还是一个数组,只不过数组中得每一个元素又是一个数组 1). 声明语法 类型 数组名[行][列]; 例:  int nums[2][3];//2行3列的二维数组,保存的数据类型是int类型 c ...

  2. C语言 字符二维数组(多个字符串)探讨 求解

    什么是二维字符数组? 二维字符数组中为什么定义字符串是一行一个? “hello world”在C语言中代表什么? 为什么只能在定义时才能写成char   a[10]="jvssj" ...

  3. C语言中将二维数组作为函数参数来传递

    c语言中经常需要通过函数传递二维数组,有三种方法可以实现,如下: 方法一, 形参给出第二维的长度. 例如: #include <stdio.h> void func(int n, char ...

  4. C语言回顾-二维数组

    1.二维数组:是一个特殊的一维数组 完全初始化: 1)int a[2][3]={{1,2,3},{2,3,4}}; 2)连续赋值int a[2][3]={1,2,3,2,3,4}; 3)可以省略第一维 ...

  5. C语言教学--二维数组和指针的理解

    对于初学者对二维数组和指针的理解很模糊, 或者感觉很难理解, 其实我们和生活联系起来, 这一切都会变得清晰透彻. 我们用理解一维数组的思想来理解二维数组, 对于一维数组,每个箱子里存放的是具体的苹果, ...

  6. C语言基础--二维数组

    二维数组概念: 数组中的每一个元素又是一个数组, 那么这个数组就称之为二维数组,二维数组是特殊的一维数组. 二维数组格式: 元素类型 数组名称[一维数组的个数][每个一维数组的元素个数]; 元素类型 ...

  7. 【C语言】二维数组做形参

    二维数组有两种形式: ①在栈上:         int a[4][4] = {...}; ②在堆堆上:          int ** a = new int *[4];           for ...

  8. 【学习笔记】【C语言】二维数组

    1. 什么是二维数组 一个数组能表示一个班人的年龄,如果想表示很多班呢? 什么是二维数组?int ages[3][10]; 三个班,每个班10个人 相当于3行10列 相当于装着3个一维数组 二维数组是 ...

  9. iOS,object-c传参c语言的二维数组

    有那么一瞬间,懒得用NSArray,NSNumber,NSValue等一大堆蛋疼的转换,所以就定义了一个C的二维数组,反正OC支持C混编,可是蛋疼往往是传递的,这里不疼了,哪里就要疼,想把一个c的二维 ...

随机推荐

  1. 读Zepto源码之Form模块

    Form 模块处理的是表单提交.表单提交包含两部分,一部分是格式化表单数据,另一部分是触发 submit 事件,提交表单. 读 Zepto 源码系列文章已经放到了github上,欢迎star: rea ...

  2. JSP中的九大隐式对象及四个作用域

    在这篇博文中,我们将讨论和学习JSP中的隐式对象及四个作用域. 一.九大隐式对象 这些对象是JSP容器为每个页面中的开发人员提供的Java对象,开发人员可以直接调用它们而不用显式地声明它们再调用. J ...

  3. 【NOIP2015提高组】 Day1 T2 信息传递

    题目描述 有n个同学(编号为1到n)正在玩一个信息传递的游戏.在游戏里每人都有一个固定的信息传递对象,其中,编号为i的同学的信息传递对象是编号为Ti同学. 游戏开始时,每人都只知道自己的生日.之后每一 ...

  4. css左侧固定宽度,右侧自适应的几种实现方法

    左侧固定,右侧自适应或者右侧固定在,左侧自适应是一样的.这种布局很常见,而且面试过程中也经常会问到,这里我总结的方法一共有5种.要实现这种布局,也算比较简单.我们先给出html结构: <div ...

  5. python学习笔记(十一)之函数

    牛刀小试: 定义一个无参函数 >>> def myFirstFunc(): ... print("Hello python") ... print("h ...

  6. css基础语法一(选择器与css导入方式)

    页面中,所有的CSS代码,需要写入到<style></style>标签中.style标签的type属性应该选择text/css,但是type属性可以省略. CSS修改页面中的所 ...

  7. js中的路由匹配

    routie插件:http://projects.jga.me/routie/ /** * 路由 * @example * routie( * { * '/':function(){ }, * '/m ...

  8. linux DHCP安装和测试

    1.Yum 安装DHCP服务 2.拷贝模板配置文件,方便后期的配置修改. cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd. ...

  9. Red Hat 7.0 DNS服务配置笔记

    先挂载镜像,然后配置yum,然后安装yum install -y bind 配置静态 IP.DNS就是他本身的IP地址. 修改DNS的配置文件,在后面加入区域配置信息.vim /etc/named.c ...

  10. spring boot hello and docker

    主要是想试下spring boot运行在docker里的感觉, 小试牛刀   :) 这是原文,参考一下:  https://spring.io/guides/gs/spring-boot-docker ...