第五讲 数组 一维数组 二维数组 数组作为函数参数

Similar documents
没有幻灯片标题

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1

Microsoft PowerPoint - 4. 数组和字符串Arrays and Strings.ppt [兼容模式]

C++ 程序设计 告别 OJ2 - 参考答案 MASTER 2019 年 5 月 3 日 1


C 1 # include <stdio.h> 2 int main ( void ) { 4 int cases, i; 5 long long a, b; 6 scanf ("%d", & cases ); 7 for (i = 0;i < cases ;i ++) 8 { 9

2013 C 1 # include <stdio.h> 2 int main ( void ) 3 { 4 int cases, a, b, i; 5 scanf ("%d", & cases ); 6 for (i = 0;i < cases ;i ++) 7 { 8 scanf ("%d %d

C++ 程序设计 OJ9 - 参考答案 MASTER 2019 年 6 月 7 日 1

chap07.key

Generated by Unregistered Batch DOC TO PDF Converter , please register! 浙江大学 C 程序设计及实验 试题卷 学年春季学期考试时间 : 2003 年 6 月 20 日上午 8:3


试卷代号 :1075 座位号 rn 国家开放大学 ( 中央广播电视大学 )2015 年秋季学期 " 开放本科 " 期末考试 c+ 十语言程序设计试题 2016 年 1 月 t 问一 Urr-f 斗 士 1 1. 下面的保留字 ( ) 不能作为函数的返回类型 A. void B. int C. new

试卷代号 ~1075 座位号 E 口 国家开放大学 ( 中央广播电视大学 )20]5 年秋季学期 " 开放本科 " 期末考试 C 十十语言程序设计 试题 同二二十斗 2016 年 1 月 巴叫一 1. 下面的保留字 ( ) 不能作为函数的返回类型 A. void B. int C. new D. l

酒 神 (长篇小说)

(Microsoft Word - 136\260g\270\364\252\272\267s\256Q.doc)

Microsoft PowerPoint - 3. 函数Functionl.ppt [兼容模式]

Microsoft Word - P085003

C/C++程序设计 - 字符串与格式化输入/输出

《C语言程序设计》第2版教材习题参考答案

《计算概论》课程 第十九讲 C 程序设计语言应用

Microsoft PowerPoint - 10 模板 Template.pptx

C/C++语言 - C/C++数据

C++ 程序设计 OJ2 - 参考答案 MASTER 2019 年 5 月 3 日 1

PowerPoint 演示文稿

第3章.doc

OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料

内 容 提 要 指 针 持 久 动 态 内 存 分 配 字 符 串 ( 字 符 数 组 ) 2

Microsoft PowerPoint - 5. 指针Pointers.ppt [兼容模式]

Department of Science and Engineering Computing School of Mathematics School Peking University October 9, 2007

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数

NOWOER.OM m/n m/=n m/n m%=n m%n m%=n m%n m/=n 4. enum string x1, x2, x3=10, x4, x5, x; 函数外部问 x 等于什么? 随机值 5. unsigned char *p1; unsigned long *p

2015年计算机二级(C语言)模拟试题及答案(三)

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.06.doc

主要内容 函数的定义 声明与调用 函数间的参数传递 函数嵌套与内联函数 形参带缺省值的函数与函数重载 数据的作用域 预编译处理与多文件结构 C++ 系统函数 2

c_cpp

Chapter12 Derived Classes

C++ 程序设计 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1

《C语言程序设计》教材习题参考答案

运算符重载 为什么要 运算符重载 那些运算符可以重载, 哪些不可以 如何实现运算符重载 实现方式 : 成员函数与非成员函数 类型转换 怎样实现对象与基本数据类型数据的运算 2

C/C++ System Program Documentation

网C试题(08上).doc

Microsoft PowerPoint - 8. 运算符重载 Operator Overloading.pptx

02

PowerPoint 演示文稿

untitled

授 课 主 要 内 容 回 顾 与 说 明 1 文 案 调 查 的 题 方 法 2 文 案 调 查 体 系 的 建 立 第 二 单 元 授 课 内 容 与 方 法 授 课 方 法 与 时 间 分 配 说 明 3 分 钟 第 三 章 市 场 调 查 方 法 选 择 第 二 节 实 地 调 查 法 学

北京大学

C++ 程序设计 实验 3 - 参考答案 MASTER 2017 年 5 月 21 日 1

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP: ******************* * 关于 Java 测试试题 ******

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例

Guava学习之Resources


今天 年春季号 总 92 期

*

( ) / / / / / / /

(Microsoft Word - 8\244T\244\362\277\337\272]\244W\265L\246W.doc)

Microsoft Word - 專家本色 doc


但, 你 应 该 听 过 我 们 走 在 大 路 上 这 首 歌, 或 许 还 知 道 革 命 人 永 远 是 年 轻 那 支 歌 ; 并 且, 几 乎 可 以 肯 定, 你 在 戴 红 领 巾 的 那 阵, 必 然 唱 过 牛 儿 还 在 山 坡 吃 草, 放 牛 的 却 不 知 道 哪 儿 去

2 临 终 助 念 答 问 序 临 终 关 怀, 由 佛 门 净 宗 古 来 祖 师 大 德 提 倡 助 念 往 生, 现 今 已 渐 为 社 会 大 众 所 重 视, 在 台 湾, 台 大 长 庚 等 各 大 医 院, 也 都 设 有 助 念 室 ; 大 陆 上 许 多 道 场, 也 有 专 为

校园之星

Microsoft Word - 澎湖田調報告-宏達組9804.doc

<4D F736F F F696E74202D FA8BEA861B8EAB7BDBEE3A658BB50C0B3A5CE28B773A6CBA5AB29>

之 原 則 及 國 防 部 訂 頒 國 軍 列 管 國 有 不 動 產 提 供 非 軍 方 單 位 使 用 處 理 原 則 規 定 不 符, 仍 應 以 出 租 方 式 辦 理 惟 可 就 偏 遠 地 區 提 供 官 兵 金 融 水 電 服 務 使 用 部 分, 研 議 降 低 租 金 標 準, 報

chineseall

釋禪波羅蜜次第法門

证券代码: 证券简称:锦江股份 公告编号:【】

1700 装 卸 搬 运 7645 装 卸 搬 运 服 务 2100 建 筑 7410 工 程 服 务 11% 装 卸 搬 运 服 务, 是 指 使 用 装 卸 搬 运 工 具 或 者 人 力 畜 力 将 货 物 在 运 输 工 具 之 间 装 卸 现 场 之 间 或 者 运 输 工 具 与 装 卸

前 言 教 育 无 小 事, 它 成 就 着 学 生 的 未 来 作 为 教 师, 他 们 无 时 无 刻 不 在 关 注 着 学 生 的 成 长 学 生 的 未 来 学 生 就 像 一 朵 含 苞 待 放 的 花 朵, 需 要 老 师 们 的 细 心 呵 护, 给 学 生 需 要 的 东 西, 而

《盗墓笔记》 南派三叔/著

平 凡 足 迹 李 本 川 作 者 为 中 国 科 学 院 海 洋 研 究 所 研 究 员,1935 年 生, 山 东 荣 成 人 我 今 年 63 岁 了 大 前 年 丈 夫 和 儿 子 在 一 个 月 内 先 后 离 开 了 人 世, 女 儿 又 已 出 嫁, 现 在 是 孑 然 一 身 我 是

<CFFBB7D1D5DFD0D0CEAAD1A72E6D7073>

独立学院建设与发展


礼仪玉和葬玉

Microsoft Word - 送報伕2.doc

图 文 聚 焦 国 培 计 划 (2013) 甘 肃 省 农 村 小 学 音 乐 骨 干 教 师 短 期 集 中 培 训 9 月 4 日 开 班 了, 学 员 老 师 们 从 甘 肃 省 各 个 县 市 州 汇 聚 湖 南 一 师, 开 始 了 为 期 14 天 的 培 训 学 习 : 鲜 明 的

邻居啊 第二天 对门却悄无声息了 莫非昨夜的吵闹 仅是个幻觉 夜幕拉下时 寒风又吱溜溜地叫个不停 老婆 睡下后 我这只夜猫子 继续兴致勃勃地跟着福尔 摩斯去探案 白天的喧嚣退去了 周围格外安静 正 是读书的好时候 突然 响起了钟摆声 哒 哒 哒 节奏匀称 不疾不徐 声响却愈来愈大 格外突兀 了 原来

<4D F736F F D BAC520CAD7B6BCCAA6B7B6B4F3D1A C4EAD7A8D2B5BCBCCAF5D6B0CEF1C6C0C6B8B9A4D7F7D2E2BCFB2E646F63>

其 他 方 面 也 可 以 采 用 同 样 的 方 式, 这 样 又 可 以 锻 炼 除 语 文 方 面 的 其 他 能 力 了 而 英 语 方 面, 我 认 为 配 合 英 语 专 业 举 办 英 语 演 讲 比 赛 就 很 不 错 这 样 开 展 一 系 列 的 创 新 活 动, 锻 炼 多 方

第 六 条 办 法 第 五 条 ( 三 ) 协 会 考 评, 考 评 指 考 核 评 价 第 七 条 办 法 第 六 条 职 业 操 守 包 括 的 内 容 : 个 人 诚 信 不 做 假 账 不 偷 漏 税 不 贪 污 盗 窃 等 第 八 条 企 业 财 务 管 理 人 才 评 价 实 行 五 星

<4D F736F F D A67EABD7A4BAB3A1B1B1A8EEA8EEABD7A6DBA6E6B5FBA6F4AD70B5652E646F63>

统计工作情况汇报

他 随 身 带 有 二 三 十 张 古 方, 白 天 卖 药, 夜 晚 将 药 材 精 细 研 末, 按 方 配 制 对 于 病 人 服 药 后 反 应, 特 别 留 心 发 现 问 题, 就 近 向 老 医 生 老 药 贩 虚 心 求 教, 千 方 百 提 高 药 效 同 时 对 于 春 夏 秋

目 录 第 一 章 地 方 陪 同 导 游 人 员 服 务 程 序...1 第 一 节 地 方 陪 同 导 游 人 员 的 概 念 与 职 责...1 第 二 节 服 务 准 备...2 一 熟 悉 接 待 计 划...2 二 落 实 接 待 事 宜...5 三 物 质 和 知 识 的 准 备...

走 吧, 到 三 峡 去 : 那 里 是 我 们 先 人 用 生 命 之 血 打 造 的 家 园 走 吧, 到 三 峡 去 : 那 里 的 浪 涛 承 载 过 千 百 万 只 我 们 先 人 驶 向 今 天 的 航 船 走 吧, 到 三 峡 去 : 那 里 的 每 一 座 青 山 都 刻 满 了 我

6寸PDF生成工具

Microsoft Word - N011 斷翅天使

中 国 科 学 院 国 家 科 学 图 书 馆

申论写作套路万能模板

申 请 律 师 执 业 许 可 初 审 服 务 指 南 目 录 一 办 理 要 素 ( 一 ) 事 项 名 称 和 编 码 4 ( 二 ) 实 施 机 构 4 ( 三 ) 申 请 主 体 4 ( 四 ) 受 理 地 点 4 ( 五 ) 办 理 依 据 4 ( 六 ) 办 理 条 件 5 ( 七 )

( 地 ( ) 组 织 机 构 代 码 企 业 详 细 名 称 哈 密 地 伊 吾 新 疆 广 汇 新 能 源 有 限 公 司 玛 纳 斯 玛 纳 斯 祥 云 化 纤 有 限 公 司 玛 纳 斯 玛 纳 斯 澳 洋 科 技 有 限 责

申請機構基本資料

申請機構基本資料

环 境, 我 在 巩 固 在 校 期 间 所 学 习 的 理 论 知 识 的 同 时, 不 断 的 充 实 己, 利 用 业 余 时 间 主 动 学 习 专 业 知 识, 技 能, 把 理 论 联 系 到 工 作 实 践 中 作 为 一 名 工 作 生 活 中 的 党 员, 我 始 终 注 意 与

附件1

~2~

,,

untitled

Transcription:

第五讲 数组 一维数组 二维数组 数组作为函数参数

一维数组 2

数组 数组 : 具有一定顺序关系的若干相同类型变量的集合体 一维数组的声明 类型标识符变量名 [n] 声明一个长度为 n 的数组 ( 向量 ) 类型标识符 : 数组元素的数据类型 ; n: 数组的长度, 即元素的个数 ; 例 : int x[5] // 声明一个长度为 5 的一维数组 一维数组的引用 变量名 [k] // 注 : 下标 k 的取值为 0 到 n-1 3

一维数组举例 #include<iostream> using namespace std; ex05_array_01.cpp int main() { int i, x[5]; } for (i=0; i<5; i++) x[i] = 2*i; for (i=0; i<5; i++) cout << "x[" << i << "]=" << x[i] << endl; 注意 : 数组的下标不能越界, 否则会引起严重的后果! 4

一维数组 几点注意 : 类型标识符变量名 [n] n 必须是一个确定的正整数 ; n 可以用表达式代替, 但表达式的值必须是正整数 例 : int n=5; int x[n]; int m=2, n=3; int x[m*n+2]; 只能逐个引用数组元素, 而不能一次引用整个数组 数组元素在内存中顺序存放, 它们的地址是连续的 数组名代表数组存放在内存中的首地址 例 :x[10] 在内存中的存放顺序是 x[0] x[1] x[2] x[3] x[4] x[5] x[6] x[7] x[8] x[9] 5

一维数组 一维数组的初始化 : 在声明时可以同时赋初值 例 : int x[5]={0,2,4,6,8}; 也可以只给部分元素赋初值 例 : int x[5]={0,2,4}; // 只能依次赋初值 全部元素赋初值时可以不指定数组长度 例 : int x[]={0,2,4,6,8}; 注意 : 只能对数组元素赋值, 不能对数组名赋值! 例 : int x[5]; x=6; // ERROR! 6

一维数组 声明数组时, 若长度为一个表达式, 且含有变量, 则不能初始化! 例 : int n = 5; int x[n] = {0,2,4,6,8}; // ERROR! const int n = 5; // n 是常量! int x[n] = {0,2,4,6,8}; // OK! ex05_array_02.cpp 若数组元素没有赋值, 则其值是不确定的 ( 静态数据类型除外 ); 若数组声明时进行了部分初始化, 则没有初始化的元素自动赋值为 0 注意 :1 数组声明与数组引用的区别 ; 2 初始化与赋值 7

二维数组 8

二维数组 二维数组的声明 : 类型标识符变量名 [m][n] 声明一个 m X n 的二维数组 ( 矩阵 ) 二维数组的引用 : 变量名 [i][j] // 注意下标的取值范围, 不要越界! 例 : int x[2][3]; x[0][0] = 1; x[0][1] = 3; x[0][2] = 5; for (j=0; j<3; j++) x[1][j] = 2*x[0][j]; 9

二维数组 二维数组的存储 : 按行存储 例 :x[2][3] 在内存中的存放顺序是 x[0][0] x[0][1] x[0][2] x[1][0] x[1][1] x[1][2] x[0] x[1] 在 C++ 中, 二维数组被看成是一维数组的数组 x 10

二维数组 二维数组的初始化 全部初始化 例 : int x[2][3]={1,3,5,2,6,10}; int x[][3]={1,3,5,2,6,10}; // 注 : 只能省第一维的长度! 分组初始化 例 : int x[2][3]={{1,3,5}, {2,6,10}}; 部分初始化 例 : int x[2][3]={{1}, {2,6}}; 11

二维数组举例 例 : 计算 n 阶 Hilbert 矩阵与全是 1 的向量的乘积 H n = [ h ], ij h ij 1 = i + j 1 ex05_array_hilb.cpp y = Hx = h x ij n n i= 1 j= 1 j 12

多维数组 多维数组的声明 : 类型标识符变量名 [n1][n2][n3]... 多维数组的赋值 引用 初始化与二维数组类似 13

数组作为函数参数 数组中的单个元素作实参 ( 值传递, 传递单个元素 ) 数组名作为参数 ( 地址传递, 传递整个数组 ) 14

数组元素作为参数 数组中的单个元素作实参 与单个变量一样 ( 值传递 ) 例 : void my_swap(int a, int b) { } int t; t = a; a = b; b = t; int main() { int x[2]={1,3}; my_swap(x[0], x[1]); cout <<"x[0]="<<x[0]<<", x[1]="<<x[1]<<endl; } 15

数组名作为参数 数组名作参数 形参和实参都应该是数组名, 类型要一样 形参后面要加中括号 传递的是数组首地址, 也可以看作是传递数组的引用在函数中对形参数组元素的改变会直接影响到实参数组, 即实参与形参代表的是同一个数组! 16

数组作为函数的参数 例 : void my_swap(int a[], int b[], int n) { } 用数组作形参, 一定要加中括号! int t, i; 但可以不指定第一维的大小 for (i=0; i<n; i++) { t=a[i]; a[i]=b[i]; b[i]=t; } int main() { const int n=3; int i, x[n]={1,2,3}, y[n]={2,4,6}; my_swap(x,y,n); } ex05_array_swap.cpp 数组作为形参时一般不指定大小 ( 长度 ), 此时通常需要加一个参数, 用来传递实参数组的大小, 这样函数才能知道实参数组有多少个元素 17

数组举例 例 : 计算矩阵各列的和 #include <iostream> using namespace std; ex05_array_fun.cpp const int m=3, n=4; // 常量, 矩阵维数 void sum_col(double A[][n], double s[]) { int i, j; for(j=0; j<n; j++) s[j]=0.0; // 赋初值 for(j=0; j<n; j++) for(i=0; i<m; i++) s[j] = s[j] + A[i][j]; } int main() 只能省略第一维的大小 { double H[m][n], s[n]; for(int i=0; i<m; i++) for(int j=0; j<n; j++) H[i][j]=1.0/(i+j+1); sum_col(h, s); cout <<"s[0]="<<s[0]<<", s[n-1]="<<s[n-1]<<endl; system("pause"); return 0; } 18

数组作为函数的参数 形参中含数组名的函数定义与调用注意事项 在定义函数时, 须指定数组的大小 ( 常量表达式 ) void sum_col(double A[10][10], double s[10]) 可以省略第 1 维的大小 void sum_col(double A[][10], double s[]) 若数组的大小中含有变量, 则必须是常量 ( 全局 )! const int n=10; void sum_col(double A[][n], double s[]) 函数调用时, 只需输入数组名即可 sum_col(a, s) 19

课后练习 课后练习 ( 自己练习, 见课程主页 ) 20

上机作业 1) 计算均值和标准偏差 : 给定一组数 x, x,, xn, 其均值和标准偏差分别定义为 : 1 1 mean = x1 + x2 + + x n n deviation = n i= 1 ( x mean) i n 1 2 编写程序, 生成 100 个 0~100 之间的随机双精度数, 计算均值和标准偏差 要求 :(1) 先编写两个函数 :mean 和 deviation, 分别计算一个数组的均值 和标准偏差 ;(2) 在主函数中产生随机数组, 通过调用上面两个函数来计算 均值和标准偏差 程序取名 hw05_01.cpp double mean(double x[], int n) double deviation(double x[], int n) 21

上机作业 2) 统计数字出现次数 : 编写程序, 随机生成 100 个 1~9 之间的整数, 输出每个数的出现次数 程序取名 hw05_02.cpp 3) 反转数组 : 编写一个函数, 反转一个数组, 并在 main 函数中生成一个长度为 10 的随机整数数组, 然后输出其反转后的数组 程序取名 hw05_03.cpp void reverse(int x[], int n) 4) 矩阵乘积 : 编写函数, 计算两个 5 阶矩阵的乘积 Z=X*Y 在主函数中 生成两个 5 阶的随机矩阵, 元素为在 0 到 9 之间的正整数, 然后计算它们的 乘积, 并将这三个矩阵输出 程序取名 hw05_04.cpp const int N=5; void matrix_prod(int X[][N], int Y[][N], int Z[][N]) 22

上机作业 5) 找最小值所在位置 : 编写函数, 找出给定数组的最小值所在下标, 并在主函数中输出数组 [34, 91, 85, 59, 29, 93, 56, 12, 88, 72] 的最小数和下标 程序取名 hw05_05.cpp int findmin(int a[], int n) 该函数只需返回最小数所在的下标即可 ( 最小数可以通过下标获取 ) 6) 编写函数 insert, 实现下面功能 :n 个数, 已经从小到大排列 在主函数中输入一个数, 调用 insert 函数, 把输入的数插入到原有数列中, 保持大小顺序, 并将被挤出的最大数 ( 有可能就是被插入数 ) 返回给主函数输出 以第 5 题中的数组为例 程序取名 hw05_06.cpp int insert(int a[], int n, int x) 23

上机作业 7) 储物柜问题学校有 100 个储物柜,100 个学生 开学第一天所有储物柜都是关闭的, 第一个学生到校后将所有储物柜打开 ; 第二个学生到校后, 从第二个储物柜开始, 每隔两个储物柜, 将它们关闭 ; 第三个学生到校后, 从第三个储物柜开始, 每隔三个, 将它们的状态改变, 即开着的关闭, 关闭的打开 依此类推, 直至第 100 个学生到校后将第 100 个储物柜的状态改变 问 : 当所有学生完成这个过程后, 有哪些储物柜是开着的? 编写程序求解该问题, 程序取名 hw05_07.cpp 提示 : 使用一个数组, 保存每个储物柜的状态改变次数, 如果一个储物柜的状态改变次数为奇数, 则该储物柜是开着的 24