二维数组和字符串
更新时间:2023-07-28 19:50:01 阅读量: 实用文档 文档下载
二维数组和字符串
二维数组 二维表学号 语文 数学 外语
1
100110
100110
100120
数表(数阵,矩阵)123 456
1.二维数组的定义: 数据类型 数组名[常量表达式][常 量表达式] 例: int a[3][4]; 定义了一个3*4(3行4列)的数组。
注意: 不能写成 int a[3,4];的形式。 int a[3,4];定义的是一维数组;数组 的标志是[],每一个[]代表一维
[0][0] [0][1] [0][2] [0][3] [1][0] [1][1] [1][2] [1][3] [2][0] [2][1] [2][2] [2][3]
C++采用这样的定义方式,使我们可以把二维数组看作是一个特殊的 一维数组:它的元素又是一个一维数组。(即把二维数组的每行看作 一个元素) 例: int a[3][4]; 可以把a看成一个一维数组,它有3个元素a[0]、a[1]、a[2],每个元素又 是含4个元素的一维数组。见下图。 a[0] --- a[0][0],a[0][1],a[0][2],a[0][3] a a[1] --- a[1][0],a[1][1],a[1][2],a[1][3] a[2] --- a[2][0],a[2][1],a[2][2],a[2][3]
此时, a[0]、a[1]、a[2]相当于3个一维数组的名字,上面定义的二维 数组可以理解为定义了3个一维数组,即相当于 int a[0] [4],a[1] [4], a[2] [4]; C++的这种处理方法很方便,我们在后面会体会到
C++语言中,二维数组中元素在计算机内 存中的存放顺序是:按行存放,即先在内 存中存放第一行的元素,再放第二行的元 素(第一维变化慢,第二维变化快)。 例:int a[3][4]; 二维数组a在内存中的存放 顺序为 a[0][0],a[0][1],a[0][2],a[0][3],[1][0],a[1][1],a[1][ 2],a[1][3],a[2][0],a[2][1],a[2][2],a[2][3]
C++允许使用多维数组 有了二维数组的基础,再掌握多维数组是不困难的。例如, 三维实数数组定义为: 数据类型 数组名[常量表达式][常量表达式][常量表达式]; double a[2][3][4] 定义了三位数组,共2*3*4=24个元素。多维数组在内存中 的排列顺序类似于二维数组,第一维的下标变化最慢,最 右边的下标变化最快。 a[0][0][0],a[0][0][1],a[0][0][2],a[0][0][3],a[0][1][0],…
2 二维数组元素的引用 数组名[下标][下标] 注意:每维下标从0开始;下标不要超过各维的大小。 例:int a[3][4]; 第1行第2列的元素是a[0][1] (也可说成第1行的第2个元素是a[0][1]) a[2][3]是第3行的第4个元素 a[3][3]违法
3 二维数组的初始化 对于二维数组有下列初始化方法: (1)分行给二维数组赋初值,如: int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}; 这种赋值方法比较直观,把第一对括号内 的数值赋给第一行的元素,第二括号内的 数值赋给第二行的元素,依此类推。
(2)可以将所有数据写在一个花括号内,这时,计 算机自动按数组元素在内存中的排列顺序对各元 素赋初值。 例:int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; (3)可以只对数组中部分元素初始化。如: int a[3][4]={{1},{5},{9}}; 此
处的作用表示:a[0][0]元素被赋成1,a[1][0]元素被 赋成5,a[2][0]元素被赋成9,而数组中的其他元素 被初始化为0(与一维数组的初始化机制相同) (4)如果对二维数组的全部元素初始化,则定义数 组时第一维长度可以省略,但第二维长度不能省, 如:分行进行初始化,如: int a[][4]={{0,0,3},{},{0,10}}; char c[10]={ C‘,‘p‘,‘r‘,‘o‘,‘g‘,‘r‘,‘a‘,‘m‘,‘\0‘};
4 二维数组的赋值、输入、输出使用二重循环,对每个元素赋值、输入和输出: for(int i=0;i<3;i++) for (int j=0;j<4;j++)//初始化有错误吗? { cin>>a[i][j]; a[i][j]*=a[i] [j]; cout<<a[i][j]<<endl; }
例题1 矩阵的行列互换 将一个二维数组的行列互换,存到另外一 个二维数组中。例如:a= 1 2 3 行列互换后放在数组b中,b= 1 4 456 25 36
例题2 河图 将1~9填到九宫格中,使得横竖斜三个方向 的三个数之和均为15
int main() { for(int i=1;i<=9;i++) for(int j=1;j<=9;j++) {
a[1][1]=5; a[0][0]=i; a[0][1]=j; a[0][2]=15-i-j; a[2][2]=15-5-i; a[1][2]=15-a[0][2]-a[2][2]; a[1][0]=15-5-a[1][2]; a[2][0]=15-i-a[1][0]; a[2][1]=15-a[2][0]-a[2][2]; if (check()) { print(); return 0; } }}
5
int check() { int flag[10]={0,0,0,0,0,0,0,0,0,0}; for(int i=0;i<3;i++) for(int j=0;j<3;j++) { if ((a[i][j]>0)&& !flag[a[i][j]]) flag[a[i][j]]=1; else return 0; } return 1;}
1. 用一维数组名作函数参数可以用数组名做函数参数,此时形参与实 参都是数组名(也可用指针)。
例:用选择法对数组中的元素排序
数组名作为函数参数,实参是数组名,形参也应为数组名 (或指针)。实参数组与形参数组类型应该一致,如不一 致,将出错。 数组名代表的是数组首元素的地址(数组起始地址)。因 此用数组名作函数实参时,不是把实参数组元素的值传递 给形参,而只是将实参数组的首地址传递给形参,这样, 实参数组和形参数组就共占同一段内存单元。这样,(1) 声明形参数组并不意味着真正建立一个包含若干元素的数 组,在调用函数时也不对它分配存储单元,只是用[]这样 的形式表示形参是数组,[]中的数值无实际作用。形参一 维数组的声明中可以写元素个数,也可以不写,编译系统 对[]的数值不予处理。(2)需要传递数组的元素个数。 下面得函数首部都是等价的 void select(int arr[],int n) void select(int arr[5],int n) void select(int arr[10],int n)
2. 用多维数组名作函数参数 如果用二维数组名作为实参和形参,在对形参数组声明是, 必须制定第二维的大小,且应该与实参的第二维的大小相 同。第一维的大小可以指定,也可以不指定。 如:形参数组int a[3][10] 与 int a[][10],二者都合法且等价; int a[][]与int a[3][]两者都不合法。
在
第二维大小相同的前提下,形参和实参的第一维可以不同。如实参数组定义为 int score[5][10];则形参可以声明为int score[3][10];int score[][10]; 这时形参二维数组与实参二维数组都是由相同类型和大小 的一维数组组成的,实参数组名score代表其首元素 score[0]的起始地址。
如果是三维或更多维的数组,处理方法也是类似的。
例:有一个3*4的矩阵,求矩阵中所有元素的最大值。要 求用函数求最大值。 int max(int arr[][4],int n) { int m; m=a[0][0]; for(int i=0;i<n;i++) for(int j=0;j<4;j++) if (m<arr[i][j]) m= m<arr[i][j]; return m; }
//由小到大 直接选择排序 #include <iostream> using namespace std; int a[10001]; void SelectSort(int array[], int n) { int i, j, k,temp; for (i = 0; i < n-1; i++) for (j = i + 1; j<n; j++) if (a[i]>a[j]) //改成a[i]<a[j]就变成由大到小排序了 { temp = a[i]; a[i] = a[j]; a[j] = temp; } } int main() { int n,i; cin>>n; for (i=0;i<n;i++) cin>>a[i]; SelectSort(a,n); for (i=0;i<n;i++) cout<<a[i]<<" "; return 0; }
正在阅读:
二维数组和字符串07-28
学前班秋季学期数学教学计划03-17
卫生检测实验室能力表述规范01-09
基于PLC的四层电梯控制毕业论文11-07
入党转正申请书格式及范文09-08
娃哈哈市场营销策划书06-14
2015年东营职业道德教育读本试题答案03-16
高效课堂与有效教学模式的研究实施方案11-23
勇敢的仙人球作文350字07-12
《整式的加减》知识点归纳及典型例题分析02-01
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 二维
- 数组
- 字符串
- 2009-2014年上半年湖南省金属废料和碎屑加工处理行业经营状况分析年报
- 精髓-代沟的主要责任在晚辈辩题
- 扬子江-GRE填空词汇分类汇总
- 关于党内政治生活的若干准则(精心整理,党课必备)
- 2013-2014学年第二学期七年级语文期末考试试题有答案
- 辽宁省大连市第48中学09-10年度高一12月月考试卷(生物)
- 地铁接触网学习文档
- 方差检验和拟合优度检验
- 国际交流英语视听说B4U4
- 公路工程勘察设计招标评标办法
- 神经内科患者安全隐患及对策
- 砼单项工程施工劳务分包合同1
- 第二十章 国际货币制度(国际经济学-南开大学,李坤望)
- 工程岩土学(唐大雄 、孙愫文 主编 )
- 消防安全体系模板
- 2021年校友会财务管理制度
- 旅游用地分类的原则
- 隧道通风几种方式
- 大学生入党动机座谈会
- 10江西廖坊灌区信息化建设建议方案20071011