首页 > 其他分享 >数组(3)二维数组

数组(3)二维数组

时间:2023-11-28 22:45:12浏览次数:33  
标签:int else ++ 二维 result 数组 numOfO size

<1>二维数组的基本内容

(1)基本了解

  • 举例:int a[3][5];

  • 概念:可以将a理解为一个三行五列的矩阵;(由此证明3代表行,5代表列)

(2)二维数组的遍历

  • 代码:for(i=0;i<3;i++){

    for(j=0;j<5;j++){
    a[i][j]=i*j;
    }
    }
  • a[i][j]是一个int;

  • 表示第i行和第j列上的单元;

  • 提出问题:a[i,j]表示的含义

1)在数学中:a[i,j]表示a的i行j列;
2)但是在C中:a[i,j]是一个表达式,逗号是一个运算符,这个表达式的结果为a[i,j]=a[j]

————2)相关知识:逗号运算符是把后面的值赋给前面

(3)二维数组的初始化

int a[][5]={
{0,1,2,3,4},
{2,3,4,5,6},
};

  • 列数是必须给出的,行数可以由编译器来数;
  • 每行一个{},用逗号分隔;
  • 最后的逗号可以存在;
  • 省略可以补0;
  • 也可以用定位仅适用于C99;

(4)二维数组典例——tic-tac-toe游戏

  • 1)题目信息:读入一个3×3的矩阵,矩阵上的数字为1表示该位置上有一个X,矩阵上的数字为0表示该位置上有一个O;

  • 2)题目要求:程序判断这个矩阵中是否有获胜的一方(三个相同符号连成一条线),输出表示获胜的一方的字符X或O,或输出无人获胜

1.读入矩阵

const int size=3;
int board[size][size];
int i,j;
int numOfX;
int numOfO;
int result=-1;//-1:没人赢;1:X赢;0:O赢
//读入矩阵
for(i=0;i<size;i++){
for(j=0;j<size;j++){
scanf("%d",&board[i][j]);
}
}

2.检查行

//检查行
for(i=0;i<size && result= =-1;i++){
numOfO=numofX=0;
for(j=0;j<size;j++){
if(board[i][j]= =1){
numofX++;
}else{
numOfO++;}
}

//在同一行中,行号不变,列数不断加一;在同一行中随着列数的累加如果O的数量不增加,则X的数量增加,反之一样;

if(numOfO= =size){
result=0;
}else if(numOfX==size){
result=1;
}

//如果O的数量与size相同,则O取胜;反之X取胜;

}

3.检查列

if(result= =-1){
for(j=0;j<size && result= =-1;j++){
numOfO=numOfX=0;
for(i=0;i<size;i++){
if(board[i][j]= =1){
numofX++;
}else{
numOfO++;
}
}
if(numOfO= =size){
result=0;
}else if(numOfX= =size){
result=1;
}
}
}

4.检查对角线

numOfO = numOfx = 0;
for ( i=0; i<size; i++ ){
if ( board[il[i] == 1 ) {
numOfX ++;
}else {
numOfO ++;
}
}
if ( num0fO == size ) {
result = 0;
} else if (numOfX == size ) {
result = 1;

——————正对角线——————————

numofo = num0fX = 0;
for ( i=0;i<size; i++ ) {
if ( board[il[size-i-l] == 1 ) {
num0fX ++;
} else {
numOfO ++;
}
}

———————反对角线(20;11;02)——————————

标签:int,else,++,二维,result,数组,numOfO,size
From: https://www.cnblogs.com/QingYuY/p/17863113.html

相关文章

  • .NET生成微信小程序推广二维码
    前言对于小程序大家可能都非常熟悉了,随着小程序的不断普及越来越多的公司都开始推广使用起来了。今天接到一个需求就是生成小程序码,并且与运营给的推广图片合并在一起做成一张漂亮美观的推广二维码,扫码这种二维码就可以进入小程序。为了节省服务器内存资源,我想的就是成功调用通微......
  • 数组(2)数组运算及典例(求解素数的方法)
    <1>数组运算1)数组的集成初始化1.形式示例1-inta[]={1,2,3...};2-inta[13]={2};————第一个单元内中的a0=2,剩下的单元都默认赋为0;2.集成初始化时的定位——仅适用于C99举例:inta[10]={[0]=2,[2]=3,6,};特点:用[n]在初始化数据中给出定位;没有定位的数......
  • 自学day7 数组
    typora-copy-images-to:media数组一、概念对象中可以通过键值对存储多个数据,且数据的类型是没有限制的,所以通常会存储一个商品的信息或一个人的信息:varobj={goodsname:"手机",price:"5000",introduce:"手机很时尚,很漂亮!"}varperson={name:"张......
  • [LettCode] 找到数组中和为目标值的两个数
    给定一个整数数组intArr, 还有一个目标值targetValue,需要在这个数组intArr中找出和为目标值targetValue的两个整数,并返回它们的数组下标example:intArr=[2,7,11,15],target=9,显然两个值是2和7,它们的数组下标为0,1 ......
  • Java 将JSON数组转成List对象集合
     一、从对象列表中提取并组装JSON字段的数据:(工具类)publicclassJsonMsgUtils<T>{/***从对象列表中提取并组装JSON字段的数据。**@paramlogs包含对象的列表*@paramtargetClass目标对象类型,表示JSON消息的结构......
  • Vue3中 使用v-for嵌套 获取其他数组中的值作为key值 渲染数据
    <tbody><trv-for="(row,idx)inrows":key="idx"><tdv-for="(item,key)intitle":key="key">{{row[key]}}</td></tr>......
  • LeetCode-Java:80.删除有序数组中的重复项 II
    题目给你一个有序数组nums,请你原地删除重复出现的元素,使得出现次数超过两次的元素只出现两次,返回删除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用O(1)额外空间的条件下完成。说明:为什么返回数值是整数,但输出的答案是数组呢?请注意,输入......
  • LeetCode-Java:26.删除有序数组的重复项
    题目给你一个非严格递增排列的数组nums,请你原地删除重复出现的元素,使每个元素只出现一次,返回删除后数组的新长度。元素的相对顺序应该保持一致。然后返回nums中唯一元素的个数。考虑nums的唯一元素的数量为k,你需要做以下事情确保你的题解可以被通过:更改数组......
  • 数字在排序数组中出现的次数--二分
    题目描述有序序列二分先对左端点进行二分再对右端点二分最后得到两个端点,直接相减+1,得到区间个数classSolution{public:intgetNumberOfK(vector<int>&nums,intk){if(nums.empty())return0;intl=0,r=nums.size()-1;while(l<r......
  • 力扣907. 子数组的最小值之和(单调栈)
    给定一个整数数组 arr,找到 min(b) 的总和,其中 b 的范围为 arr 的每个(连续)子数组。由于答案可能很大,因此 返回答案模 10^9+7 。 示例1:输入:arr=[3,1,2,4]输出:17解释:子数组为[3],[1],[2],[4],[3,1],[1,2],[2,4],[3,1,2],[1,2,4],[3,1,2,4]。最小值为3,1,2,4,1,1,2,1,1,1,和......