已阅读5页,还剩27页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
二维数组和字符串 二维数组 二维表数表 数阵 矩阵 123456 1 二维数组的定义 数据类型数组名 常量表达式 常量表达式 例 inta 3 4 定义了一个3 4 3行4列 的数组 注意 不能写成inta 3 4 的形式 inta 3 4 定义的是一维数组 数组的标志是 每一个 代表一维 C 采用这样的定义方式 使我们可以把二维数组看作是一个特殊的一维数组 它的元素又是一个一维数组 即把二维数组的每行看作一个元素 例 inta 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 aa 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个一维数组 即相当于inta 0 4 a 1 4 a 2 4 C 的这种处理方法很方便 我们在后面会体会到 C 语言中 二维数组中元素在计算机内存中的存放顺序是 按行存放 即先在内存中存放第一行的元素 再放第二行的元素 第一维变化慢 第二维变化快 例 inta 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 允许使用多维数组有了二维数组的基础 再掌握多维数组是不困难的 例如 三维实数数组定义为 数据类型数组名 常量表达式 常量表达式 常量表达式 doublea 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开始 下标不要超过各维的大小 例 inta 3 4 第1行第2列的元素是a 0 1 也可说成第1行的第2个元素是a 0 1 a 2 3 是第3行的第4个元素a 3 3 违法 3二维数组的初始化对于二维数组有下列初始化方法 1 分行给二维数组赋初值 如 inta 3 4 1 2 3 4 5 6 7 8 9 10 11 12 这种赋值方法比较直观 把第一对括号内的数值赋给第一行的元素 第二括号内的数值赋给第二行的元素 依此类推 2 可以将所有数据写在一个花括号内 这时 计算机自动按数组元素在内存中的排列顺序对各元素赋初值 例 inta 3 4 1 2 3 4 5 6 7 8 9 10 11 12 3 可以只对数组中部分元素初始化 如 inta 3 4 1 5 9 此处的作用表示 a 0 0 元素被赋成1 a 1 0 元素被赋成5 a 2 0 元素被赋成9 而数组中的其他元素被初始化为0 与一维数组的初始化机制相同 4 如果对二维数组的全部元素初始化 则定义数组时第一维长度可以省略 但第二维长度不能省 如 分行进行初始化 如 inta 4 0 0 3 0 10 charc 10 C p r o g r a m 0 4二维数组的赋值 输入 输出使用二重循环 对每个元素赋值 输入和输出 for inti 0 i a i j a i j a i j cout a i j endl 例题1矩阵的行列互换将一个二维数组的行列互换 存到另外一个二维数组中 例如 a 123行列互换后放在数组b中 b 144562536 例题2河图将1 9填到九宫格中 使得横竖斜三个方向的三个数之和均为15 intmain for inti 1 i 9 i for intj 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 return0 intcheck intflag 10 0 0 0 0 0 0 0 0 0 0 for inti 0 i0 1 用一维数组名作函数参数可以用数组名做函数参数 此时形参与实参都是数组名 也可用指针 例 用选择法对数组中的元素排序 数组名作为函数参数 实参是数组名 形参也应为数组名 或指针 实参数组与形参数组类型应该一致 如不一致 将出错 数组名代表的是数组首元素的地址 数组起始地址 因此用数组名作函数实参时 不是把实参数组元素的值传递给形参 而只是将实参数组的首地址传递给形参 这样 实参数组和形参数组就共占同一段内存单元 这样 1 声明形参数组并不意味着真正建立一个包含若干元素的数组 在调用函数时也不对它分配存储单元 只是用 这样的形式表示形参是数组 中的数值无实际作用 形参一维数组的声明中可以写元素个数 也可以不写 编译系统对 的数值不予处理 2 需要传递数组的元素个数 下面得函数首部都是等价的voidselect intarr intn voidselect intarr 5 intn voidselect intarr 10 intn 2 用多维数组名作函数参数如果用二维数组名作为实参和形参 在对形参数组声明是 必须制定第二维的大小 且应该与实参的第二维的大小相同 第一维的大小可以指定 也可以不指定 如 形参数组inta 3 10 与inta 10 二者都合法且等价 inta 与inta 3 两者都不合法 在第二维大小相同的前提下 形参和实参的第一维可以不同 如实参数组定义为intscore 5 10 则形参可以声明为intscore 3 10 intscore 10 这时形参二维数组与实参二维数组都是由相同类型和大小的一维数组组成的 实参数组名score代表其首元素score 0 的起始地址 如果是三维或更多维的数组 处理方法也是类似的 例 有一个3 4的矩阵 求矩阵中所有元素的最大值 要求用函数求最大值 intmax intarr 4 intn intm m a 0 0 for inti 0 i n i for intj 0 j 4 j if m arr i j m m arr i j returnm 由小到大直接选择排序 includeusingnamespacestd inta 10001 voidSelectSort intarray intn inti j k temp for i 0 ia j 改成a i n for i 0 i a i SelectSort a n for i 0 i n i cout a i return0 由小到大 includeusingnamespacestd inta 10001 voidBuddleSort inta intn inti j temp boolflag true for i 0 ia j 1 改成a j a j 1 就变成了由大到小排列 flag true temp a j a j a j 1 a j 1 temp if flag false break intmain intn i cin n for i 0 i a i BuddleSort a n for i 0 i n i cout a i return0 字符串 C 对字符串的处理方法有两种 一种是用字符数组 这是继承自C语言的方法 另外一种是标准模板库里的cstring类型 这是C 的标准方法 注 NOI中可以使用cstring 字符数组 1 字符数组的定义用来存放字符型数据的数组为字符数组 数组中的一个元素中只能存放一个字符 整个数组可以存放一个字符串 如 charc 5 2 字符数组的初始化字符数组的初始化方式同一维数组的初始化类似 如 charc 5 a b c d e charc 6 a b c d e 0 等价于charc 6 a b c d e 3字符数组的赋值只能对字符数组的元素赋值 而不能用赋值语句对整个数组赋值 chara 5 b 5 1 2 3 a 1 2 3 错a b 错 4 字符串和字符串结束标志在C 语言中字符串是以 0 代表结束标志 如 C program 是9个字符的字符串 但在内存中占10个字节 最后一个字节存放 0 注意 字符串要用字符数组来保存 不能用一个简单的字符变量保存 另外 字符数组的初始化方式也可写为 charc 10 C program charc 10 C program charc 10 C p r o g r a m 0 charc 10 C p r o g r a m 字符数组多留一个空间 初始化自动填 0 与charc 9 C p r o g r a m 不等价 5 字符串的输入 输出 1 用cin输入cin 字符串或字符数组名 例 chars 20 cin s 2 用cout输出 格式是 cout 字符串或字符数组名 例 chars 20 Thisisastring cout s 的输出结果为Thisisastring 也可直接输出字符串 如 cout Thisisastring 注 字符数组中若没有字符串结束标志 则一直输出到在内存中碰到 0 标志 6 字符串处理函数求字符串的长度函数原型 strlen constcharstring 功能 计算并返回字符串的长度 字符串复制函数原型 strcpy chardestination constcharsource 功能 strcpy将字符串复制到字符串变量中 该变量中原有的内容被覆盖 必须保证字符串变量的这个字符数组有足够的单元容纳字符串 函数原型 strncpy chardestination constcharsource intnumchars 功能 strncpy 将字符串source中前numchars个字符拷贝到字符串destination中 字符串连接原型 strcat chartarget constcharsource 功能 将字符串source接到字符串target的后面 必须保证字符串变量空间足够 原型 strncat chartarget constcharsource intnumchars 功能 将字符串source的前numchars个字符接到字符串target的后面字符串比较调用格式 strcmp 字符串1 字符串2 功能 比较两者 返回值为0 则相等 为大与0 则字符串1大与字符串2 否则小于 字符串输出调用格式 cout 字符串变量功能 输入一个字符串 调用格式2 cin getline 字符串变量 变量大小 功能 从键盘输入一个以Enter键标志结束的字符串 例1输入n个字符串 要求找出其中的最大者 要求使用函数找最大者 每个字符串长度小于
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《四季(第一课时)》课件
- 融侨景观方案评审要点
- 中风康复训练测试题与答案分享
- 幼儿园学期班级的工作总结(7篇)
- 河南思修考试题目与答案分享
- 聊城垃圾分类知识测试题目与答案
- 营养学(一)考试题目与答案解析
- 金属制品企业负责人安全培训
- 综合行业智能科学研究企业安全管理系统实验室设备运行与危化品管理培训
- 梅毒临床知识考核题目与答案
- (高清版)DZT 0205-1999 地面γ能谱测量技术规程
- 水务资产移交方案
- 工程冻土研究课件
- 母女三人闹元宵三人混战猜灯谜
- 胰腺癌的教学查房
- 地质数据处理基础课件
- 15D502 等电位联结安装
- 生物技术专业大学生职业生涯规划书
- 交流采样远动终端技术条件
- 中医内科汗证
- GB/T 917-2017公路路线标识规则和国道编号
评论
0/150
提交评论