C语言初级阶段4——数组2————二维数组

二维数组的定义:类型说明符 数组名[数组大小] [数组大小]

第一个大小是行的大小,第二个大小是列的大小。

二维数组的初始化:{}

#include<stdio.h>
int main() {
int arr[2][9] = {
{1,2,3,4,5,6,7,8,9},
{9,8,7,6,5,4,3,2,1}
};
int arr1[2][9] = { 1,2,3,4,5,6,7,8,9,9,8,7,6,5,4,3,2,1 };
//赋值是一行一行的赋值
int arr2[2][9] = { {1,2,3,4,5,6,7,8,9},{1,2,3,4,5,6,7,8,9} };
int arr3[2][9] = { {1,2,3},{4,5,6} };//没有赋值的地方系统自动默认为0
/*int arr4[][4];
int arr5[2][];不能这么定义*/
int arr6[][3] = {
1,2,3,
4,5,6,
7,8,9,
10
};
printf("%d\n", arr6[3][2]);
int arr7[10] = { 1,2,3,4,8,9,8,4,5,8 };
for (int i = 0; i < 10; i++)
{
printf("%d\n", arr7[i]);
}
int arr8[][3] = {
1,2,3,
4,5,9,
8,5,6,
10
};
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 3; j++) {
printf("%d\t", arr8[i][j]);
}
printf("\n");//二维数组需要用循环的嵌套进行输出。
}
return 0;
}

三维数组:三维数组是由多个二维数组构成。

#include<stdio.h>
int main()
{
int arr9[2][4][3] = {
{
{1,2,3},
{4,5,6},
{7,8,9},
{10}
},
{
{1,2,3},
{4,5,6},
{7,8,9},
{10}
}
};
printf("%d\n", arr9[1][2][1]);
return 0;
}

四维数组:四维数组由多个三维数组组成的。

#include<stdio.h>
int main()
{
int arr9[2][4][3] = {
{
{1,2,3},
{4,5,6},
{7,8,9},
{10}
},
{
{1,2,3},
{4,5,6},
{7,8,9},
{10}
}
};
printf("%d\n", arr9[1][2][1]); int arr10[2][3][4][5] = {
{
{
{1,2},
{1,2}
},
{
{3,4},
{5,6}
}
},
{
{
{1,2},
{1,2}
},
{
{3,4},
{5,6}
}
}
};
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 3; j++)
{
for (int k = 0; k < 4; k++)
for (int l = 0; l < 0; l++)
{
printf("%d\n=t", arr10[i][j][k][l]);
}
}
}
return 0;
}
#include<stdio.h>
#include<windows.h>//system("clc")的头文件
#include<conio.h>//switch(_getchar())的头文件
int main() {
//在推箱子中,1表示墙,0表示空地,2表示人,3表示箱子,4表示目的地。
int x = 0, y = 0;//表示人的位置
int arr11[5][5] = {
1,1,1,1,1,
1,0,0,0,1,
1,0,2,4,1,
1,0,0,3,1,
1,1,1,1,1,
};
while (1)
{
system("cls");//清屏,清除控制台里面的内容。
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 5; j++)
{
if (arr11[i][j] == 2)
{
x = i;
y = j;
}
}
}
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 5; j++)
{
printf("%d\t", arr11[i][j]);
}
printf("\n");
}
switch (_getch())//获取一个字符
{
case 's':
if (arr11[x + 1][y] == 0)
{
arr11[x + 1][y] += 2;//把下一步是空的地方+2,变成人。
arr11[x][y] -= 2;//原来人的位置-2,变成空地。
}
break;
}
}
return 0;
}

作业:推箱子游戏,左'A',上'W',下'S',右'D'

C语言初级阶段4——数组2————二维数组的更多相关文章

  1. c#简单实现二维数组和二维数组列表List&lt;&gt;的转置

    刚看到网上一篇文章里用sql实现了行列转置.sql server 2005/2008只用一个pivot函数就可以实现sql server 2000很多行的复杂实现.提到转置,立刻想起还在求学阶段曾经做 ...

  2. java基础5 (一维)数组和二维数组

    本文知识点(目录): 一维数组(一维数组的概念.优点.格式.定义.初始化.遍历.常见异常.内存分析以及常见操作(找最大值.选择排序.冒泡排序等等))    二维数组(二维数组的遍历.排序.查找.定义. ...

  3. C#的一维数组和二维数组定义方式:

    一维数组: //一维数组定义与初始化 ,, };//第一种方式 , , }; //第二种方式 int[] one3; //第三种方式 one3=,,}; 二维数组: //二维数组定义与初始化 //不规 ...

  4. C# 数组、一维数组、二维数组、多维数组、锯齿数组

    C#  数组.一维数组.二维数组.多维数组.锯齿数组 一.数组: 如果需要使用同一类型的对象,就可以使用数组,数组是一种数据结构,它可以包含同一类型的多个元素.它的长度是固定的,如长度未知的情况下,请 ...

  5. java - day005 - 数组工具类, 数组复制,二维数组,变量,方法, 面向对象

    1. java.util.Arrays  数组工具类    Arrays.toString (数组) 数组值链接字符串 Arrays.sort(数组) 基本类型: 优化的快速排序 引用类型: 优化的合 ...

  6. Java数组之二维数组

    Java中除了一维数组外,还有二维数组,三维数组等多维数组.本文以介绍二维数组来了解多维数组. 1.二维数组的基础 二维数组的定义:二维数组就是数组的数组,数组里的元素也是数组. 二维数组表示行列二维 ...

  7. JS中:数组和二维数组、MAP、Set和枚举的使用

    1.数组和二维数组:   方法一: var names = ['Michael', 'Bob', 'Tracy']; names[0];// 'Michael' 方法二: var mycars=new ...

  8. 二维数组,锯齿数组和集合 C# 一维数组、二维数组(矩形数组)、交错数组(锯齿数组)的使用 C# 数组、多维数组(矩形数组)、锯齿数组(交叉数组)

    二维数组,锯齿数组和集合 一.二维数组 二维数组:一维数组----豆角二维数组----表格 定义:1.一维数组:数据类型[] 数组变量名 = new 数据类型[数组长度];数据类型[] 数组变量名 = ...

  9. 第二篇 javascript一维数组和二维数组及方法

    一.数组 什么是数组 程序=数据+算法 数组就是一种很常见的保存批量数据的数据结构 一.定义数组 var arr1=[]; //定义了一个不包含元素的数组 ,,]; //定义了一个包含三个元素的数组 ...

  10. android JNI 一维数组、二维数组的访问与使用

    在JNI中访问JAVA类中的整型.浮点型.字符型的数据比较简单,举一个简单的例子,如下: //得到类名 jclass cls = (*env)->GetObjectClass(env, obj) ...

随机推荐

  1. restful的10个规范、序列化和反序列化的名词解释

    # 概念 REST全称是Representational State Transfer,中文意思是表述:表征性状态转移. RESTful是一种定义Web API接口的设计风格,尤其适用于前后端分离的应 ...

  2. 面试官:来说说 https 和 http 区别?

    http 和 https的区别? 一.传输信息安全性不同 1.http协议:是超文本传输协议,信息是明文传输.如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息. 2.h ...

  3. Vulnhub 靶场 BEELZEBUB: 1

    Vulnhub 靶场 BEELZEBUB: 1 前期准备 靶机地址:https://www.vulnhub.com/entry/beelzebub-1,742/ kali攻击机ip:192.168.1 ...

  4. PHP 中的类-什么叫类

    在阐述类的概念之前我们来先说说面向对象编程的概念:面向对象的程序设计(Object-Oriented Programming,简记为OOP)立意于创建软件重用代码,具备更好地模拟现实世界环境的能力,这 ...

  5. NPOI 导出 EXCEL

    1. 2.创建NPOIHelper using System;using System.Collections.Generic;using System.Data;using System.IO;us ...

  6. go-bindata安装问题

    问题描述使用命令 go get -u github.com/jteeuwen/go-bindata/... 报错: go get -u github.com/go-bindata/go-bindata ...

  7. 前端实现HTML转PDF下载的两种方式

    原文链接:https://www.jianshu.com/p/56680ce1cc97 方式一:使用html2canvas和jspdf插件实现 该方式是通过html2canvas将HTML页面转换成图 ...

  8. vue 项目中笔记-持续更新

    9.class常用操作: :class="packUp ? 'search-form-btn active fr' : 'search-form-btn fr'" :class=& ...

  9. Oracle数据泵恢复用户数据实例

    我们测试环境经常会遇到恢复生产数据的情况,我一般比较习惯使用数据泵来搞,这个具体根据自己的业务形态选择适合自己的方式. 此次我们说的是完全恢复用户数据,具体步骤如下: 1.备份数据 expdp tes ...

  10. linux服务器项目迁移非常好用的工具scp和rsync

    linux系统下一般都安装了,启用一下就可以了 (1):编辑配置文件 # sudo vi /etc/default/rsync #ubuntu  # vi /etc/xinetd.d/rsync #c ...