C语言程序ppt课件ch6 数组.ppt

上传人:京东小超市 文档编号:5976321 上传时间:2020-08-18 格式:PPT 页数:53 大小:615KB
返回 下载 相关 举报
C语言程序ppt课件ch6 数组.ppt_第1页
第1页 / 共53页
C语言程序ppt课件ch6 数组.ppt_第2页
第2页 / 共53页
亲,该文档总共53页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《C语言程序ppt课件ch6 数组.ppt》由会员分享,可在线阅读,更多相关《C语言程序ppt课件ch6 数组.ppt(53页珍藏版)》请在三一文库上搜索。

1、第六章第六章 戏 待 嘛 屑 场 贱 烹 洼 寥 久 尸 使 里 括 瞪 绎 数 崭 悉 湛 尸 阐 拭 萨 讨 茶 订 芜 起 欺 梨 颠 C 语 言 程 序 p p t 课 件 c h 6 数 组 C 语 言 程 序 p p t 课 件 c h 6 数 组 1 本章要点 1.建立数组的概念; 2.掌握一维数组和二维数组的定义、引用、引用、 存储结构和初始化方法;存储结构和初始化方法; 3.掌握一维字符数组的输入输出;掌握一维字符数组的输入输出; 4.掌握字符串处理函数的使用;掌握字符串处理函数的使用; 5.掌握用数组进行编程的技术。 低 辉 椅 遗 陇 嗽 便 趣 赶 局 精 收 富 锁

2、驴 曾 着 斜 厂 扯 踢 画 慷 锐 挂 丽 局 唬 绣 街 续 援 C 语 言 程 序 p p t 课 件 c h 6 数 组 C 语 言 程 序 p p t 课 件 c h 6 数 组 2 6.1 数组的概念 如何处理一个班学生的学习成绩? 一行文字怎样存储? 一个矩阵怎样存储 ?. 问题的提出:问题的提出: 一组具有相同数据类型的数据的 有序集合 这些数据的特点:1.具有相同的数据类型 2.使用过程中需要保留原始数据 C语言为这些数据提供了一种构造数据类型:数组。 撮 戚 由 织 喇 毅 幸 洱 薯 所 浴 魄 措 韭 托 篱 彤 佰 庶 猪 聘 枚 套 富 坡 轧 裹 釜 腐 农 糙

3、 丽 C 语 言 程 序 p p t 课 件 c h 6 数 组 C 语 言 程 序 p p t 课 件 c h 6 数 组 3 数组是一组有序的、类型相同的数据的集合 ,这些数据被称为数组的元素。 泰 粥 脑 解 洋 窟 木 桃 签 夏 壬 砰 憎 啃 馏 晰 沿 嫩 扔 微 贝 德 钦 酋 漫 狞 肖 技 拼 呜 殿 裹 C 语 言 程 序 p p t 课 件 c h 6 数 组 C 语 言 程 序 p p t 课 件 c h 6 数 组 4 6.2 一维数组 6.2.1 一维数组的定义和引用 1. 定义一维数组的一般方式: 类型说明符 数组名常量表达式 ; 说明: l类型说明符:数组的类

4、型。 l数组名同变量名命名规则相同。 l常量表达式指明数组中元素个数,必须大于零 。可以是数值常量、符号常量和字符常量。 例如: float mark100; char str200; int a10; 瞪 痒 楔 豫 缄 九 槐 睹 枷 彼 娟 惦 坏 睬 喜 掖 职 拱 锑 衬 程 胜 琐 澳 迸 恨 想 攘 护 韶 靶 涵 C 语 言 程 序 p p t 课 件 c h 6 数 组 C 语 言 程 序 p p t 课 件 c h 6 数 组 5 其中:mark、str、a 是数组名。 方括号内是数组的长度。 下标的个数称为数组的维数,mark、str是 一维数组、a是二维数组。 数组的成

5、员称为数组元素。 数组元素的类型称为该数组的基类型。数 组mark的基类型是float,数组str的基类型是 char。 例如:存储学生成绩用实型数组 mark100, 存储一行文字用字符数组 str200, 存储一个4*6的矩阵用二维整型数组 a46。 援 连 症 奢 肋 觉 氮 茨 糕 颗 源 涟 企 亦 毙 局 费 丛 敏 愧 蛙 公 楞 覆 展 烤 刁 搞 坦 僻 迭 酋 C 语 言 程 序 p p t 课 件 c h 6 数 组 C 语 言 程 序 p p t 课 件 c h 6 数 组 6 说明: (1)数组名后是用方括号而不是圆括号。 (2)数组定义中的常量表达式表示数组元素个数

6、。必须 是大于零的常量。 如: int a0,d(6); /*错误*/ int b-8; /*错误*/ int c2+3; /*正确*/ (3) 语言中不允许对数组的大小作动态定义。 数组的说明语句必须在可执行语句之前。 #define N 5 int aN; int n; scanf(“%d” , int an; int n=10,an; 检 腾 滓 泳 好 驶 志 宛 枢 碗 触 辆 磺 卸 搅 诣 绷 雄 字 改 晶 辫 根 颓 匿 捞 鬼 瞎 厩 甲 瓦 左 C 语 言 程 序 p p t 课 件 c h 6 数 组 C 语 言 程 序 p p t 课 件 c h 6 数 组 7 2.

7、 一维数组的引用 数组元素的引用形式: 数组名 下标 如a3 n下标可以是整型常量、整型变量或整型表达式。 如: a3= a0 + ai+1; n下标的值是数组元素的序号,且从0开始,直到n-1. int a10, 说明数组a一共有10个元素,起始值是0。 数组a的10个元素分别是:a0、a1、a9。 n数组的输入输出应采用循环的方法. int a10; for ( i=0; i10; i+ ) scanf(”%d”, 下标指出在 数组中第几 个元素 敏 冠 默 姚 妹 坤 班 沉 嗜 腾 掌 诺 圃 贺 慧 赦 超 豪 爽 优 衣 醉 跨 横 见 钥 漳 砖 荆 阐 夜 务 C 语 言 程

8、序 p p t 课 件 c h 6 数 组 C 语 言 程 序 p p t 课 件 c h 6 数 组 8 数组中的每个元素 在功能上等价于一个一般的变量。 例如:输入100个学 生成绩,并求出总成绩。 l 引用数组元素的注意事项: float m100,sum=0; for ( i=0; i100; i+ ) scanf(”%f”, sum += mi; 数组方式 float x, sum=0; for (i=0; i100; i+) scanf(”%f”, sum += x; 简单变量 x sum 85 m0 m1 m2 m99 sum 82 85 63 78 90 63 8585 851

9、48 82 7950 1482263167950 优点:数据重用 数据有序 弯 煮 犁 视 目 妥 类 秧 蛔 嚎 叹 毋 当 总 缠 刨 黔 颠 夏 恢 寄 羡 善 肃 贩 嘶 笆 度 指 投 锡 仑 C 语 言 程 序 p p t 课 件 c h 6 数 组 C 语 言 程 序 p p t 课 件 c h 6 数 组 9 mark0 mark1 mark2 mark3 . . . mark99 86.5 92.0 77.5 52.0 . . . 94.0 2000H 2004H 2008H 200CH 。 。 。 218CH 引用数组元素时,根据首 地址和下标,自动计算出 该元素的实际地址

10、,取出 该地址的内容进行操作。 如引用 mark2: (1)计算 2000+2*4=2008 (2)取出2008的内容 l下标与地址的关系 为下标运算符, 数组 名、数组元素是两种不同性 质的数据。 数组名是数组的首地址 ,是一个地址常量。 数组元素则是数值。 挟 缀 疟 蚌 烩 翱 沫 插 慕 妙 狗 犬 奏 擞 丧 锌 源 邢 琅 耽 搁 准 令 语 盯 吞 妮 秸 篷 碱 梦 悍 C 语 言 程 序 p p t 课 件 c h 6 数 组 C 语 言 程 序 p p t 课 件 c h 6 数 组 10 6.2.2 一维数组的初始化 在数组定义时为数组元素赋初值称为数组初始化在数组定义时

11、为数组元素赋初值称为数组初始化. . 方法:将初值依次写在花括号 内。 如: int a5= 2 , 4 , 6 , 8 , 10 ; 存储形式: 存储单元 俞 谰 甲 将 短 韧 辜 摊 旭 沮 嚼 泻 夜 衷 尘 沛 溺 犁 雷 呢 粟 讥 斌 几 诞 佰 崔 哉 爷 娄 申 梆 C 语 言 程 序 p p t 课 件 c h 6 数 组 C 语 言 程 序 p p t 课 件 c h 6 数 组 11 (1)给数组中部分元素赋初值,其他元素按零值处理 。 如: int a9=1,2; 则 a0= 1, a1= 2, a2a8值全为0。 (2) 对数组元素全部赋值可以不指定长度。 int

12、a=0,1,2,3,5 ; 等价于:int a5=0,1,2,3,5 ; (4)初值的个数不能超过数组总元素的个数。 int a3= 1, 2,3, 4 ; 语法错! 说明: (3)对数组中间元素赋值必须指明位置。 int a5= , , 2,3, 4 ; /*对第3-5个元素赋初值*/ 泽 中 愈 畏 介 珍 辫 裹 浙 砾 荐 瑞 羊 痈 刺 嘱 翘 蛋 皂 境 块 涣 统 奴 晕 戴 鲸 泞 含 盛 残 打 C 语 言 程 序 p p t 课 件 c h 6 数 组 C 语 言 程 序 p p t 课 件 c h 6 数 组 12 数组元素在程序中赋值数组元素在程序中赋值 利用输入函数

13、main() char as26; int i ; for(i=0; i26; i+) scanf(%c, . 利用赋值语句 main() char as26,ch; for(ch=A;ch=Z;ch+) asch-A=ch; . 孝 凑 扫 箔 酱 圃 群 窜 介 杰 茎 叛 斋 躁 德 掉 嗜 陪 雏 蔑 咙 前 凝 魁 挨 思 段 蔫 泌 裳 逗 作 C 语 言 程 序 p p t 课 件 c h 6 数 组 C 语 言 程 序 p p t 课 件 c h 6 数 组 13 6.2.3 6.2.3 一维数组应用举例一维数组应用举例 例1 从键盘上输入10个实型数存入数组,然 后按输入顺序

14、的逆序输出这10个数。 main() float a10; int i; for(i=0 ; i=0 ; i-) printf(“%10.2f”,ai); 赤 映 颓 泼 幌 改 履 柞 眺 汐 孙 贪 躁 柑 禁 石 鬃 绸 巢 嘿 媒 总 画 极 揉 戏 皿 环 斟 机 珐 绷 C 语 言 程 序 p p t 课 件 c h 6 数 组 C 语 言 程 序 p p t 课 件 c h 6 数 组 14 例2 从键盘上输入10个数,求出其中最大值并输出。 main() int a10,i,max; for(i=0 ; i10 ; i+) scanf(“%d”, max=a0; for(i=0

15、 ; imax) max=ai; printf(“max=%dn”,max); 算法分析:采用打擂台的方法,先把10个数存在数组中,任意指 定某数为擂主,然后擂主依次与其他数比较,若某数大于擂主, 则该数为擂主。循环结束,max中一定是最大的数。 指定 第1个 元素 为擂 主 靴 匡 画 矣 时 赡 薛 娱 毛 堰 渡 诗 斤 月 咏 琅 恨 讯 屯 形 泄 凭 棍 眶 蜒 篓 姑 菲 炕 乃 剐 擅 C 语 言 程 序 p p t 课 件 c h 6 数 组 C 语 言 程 序 p p t 课 件 c h 6 数 组 15 例3从键盘上输入6个数存入数组中,再按输入顺序的逆序 存放在该数组中

16、并输出。 main() int a6,i,j,k,t; for(i=0 ; i6 ; i+) scanf(“%d”, k=6/2-1; for(i=0 ; i=k ; i+) j=6-i-1; t=aj; aj=ai; ai=t; for(i=0 ; i6 ; i+) printf(“%3d”,ai); 算法分析:采用循环设计。逆序操作可总结为: ai与aj进行交换,其中i=0,1,n/2-1, j=n-i-1 程序运行演示 3 4 1 5 6 2 a0 a1 a2 a3 a4a5 畏 闯 皋 薄 宦 姻 依 仪 痢 哪 牙 钓 檬 阉 置 航 瘸 毗 写 什 锰 萧 暮 纽 廓 岸 赘 攀

17、巢 剃 凶 谗 C 语 言 程 序 p p t 课 件 c h 6 数 组 C 语 言 程 序 p p t 课 件 c h 6 数 组 16 例4 用冒泡法对数据进行由小到大排序。 方法:将两个相邻数比较,小的调到前头。采用两重循环。 9 8 8 8 8 8 5 5 5 5 4 4 4 2 2 0 8 9 5 5 5 5 8 4 4 4 5 2 2 4 0 2 5 5 9 4 4 4 4 8 2 2 2 5 0 0 4 4 4 4 4 9 2 2 2 2 8 0 0 0 5 5 5 5 2 2 2 2 9 0 0 0 0 8 8 8 8 8 8 8 0 0 0 0 0 9 9 9 9 9 9

18、9 9 9 9 9 由以上可推知:6 个数要比较5趟 第一趟中要进行两两比较5次 第二趟中比较 4次 若 有n个数,则要进行n-1趟比较 第 i趟比较中要进行n-i次两两比较。 凑 贿 向 欠 搅 幽 殴 来 躁 瘪 荆 悸 诗 盂 敏 觉 荔 嚣 最 涸 年 虞 警 语 涎 鹰 懦 屁 锅 搬 贮 褪 C 语 言 程 序 p p t 课 件 c h 6 数 组 C 语 言 程 序 p p t 课 件 c h 6 数 组 17 #define N 6 main( ) int aN, i, j, t ; for( i=0; iN; i+) scanf(“%d”, for( i=0; iN-1;

19、i+ ) for( j=0; jaj) t=aj-1; aj-1= aj;aj= t ; printf(“The sorted numbers: n”); for( i=0; iN; i+) printf(“%d ”, ai); n个数比较n-1趟 第i趟比较n-i次 程序运行演示 座 诌 猛 工 南 咀 掂 淄 甫 腰 熬 镜 尖 衰 易 怯 彼 誓 贩 揪 火 纽 妖 罩 障 脉 甸 拎 设 娟 伪 而 C 语 言 程 序 p p t 课 件 c h 6 数 组 C 语 言 程 序 p p t 课 件 c h 6 数 组 18 冒泡排序的缺陷:在比较交换的过程中大的数不能 一次到位,效率低

20、。 例6 选择法排序。 选择排序法的基本思想: 以冒泡排序法为基础,在两两比较后并不马上进行 交换,而是在找到最小的数之后,记住最小数的位置 (数组中的下标),待一轮比较完毕后,再将最小的 数一次交换到位。 灶 裴 百 键 桃 吮 辖 靠 维 疵 脆 栏 褒 蜕 又 奴 速 耽 粮 屏 废 焚 掣 永 浚 陛 搽 蟹 兰 剩 音 钞 C 语 言 程 序 p p t 课 件 c h 6 数 组 C 语 言 程 序 p p t 课 件 c h 6 数 组 19 3 6 1 9 4 1 6 3 9 4 1 3 6 9 4 1 3 4 9 6 1 3 4 6 9 选择法排序. 问题 将 3、6、1、9

21、、4 从小到大排列。 自 帽 堵 有 畦 粉 马 堕 城 柴 鹏 濒 硝 钳 且 眉 喀 妊 武 盯 笛 簿 炔 乌 吊 账 讯 仟 刨 抗 捂 豫 C 语 言 程 序 p p t 课 件 c h 6 数 组 C 语 言 程 序 p p t 课 件 c h 6 数 组 20 选择排序算法 若有N个数,则需要进行N-1轮排序处理。 第1轮排序从1N个数中找出最小的数,然后将它 与第1个数交换。第1个数则是最小的数。 第2轮排序从2N个数中找出最小的数,然后将它 与第2个数交换。第2个数则是次小的数。 经过 N-1 轮处理,完成全部N个数排序。 编程时使用二重循环。外面的大循环控制进行N-1 轮排

22、序,内循环找出第 i 轮的最小值。 货 溉 皋 懊 工 蹋 绣 毁 叠 搬 牵 掳 滦 职 仅 浩 牵 便 至 劳 又 鸽 淖 豁 缄 甸 谭 鹿 力 帚 损 崩 C 语 言 程 序 p p t 课 件 c h 6 数 组 C 语 言 程 序 p p t 课 件 c h 6 数 组 21 #define N 5 main( ) int aN ,i,j,k,t; printf(Input numbers:n); for( i=0; iN; i+) scanf(%d, for( i=0;iN-1;i+ ) k=i; for(j=i+1;jaj) k=j; if(k!=i) t=ai; ai=ak;

23、ak=t; printf(The sorted numbers: n); for( i=0; iN; i+) printf(%d , ai); 程序运行演示 峡 离 俗 申 窃 希 羞 鼠 腐 颜 挝 寺 崎 祸 库 膝 朋 安 断 存 堵 钒 潦 凌 扩 醚 姿 萍 搔 棍 间 眶 C 语 言 程 序 p p t 课 件 c h 6 数 组 C 语 言 程 序 p p t 课 件 c h 6 数 组 22 程序运行演示 main( ) int n, m , t, a10=3,4,7,2,5,0,12,54,23,53; for (n=0;n=9;n+) for (m=n+1;mam) min

24、=an; an=am;am=min; for (n=0;n=9;n+) printf(%3d,an); 唯 违 囚 种 赔 愿 譬 朗 傅 妓 峭 哼 袖 一 疫 香 辛 陪 绝 养 嫩 汕 趾 骏 宁 伊 状 眉 歇 柜 搬 恬 C 语 言 程 序 p p t 课 件 c h 6 数 组 C 语 言 程 序 p p t 课 件 c h 6 数 组 23 定义二维数组的一般方式: 类型说明符 数组名常量表达式1常量表达式2; 例如 int a33 存储形式: 二维数组在内存中按行的顺序存放,即先存放 第一行的元素,再存放第二行的元素。 例如 float a34; 6.3 二维数组 6.3.1

25、二维数组的定义 第一个下标可 能取值的个数 第二个下标可 能取值的个数 顽 螟 侍 湾 鲍 廊 家 垣 窖 募 富 宝 戒 譬 捍 辽 旨 棱 盅 殆 捐 敏 箔 砖 惮 顷 釜 颂 松 腮 攒 蔑 C 语 言 程 序 p p t 课 件 c h 6 数 组 C 语 言 程 序 p p t 课 件 c h 6 数 组 24 说明:二维数组除了维数比一维数组多一维外, 其它性质与一维数组全部类似。 下面写法是否正确? int a03; 用于定义数组长度的常量表达式的值必须 是大于0的正整数。 int i=3 , j=4 ; int aij ; 定义数组元素的个数必须使用常量表达式, 而不能使用变

26、量。 庶 垄 吹 额 乐 账 携 妆 吞 窄 绒 格 鳃 耙 员 卞 惠 俯 数 左 骤 枯 抖 视 寥 干 肆 涪 乌 勘 杠 苑 C 语 言 程 序 p p t 课 件 c h 6 数 组 C 语 言 程 序 p p t 课 件 c h 6 数 组 25 6.3.2 二维数组的引用 二维数组的引用与引用一维数组元素一样,也用 下标法引用二维数组元素。 二维数组元素表示形式:数组名下标1下标2 下标1和下标2是整型常量、整型变量或整型表达 式。其编号是从0开始的。 例如:若有 int a2*53*4, i=15; 则使用 a3*30, a1i-5都是合法的。 说明:数组名a代表的是数组a在内

27、存中的首地址, 因此,可以用数组名a来代表数组元 素a00的 地址。数组名是常量,不可对它赋值。 下标不要越界下标不要越界 诺 动 蒸 溺 芒 恶 褐 伺 惶 诚 仲 冰 脸 溅 琼 炭 旬 代 残 钦 犹 锗 访 统 浴 隅 粕 圾 范 顽 扑 多 C 语 言 程 序 p p t 课 件 c h 6 数 组 C 语 言 程 序 p p t 课 件 c h 6 数 组 26 一、二维数组的初始化 1. 分行给二维数组赋初值。 如:int a23= 2,3,1,1,2,3; 2. 将所有数据写在一个 内,按顺序赋值。 即按数组元素在内存中排列的顺序赋初值。 int a23=2,3,1,1,2,3

28、; 6.3.3 6.3.3 二维数组的初始化和输入输出 硷 碍 络 疥 乙 窍 事 桅 镰 抵 喳 稳 也 晤 务 兹 己 苛 沮 桶 霜 樱 殃 猴 逻 蝗 钾 瘟 沧 汉 淄 阿 C 语 言 程 序 p p t 课 件 c h 6 数 组 C 语 言 程 序 p p t 课 件 c h 6 数 组 27 3. 对部分元素赋值 如: int a33=1,0,1,0,0,1; 相当矩阵: 4. 如果对数组全部元素赋初值,第一个下标可省略,但第二 个下标不可省略。 如: a34=0,1,3,1,2,1,0,2,1,1,2,0; 可写成 a 4=0,1,3,1,2,1,0,2,1,1,2,0; i

29、nt a33=1, ,0,0,1; 相当矩阵: int a23=5,6,7,8;int a23=5,6,7,8; 例 得到的数组为: 5 6 0 7 8 0 得到的数组为: 5 6 7 8 0 0 暖 放 着 田 奎 宇 叉 迁 曾 惊 浦 点 膜 魂 酵 繁 丑 尼 求 姚 痔 崩 跳 嚎 妆 渐 钓 蔓 拔 御 调 明 C 语 言 程 序 p p t 课 件 c h 6 数 组 C 语 言 程 序 p p t 课 件 c h 6 数 组 28 1. 二维数组的输入 int a23,i,j; for( i=0; i2; i+) for( j=0; j3; j+) scanf(“%d”, 2.

30、 二维数组的输出 int a23,i,j; for( i=0; i2; i+) for( j=0; j3; j+) printf(“%5d”, aij); 二、二维数组的输入、输出 箱 统 滚 盲 辰 氮 澎 白 晰 席 淡 辈 涝 诗 蚌 榨 知 琵 辅 畅 司 逐 温 赖 录 繁 道 限 嗽 吴 鼓 卑 C 语 言 程 序 p p t 课 件 c h 6 数 组 C 语 言 程 序 p p t 课 件 c h 6 数 组 29 6.3.4 二维数组程序举例 例1 将一个矩阵a 23转置存到另一个矩阵b 32中。 分析:用数组a、b分别代表矩阵a、b; a 矩阵的行数必须要等于b 矩阵的列数

31、。 执行:bji=aij; 即可完成转换。 涉及到两个下标的,一般用两重循环。 求矩阵转置问题也可以在矩阵本身进行,但应 是方阵。 京 凳 海 距 毅 马 恫 捆 邓 摄 顽 攒 剪 歼 寂 铱 喉 锣 裹 质 孕 忌 狱 孟 点 脐 屠 鳞 废 得 啼 疚 C 语 言 程 序 p p t 课 件 c h 6 数 组 C 语 言 程 序 p p t 课 件 c h 6 数 组 30 main( ) int a23=1,2,3,4,5,6; int b32, i , j; printf(“array a: n”); for( i=0; i2; i+) for( j=0; j3; j+) prin

32、tf(“%5d”, aij); bji=aij; printf(“n”); printf(“array b: n”); for(i=0; i3; i+) for( j=0; j2; j+) printf(“%5d”,bij); printf(“n”); 运行结果如下: array a: 1 2 3 4 5 6 array b: 1 4 2 5 3 6 噎 怕 替 寻 贸 系 廖 卫 快 咆 效 蛆 攫 面 炎 檀 淀 擎 镰 吓 悠 辉 诺 枫 挽 主 烽 赎 瀑 醉 邯 槛 C 语 言 程 序 p p t 课 件 c h 6 数 组 C 语 言 程 序 p p t 课 件 c h 6 数 组

33、 31 例2求方阵A4*4的转置阵,并将该转置阵输出(限定在一个数组进行) main( ) int a44,i,j,t; printf(array a: n); for( i=0; i4; i+) for( j=0; j4; j+) scanf(%d, /*输入*/ for(i=0;i4-1;i+) /*转置*/ for(j=i+1;j4;j+) t=aij;aij=aji;aji=t; printf(“rotated a: n); for(i=0; i4; i+) for( j=0; j4; j+) printf(%4d, aij); /* 输出 */ printf(n); 程序运行情况:

34、array a: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 14rotated a: 15 9 13 26 10 14 37 11 15 44 8 12 16 转置部分还可改写如下: for(i=1;i4;i+) for(j=0;ji;j+) t=aij;aij=aji;aji=t; 二维数组输入 伦 槽 寓 庸 碑 倘 悉 刊 赎 驻 褥 泵 峨 凤 恩 店 趁 阐 嫡 袖 鱼 婴 哺 孜 割 诽 郴 歼 陪 陋 学 传 C 语 言 程 序 p p t 课 件 c h 6 数 组 C 语 言 程 序 p p t 课 件 c h 6 数 组 32 程序: m

35、ain( ) int i, j, row=0, colum=0, max; int a34=1,2,3,4,9,7,4,6,-1,2,0,8; max=a00; for( i=0; i=2; i+) for(j=0; jmax) max=aij; row=i; colum=j; printf(“max=%d,row=%d,colum=%dn”,max, row,colum); 运行结果为: max=9,row=1, colum=0 例3 求34矩阵中最大元素的值及其所在行和列号。 傍 饺 稚 矮 坠 吊 轧 荐 朽 煽 踢 穗 睬 朗 斥 语 顷 艾 灾 砰 楔 庙 登 驮 恐 籍 陵 苛 褂

36、 菊 爸 被 C 语 言 程 序 p p t 课 件 c h 6 数 组 C 语 言 程 序 p p t 课 件 c h 6 数 组 33 将程序修改完整 main( ) int a,i,j,sum; for( i=0; i ; i+) for( j=0; j ; j+) scanf(%d, printf(%4d, ); 例4编写求整型矩阵A3*3的副对角线元素之积的程序 。 烤 辑 妆 椎 叼 妮 夫 兽 黍 毖 挎 宽 苦 用 庚 胃 背 令 蹿 拼 屁 柏 绘 赌 鱼 赢 难 虞 韵 徒 价 隘 C 语 言 程 序 p p t 课 件 c h 6 数 组 C 语 言 程 序 p p t

37、课 件 c h 6 数 组 34 6.4 字符数组 6.4.1 一维字符数组的定义 用来存放字符数据的数组是字符数组。 C语言用字 符数组存放字符串,字符数组中的各元素依次存放字符 串的各字符。 格式:char 数组名常量表达式 强调:字符串实际占有单元的数量等于字符串长度+1。 定义时应注意考虑元素总个数应比实际长度多1。 例如:char c6, b10; C 数组具有6个元素,可以存放长度等于或小于5 的字符串。 掣 驱 令 匹 火 站 碗 呸 男 孟 弛 鸵 缄 在 雍 赠 柴 模 挡 咋 娥 亦 谱 袁 吱 响 狄 餐 魔 宿 赠 叮 C 语 言 程 序 p p t 课 件 c h 6

38、 数 组 C 语 言 程 序 p p t 课 件 c h 6 数 组 35 1.用单个字符对字符数组初始化 例如:char ch6=C,H,I,N,A, 0; 把5个字符分别赋给ch0到c4. 在内存中存放情况: 6.4.2 一维字符数组的初始化 说明: (1)初值的个数不能超过数组元素的个数,否则语法错 (2) 初值的个数小于数组长度,系统自动添入结束符 0 (3) 初值的个数与数组元素相等,定义时可省略长度 (4) 因字符串常量自动加0,因此常人为地在字符数组后加 一个0。 CHINA0 c0 c1 c2 c3 c4 c5 串长=5 铡 后 幌 目 粕 椒 违 皱 谊 呻 陋 杏 悉 魔

39、募 档 孙 驼 讥 烟 仆 广 奉 掏 代 袭 济 起 镐 彻 兹 泻 C 语 言 程 序 p p t 课 件 c h 6 数 组 C 语 言 程 序 p p t 课 件 c h 6 数 组 36 2. 用字符串对字符数组初始化: char ch6=CHINA; char ch6=CHINA; /* 省略 */ char ch =CHINA; /* 省略长度值 */ char d12=“How are you” 与char d=H,o.w, ,a,r,e, ,y,o,u,0;等价 猾 气 计 李 直 哈 药 近 激 衷 宁 越 霍 沮 种 颅 庶 困 宏 躲 汽 番 嫡 转 精 怔 潞 谓 犯

40、 扇 彪 遗 C 语 言 程 序 p p t 课 件 c h 6 数 组 C 语 言 程 序 p p t 课 件 c h 6 数 组 37 例如: char a6=g,r,e,e,n; char b5=“123”; a2=0; a5=b1; printf(“%cn”,a1); printf(“%s”,a); 6.4.3 6.4.3 一维字符数组的引用一维字符数组的引用 酞 襟 嘶 逃 庸 仔 须 朵 痈 柜 裳 誓 釜 摇 靛 疏 挫 隶 斧 俩 榔 泊 环 们 橱 碾 啤 伪 咙 首 棱 蜡 C 语 言 程 序 p p t 课 件 c h 6 数 组 C 语 言 程 序 p p t 课 件

41、c h 6 数 组 38 main() int i; char a3; for (i=0;i3;i+) scanf(%c, for (i=0;i3;i+) printf(%c,ai); printf(n); 输入数据顺序: dos 输出数据顺序: dos 6.4.4 6.4.4 字符数组的字符数组的输入与输出输入与输出 1.单字符输入输出 (用格式符c或字符输入函数) char a3; for (i=0;i3;i+) ai=getchar(); for (i=0;i3;i+) putchar(ai); printf(n); 欠 痢 粳 年 挟 露 滤 袋 忍 源 阁 釜 备 确 琉 算 镑 趣

42、 邢 丙 梨 智 埔 妄 毅 著 喜 珍 笨 脂 墓 近 C 语 言 程 序 p p t 课 件 c h 6 数 组 C 语 言 程 序 p p t 课 件 c h 6 数 组 39 char a7; scanf(%s,a); 2. 字符串整体或部分输入输出 (用格式符s) -输入输出项必须是以字符串的地址形式出现; 也可以是字符串常量: printf ( %sn ,abcd ); -只能输入不包括空格、t和n的字符串; -若要输入空格,用gets函数; -数组名前不加 scanf(%s,a); printf(%sn,a); 输入:How are you 输出: How 空格、跳格和回 车是输

43、入数据的 结束标志. 络 赣 薛 东 龙 咸 噪 蒲 内 挎 隅 枕 拄 拔 坯 怜 俐 朱 汲 奠 篷 念 课 蟹 紊 撒 淤 炽 星 弃 侧 切 C 语 言 程 序 p p t 课 件 c h 6 数 组 C 语 言 程 序 p p t 课 件 c h 6 数 组 40 n 用s输出字符串时,从输出项提供的地址开始输 出,直到遇字符串结束符0 为止。 n 若字符串长度与数组定义长度相等,则字符串结束 标志无法存储,输出字符串后继续输出后续存储单元 内容,直到遇到结束符0为止。 若:char b3= xyz,c=H,a10= abcd072; printf(b=%sn,b); printf(

44、a=%sn,a); printf(%cn,a2); 输出: b=xyzHabcd a=abcd c 妮 馋 宴 缚 轮 罚 躬 牢 茶 酞 加 红 痈 尊 沙 万 骸 界 丽 竣 富 辆 困 洛 拽 咏 滞 符 扛 百 慰 斯 C 语 言 程 序 p p t 课 件 c h 6 数 组 C 语 言 程 序 p p t 课 件 c h 6 数 组 41 C函数库中提供一些用来处理字符串的函数: puts 输出字符串 gets 输入字符串 (使用时注意前边加: #include ) strcat 字符串连接 strcpy 字符串复制 strcmp 字符串比较 strlen 字符串长度 strlwr

45、 将字符串中的大写字符转换为小写字符 strupr 将字符串中的小写字符转换为大写字符 (使用时注意前边加: #include ) 6.4.5 6.4.5 字符串处理函数 芽 畏 梧 舶 锯 婴 躇 里 瞎 哉 际 噪 忻 颈 屿 呼 潜 猫 嫉 志 颁 展 钱 疑 冶 行 拉 张 利 榔 剪 褐 C 语 言 程 序 p p t 课 件 c h 6 数 组 C 语 言 程 序 p p t 课 件 c h 6 数 组 42 (1) puts(字符数组) 将一个字符串输出到终端并换行 。 (2) gets(字符数组) 输入一个字符串到字符数组,该 字符数组的起始地址为该函数值。 可以输入带空格的字符串,用scanf的%s格式不行. main() char str =book; puts(str); 其作用与printf(“%s”,str) 等效 main() char str12; gets(str); puts(str); 输入:How are you 输出:How are you 窿 流 驴 闹 甲 刨 棉 膏 镍 间 足 滤 供 事 姓 艾 履 匈 所 仔 史 佛 橇 娱 捂 幽 朴 氢 宁 嗣 拾 午 C 语 言 程

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1