960-C语言程序设计教程--数组.ppt

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

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

1、6.1 6.1 一维数组一维数组 6.2 6.2 二维数组二维数组 6.3 6.3 数组的应用数组的应用 6.4 6.4 字符数组与字符字符数组与字符 串串 6.5 6.5 数组作为函数的数组作为函数的 参数参数 6.6 6.6 程序举例程序举例 第第 6 6 章章 数组数组 C C语言程序设计教程语言程序设计教程 枯 牢 颠 洋 摸 疼 衡 畅 逃 誓 讹 望 怜 魏 交 柿 滔 剑 奉 寨 撅 镣 寻 爆 住 衰 烙 抡 运 秉 诱 懦 9 6 0 - C 语 言 程 序 设 计 教 程 - - 数 组 9 6 0 - C 语 言 程 序 设 计 教 程 - - 数 组 Date 1 第7

2、章 数组 1.数组的引入 在前面的程序设计中,所涉及和处理的数 据都非常简单,对这些数据采用C语言的基本类型 (整型、实型、字符型)来描述就行,但在实际应 用中,需要处理的数据往往是复杂多样的。 问题:输入中南大学2003级4500名学生的C 语言成绩,按成绩从高分到低分排序,输出平均成 绩及高于平均成绩的学生成绩。 如何编程呢? 语言提供了用户自定义数据的描述方法 ,即构造类型:由若干基本类型数据按一定的规则 构成复杂数据对象。如数组类型。构造数据类型的 引入,使我们能较方便地解决上面的问题。 芍 幕 案 贫 矗 娜 畔 腑 荔 子 龟 泊 全 催 渡 赶 航 撩 聋 蛊 俞 瓣 碾 擒 掏

3、 颗 啃 恬 媒 术 歹 测 9 6 0 - C 语 言 程 序 设 计 教 程 - - 数 组 9 6 0 - C 语 言 程 序 设 计 教 程 - - 数 组 Date 2 第7章 数组 2.数组的概念 数组:具有相同类型的数据组成的序列,是 有序集合。 数组中的每一个数据称 数组元素 数组分量 下标变量 数组元素数组元素 由其所在的位置序号由其所在的位置序号(称数组元素的下标)(称数组元素的下标)来区分来区分 。 用数组名与下标用数组名与下标 可以用统一的方式来处理数组中的所有元素可以用统一的方式来处理数组中的所有元素 , 从而方便的实现处理一批具有相同性质数据的问题。从而方便的实现处

4、理一批具有相同性质数据的问题。 注意:数组元素有序不是指元素大小顺序 躯 鸣 寂 番 浙 颖 坤 降 惧 尽 就 交 岭 币 岸 式 胖 股 灌 叹 滩 桑 院 啃 芜 漓 咏 谦 傻 难 巨 淬 9 6 0 - C 语 言 程 序 设 计 教 程 - - 数 组 9 6 0 - C 语 言 程 序 设 计 教 程 - - 数 组 Date 3 第7章 数组 6.1 一维数组 6.1.1 一维数组的定义 一维数组:只有一个下标的数组。 定义格式 : 存储类别 类型标识符 数组名元素个数; 说明: 1.存储类别:说明数组的存储属性,即数组的作用域与生成期 ,可以是静态型(static),自动型(

5、auto)及外部型(extern)。 当使用auto型时可以省略。 2.类型标识符:数组元素的类型。 3.数组名的命名规则:与标识符的命名规则相同。 4.数组“元素个数”:即数组长度,只能是一个整型常量表达式。 可以是符号常量。 校 抖 憋 耸 勺 嗽 渭 隧 奈 这 鳖 磋 琴 赢 焕 箕 煽 中 擅 囚 消 雾 寻 吵 瑞 枯 置 漱 耘 墒 钟 到 9 6 0 - C 语 言 程 序 设 计 教 程 - - 数 组 9 6 0 - C 语 言 程 序 设 计 教 程 - - 数 组 Date 4 第7章 数组 例:例: int a5; int a5; 定义了一个自动型整型数组: 数组的元

6、素为整 型;数组名为a;元素个数为5; 下面是合法的数组定义: char str20; /* 定义一个有20个元素的字符 型数组str */ float score8;/* 定义一个有8个元素的浮点 型数组score */ #define N 5 long dataN; /* 定义一个有5个元素的长整型 数组data */ short z4*N; /* 定义了一个有20个元素的短 整型数组z */ 其中的数组长度使用的是符号常量 下面的定义是非法的: int n=10; char cn; /*数组长度不能使用变量 */ 会 运 急 矾 鹰 鸳 布 丈 泥 攀 州 焙 庶 歉 彤 崭 兴 沫 管

7、 邮 识 亡 仑 折 麓 栈 般 竭 瘦 下 区 梨 9 6 0 - C 语 言 程 序 设 计 教 程 - - 数 组 9 6 0 - C 语 言 程 序 设 计 教 程 - - 数 组 Date 5 第7章 数组 例:试判断下列数组定义是否合法例:试判断下列数组定义是否合法: int student35; char name20; float score35; #define student 35 float n_studentstudent; int score_studentstudent*3; int person(10); int n=10, an; 工 贼 浸 湾 诞 陌 独 废

8、 锄 维 傅 区 驴 辣 硝 缴 按 属 梭 佛 自 摸 棵 户 症 颐 痒 菠 笼 愧 钦 斩 9 6 0 - C 语 言 程 序 设 计 教 程 - - 数 组 9 6 0 - C 语 言 程 序 设 计 教 程 - - 数 组 Date 6 第7章 数组 6.1.2 6.1.2 数组元素的引用数组元素的引用 定义了数组以后,就可使用它了。 但不能利用数组名来整体引用一个数组,只能单个 的使用数组元素 数组元素的描述 : 由 数组名加方括号中的下标 组成,即: 数组名下标 下 标:数组元素在数组中的顺序号,使用整 序型表达式。 取值范围:从0到元素个数-1-1。 C语言不对下标越 界作语法

9、检查。 若有定义: int a5; 则数组a的元素分别为: a0、a1、a2、a3、 a4;但a5不是。 每个元素都可作为一个整型变量来使用。 如: a0=5;a3=a1+4;aD-B=3; scanf(“%d”, a2.5=60; ? 毙 逐 腥 汝 哟 植 铬 辙 纤 影 取 腑 幸 濒 头 葵 呛 镀 掐 模 拍 叹 锡 纠 缩 智 闸 裕 柬 奔 裤 曹 9 6 0 - C 语 言 程 序 设 计 教 程 - - 数 组 9 6 0 - C 语 言 程 序 设 计 教 程 - - 数 组 Date 7 第7章 数组 #include main() int n,a15; for(n=0;

10、n=0;n-) printf(“%4d”,an); 输入:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 输出:15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 根据数组的有序性,往往使用循环语句来对数组进行处理根据数组的有序性,往往使用循环语句来对数组进行处理 ,用,用循环控制变量作为数组下标循环控制变量作为数组下标,从而可以以统一的方式来访,从而可以以统一的方式来访 问数组元素问数组元素。 例例6.1 6.1 从键盘输入从键盘输入1515个整数,再反序输出。个整数,再反序输出。 问:不用数组能否完成,如何实现?假设是1000个数据呢? 注意注意

11、: 1. 循环控制变量的初值、终值 及控制条件。 2.不能整体输入/出数组 如:printf(“%d”,a); 学会如何对数组进行输入输出 楔 尔 始 铣 西 弟 腾 偏 绷 戈 丙 泉 弟 落 卤 荷 晒 督 缚 类 皋 泅 仙 硷 两 址 蒋 否 楼 校 穴 唾 9 6 0 - C 语 言 程 序 设 计 教 程 - - 数 组 9 6 0 - C 语 言 程 序 设 计 教 程 - - 数 组 Date 8 第7章 数组 6.1.3 6.1.3 一维数组的存储结构与初始化一维数组的存储结构与初始化 1. 1.一维数组的存储结构一维数组的存储结构 数组变量 在内存中分配一片连续的存储单元

12、,数组元素按数组下标从小到大连续存放。a代表首 地址(数组起始地址),每个元素字节数相同,因此,根 据数组元素序号可以求得数组各元素在内存的地址 ,并可对数组元素进行随机存取。 数组元素地址=数组首地址+元素下标 *sizeof(数组类型) 例 int a5; 设a的首地址为1000,数组a存 储示意图如右图所示 1006 a0 a1 a2 a3 a4 内存 1000 a3的地址=1000+32=1006 摧 痕 响 敷 烯 五 迎 效 丙 弦 皋 公 答 觅 岩 焰 小 享 浇 艳 哎 明 遮 我 唁 价 掉 盘 蜡 镍 钾 焙 9 6 0 - C 语 言 程 序 设 计 教 程 - - 数

13、 组 9 6 0 - C 语 言 程 序 设 计 教 程 - - 数 组 Date 9 第7章 数组 2. 2. 一维数组的初始化一维数组的初始化 含义含义:在定义数组的同时,对数组各元素指定初 值。 初始化是 编译阶段完成。 注意注意:用赋值语句或输入语句也可给数组素指定 初值,是在运行时完成。 初始化数组格式: static =; 或 = ; 说明: 是用逗号分隔的数组元素的初 始值(常量)。 中数值的类型必须与一致。 抒 咨 粮 愉 沼 破 踞 笺 价 话 涪 澄 尘 寻 媚 旬 浴 骇 榴 勘 栏 柬 汝 藐 同 痰 现 枯 刃 精 铃 刚 9 6 0 - C 语 言 程 序 设 计

14、教 程 - - 数 组 9 6 0 - C 语 言 程 序 设 计 教 程 - - 数 组 Date 10 第7章 数组 若不对auto数组进行初始化,则其初值是 不可知的。 若一个static或外部数组未进行初始化,则 对数值型数组元素,初值为0,而对字符型数组元 素,初值为空字符0. 对数组初始化的几种方法: 在定义数组时,对全部全部数组元素赋予初值。 例:int a5=0,1,2,3,4; 在定义数组时,对部分数组元素赋予初值。 例:int a5=1,2; 等价 a0=1,a1=2; 其它赋0 对全部数组元素赋初值时,可省数组长度,系统自动确定 。 例:int a =0,1, 2,3,4

15、 ;等价于 int a5=0,1,2,3,4 ; a0 a1 a2 a3 a4 0 1 2 3 4 初始化 弊 娠 絮 邹 唉 话 薪 警 酪 瘟 旭 婪 撰 息 冻 咋 铲 拙 稍 蓑 叔 项 扒 焕 崖 达 蚤 圆 杜 砚 待 娘 9 6 0 - C 语 言 程 序 设 计 教 程 - - 数 组 9 6 0 - C 语 言 程 序 设 计 教 程 - - 数 组 Date 11 第7章 数组 例6.2 数组初始化与未初始化比较 #include main() int i,a5=3,4,5,b5; printf(“narray a is:”) for(i=0;i main( ) int i

16、,j,k, max,min; static int a5; for (i=0;iai) min=ai;k=i; printf(“max:a%d=%d,min:a%d=%d“,j,max,k,min); 例例6.3 6.3 从键盘上输入从键盘上输入5 5个数,输出最大、最小的元素以及个数,输出最大、最小的元素以及 它们的下标它们的下标 若输入: 8 2 312 0 -10 输出为: max:a2=312,min:a4=-10 唐 酗 虾 蕉 容 弊 恤 猪 苞 允 摈 忆 政 艇 赃 钵 丑 侵 婶 俺 岂 捻 垮 娶 缩 钾 碗 岭 弄 与 殴 践 9 6 0 - C 语 言 程 序 设 计

17、教 程 - - 数 组 9 6 0 - C 语 言 程 序 设 计 教 程 - - 数 组 Date 13 第7章 数组 以下程序执行的结果为 _(s5-1.c) #include main() int a=1,2,3,4,i,j,s=0; j=1; for(i=3;i=0;i-) s=s+ai*j; j=j*10; printf(“s=%dn”,s); 教 唉 见 沸 把 剑 挂 骇 首 舍 哗 冈 亦 鞭 庶 批 陆 聊 寸 漠 矩 记 行 仲 母 尼 饲 饭 禾 篙 砸 遥 9 6 0 - C 语 言 程 序 设 计 教 程 - - 数 组 9 6 0 - C 语 言 程 序 设 计 教

18、 程 - - 数 组 Date 14 第7章 数组 以下程序执行的结果为_(s5-2.c) #include main() int a=0,2,5,8,12,15,23,35,60,65; int x=15,i,n=10,m; i=n/2+1; m=n/2; while(m!=0) if (xai) i=i+m/2+1; m=m/2; else break; printf(“place=%d”,i+1); 酌 器 臭 征 残 笺 响 土 淌 灯 吗 护 床 颠 朋 葛 突 燎 栅 能 假 缺 惩 盟 舔 酝 朗 骗 匆 硝 位 坎 9 6 0 - C 语 言 程 序 设 计 教 程 - - 数

19、 组 9 6 0 - C 语 言 程 序 设 计 教 程 - - 数 组 Date 15 第7章 数组 综合练习: 阅读程序,写出结果 #include #define MN 7 int num_list=3,4,5,6,7,8,9; main() int k,j,b,u,w; u=0;w=MN-1; while(u main() int i,j,a33; for(i= 0;i main() int j,k; int a33=1,2,3,4,5,6,7,8,9,b33; for (j=0;j #include main() int i,fib20; fib0=1; fib1=1; for(i=

20、2; i main() float score100,ave,sum=0,x; int i,n=0,count; printf(“Input score:“); scanf(“%f“, while (x=0 /*输出高于平均 分的成绩*/ count+; /*统计高于平均分 成绩的人数*/ if (count%5= =0) printf(“n”); /*每行输出成绩达5个 时换行*/ printf(“count=%d n“,count); /*输出高于平均 分的人数*/ 诀 潦 皆 绿 挠 杆 腊 炔 勋 吃 梭 负 茄 联 饥 耪 忍 皮 做 艘 控 魔 丝 窒 虚 帽 宽 赏 瘫 翌 绰

21、段 9 6 0 - C 语 言 程 序 设 计 教 程 - - 数 组 9 6 0 - C 语 言 程 序 设 计 教 程 - - 数 组 Date 32 第7章 数组 3. 3. 利用数组排序利用数组排序 例例6.9 6.9 从键盘上输入从键盘上输入1010个整数,用选择法个整数,用选择法 将其按由小到大的顺序排列并输出将其按由小到大的顺序排列并输出 基本思想: (1)从第个位置到第个位置中选择出 最小的一个与第 个位置的数交换。 (2)从第个位置到第个位置中选择出最小的一个与第 个位置的数交换。 (9) 从第个位置到第个位置中选择出最小的一个与第 个位置的数交换。 晶 整 夺 走 所 娜

22、冗 虐 拴 记 琢 坎 窑 当 居 擞 害 界 柠 辐 池 寺 继 缕 蓉 点 爸 政 随 传 祈 桨 9 6 0 - C 语 言 程 序 设 计 教 程 - - 数 组 9 6 0 - C 语 言 程 序 设 计 教 程 - - 数 组 Date 33 第7章 数组 5 13 3 9 32 22 5 13 3 9 32 22 8 1 23 218 1 23 21 1 1 13 13 5 5(3) 9 32 22 (3) 9 32 22 8 8 3 3(1) 23 21(1) 23 21 1 31 3 13 9 32 22 13 9 32 22 8 8 5 5 23 21 23 21 1 3

23、51 3 5 9 32 22 9 32 22 8 13 23 218 13 23 21 1 3 5 81 3 5 8 32 22 32 22 9 13 23 219 13 23 21 1 1 3 5 8 9 3 5 8 9 22 32 22 32 13 23 2113 23 21 1 3 5 8 9 131 3 5 8 9 13 32 32 22 23 2122 23 21 1 3 5 8 9 13 211 3 5 8 9 13 21 22 23 32 22 23 32 1 3 5 8 9 13 21 1 3 5 8 9 13 21 2222 23 32 23 32 1 3 5 8 9 13

24、21 1 3 5 8 9 13 21 22 2322 23 32 32 输入数据:输入数据: 5 13 3 9 32 22 8 1 23 21 5 13 3 9 32 22 8 1 23 21 排序过程如下:排序过程如下: 哎 懂 杂 斥 绥 摇 饿 琳 酌 赢 圃 便 响 绎 隶 搐 拧 却 坎 瘟 娠 迪 绥 嫡 滨 翱 颁 禾 笆 精 矢 狠 9 6 0 - C 语 言 程 序 设 计 教 程 - - 数 组 9 6 0 - C 语 言 程 序 设 计 教 程 - - 数 组 Date 34 第7章 数组 #include main() int I,j,t,a10; for(I=0;Ia

25、j) t=aI;aI=aj;aj=t; printf(“n”); for(I=0;I main() int I,j,k,a10; for(I=0;Iaj) k=j; if(k!=I)t=aI;aI=ak;ak=t; printf(“n”); for(I=0;Ihigh的情况,则说明,序 列中没有该数,亦结束查找过程。 冬 士 苍 嫌 饱 柱 闪 祷 皱 赶 嵌 猪 乘 徘 夷 职 询 室 异 钮 墟 担 省 赚 则 庞 富 傍 厄 纲 澳 蔬 9 6 0 - C 语 言 程 序 设 计 教 程 - - 数 组 9 6 0 - C 语 言 程 序 设 计 教 程 - - 数 组 Date 41

26、第7章 数组 程序为: #define M 10 #include main() static int aM=- 12,0,6,16,23,56,80,100,110,115; int n,low,mid,high,found; low=0; high=M-1; found=0; printf(“Input a number to be searched:“); scanf(“%d“, 畴 次 粟 辣 矾 孙 厨 旦 虑 谩 讶 衷 剁 尽 蛆 笔 惩 镇 有 陆 撩 渐 劝 逊 态 地 愚 羞 言 进 骨 歉 9 6 0 - C 语 言 程 序 设 计 教 程 - - 数 组 9 6 0 -

27、 C 语 言 程 序 设 计 教 程 - - 数 组 Date 42 第7章 数组 while(lowamid) low=mid+1; else high=mid-1; if (found=1) printf(“The index of %d is %d“,n,mid); else printf(“There is not %d“,n); 输入:80 输出:The index of 80 is 6 捶 乌 坠 伏 植 莆 馋 筑 原 凰 兴 迫 屎 绷 兑 菠 为 彰 慷 故 寨 赦 蠢 区 抢 艾 串 赁 肆 皱 桂 仙 9 6 0 - C 语 言 程 序 设 计 教 程 - - 数 组 9

28、 6 0 - C 语 言 程 序 设 计 教 程 - - 数 组 Date 43 第7章 数组 6.4 字符数组与字符串 6.4.1 字符数组的定义与初始化 1. 字符数组的定义 字符数组:其元素类型为字符类型的数组, 其定义与前面介绍的数组定义相同。 例如: char str40; 定义一个有40个元素的字符数组,每个元素 相当于一个字符变量。 匆 厅 重 青 羽 霓 旭 伎 诗 宛 涅 咱 驶 衰 盒 辅 敬 亲 熔 帧 土 够 申 杨 臂 箔 代 詹 泉 坚 杂 滥 9 6 0 - C 语 言 程 序 设 计 教 程 - - 数 组 9 6 0 - C 语 言 程 序 设 计 教 程 -

29、 - 数 组 Date 44 第7章 数组 2. 字符数组的初始化 方法:将字符常量以逗号分隔写在花括号中 在定义字符数组时进行初始化 char ch7=s,t,u,d,e,n,t ; 在对全部元素指定初值时,可省写数组长度。 char ch=s,t,u,d,e,n,t ; 湖 麓 柳 诱 亭 蔓 赚 吩 往 冶 沛 荆 逃 醛 瘩 凤 鲤 衙 股 集 筒 辗 然 烙 扮 刚 幻 垦 墒 啮 茧 硫 9 6 0 - C 语 言 程 序 设 计 教 程 - - 数 组 9 6 0 - C 语 言 程 序 设 计 教 程 - - 数 组 Date 45 第7章 数组 6.4.2 字符串的概念及存储

30、 1.字符串的概念 字符串: 若干有效字符的序列; 可包含转义字符、ASC码表中的 字符; 形式为: 用双引号括起来的字符序列; 例:“I am a student.“ , “Hello “ “a5=“; “fn“。 字符串的结束标志:0。 注:C语言无字符串类型,字符串是存放在字 符数组中的。 墒 慧 绘 胎 垫 疮 誊 罪 榴 拜 璃 着 慌 盅 己 闯 震 刹 玫 偶 寓 琢 议 曼 词 攻 蔫 罩 卖 紧 未 腕 9 6 0 - C 语 言 程 序 设 计 教 程 - - 数 组 9 6 0 - C 语 言 程 序 设 计 教 程 - - 数 组 Date 46 第7章 数组 2. 用

31、字符串来直接初始化字符数组 可直接把字符串写在花括号中来初始化字符数组 如:char ch=“student”; s t u d e n t 0 几点说说明: ()字符串结结束标标志0仅仅用于判断字符串是否结结束,输输出字符串 时时不会输输出。 ()在对对有确定大小的字符数组组用字符串初始化时时,数组长组长 度应应 大于字符串长长度。如: char s7=“student“;是错误的. ()在初始化一个一维维字符数组时组时 ,可以省略花括号。如: char s8=“student“; ( 4 )不能直接将字符串赋值给赋值给 字符数组组。下面的操作是错误错误 的 。 s=”student”; 系

32、统将双撇号括起来的字符依次赋给字符数组的各个元 素, 并自动在末尾补上字符串结束标志字符0。 鄂 驼 酱 沉 粪 茸 镀 赴 衷 趟 早 褂 耗 贴 泻 累 代 旨 磺 嗅 柞 桐 句 设 耻 瓦 憨 谷 什 畸 铆 碰 9 6 0 - C 语 言 程 序 设 计 教 程 - - 数 组 9 6 0 - C 语 言 程 序 设 计 教 程 - - 数 组 Date 47 第7章 数组 以下程序复制一个字符串给s2, 请完善程序并调试通过。(s5-3.c) #include main() int i; char s120,s220; printf(“string1:”); gets(s1); f

33、or(i=0;_;i+); printf(“string2:%sn”,_ _); 煌 中 坷 泪 韵 瞅 釜 辙 锑 者 昼 良 碳 黄 观 遥 甘 盂 柠 材 露 砌 结 寓 钱 法 姐 挂 编 烯 薄 陆 9 6 0 - C 语 言 程 序 设 计 教 程 - - 数 组 9 6 0 - C 语 言 程 序 设 计 教 程 - - 数 组 Date 48 第7章 数组 综合练习: 检查字串s中是否包含另 一字串t。 #include main() int i,j,k;char s80,t50; printf(“input string s and t:”); scanf(“%s%s”,s,

34、t); for(i=0;si!=0;i+) for(j=1,k=0;_;j+,k+) if(_)go re; re:if(_)printf(“t is been included by s.i=%dn”,i+1); else printf(“not includedn”); 杆 匝 舌 擦 益 茹 敛 帝 炉 慧 洽 棘 诽 犁 古 凯 伺 也 聋 蛾 赫 想 循 酗 丛 辰 援 挪 惦 急 嚎 次 9 6 0 - C 语 言 程 序 设 计 教 程 - - 数 组 9 6 0 - C 语 言 程 序 设 计 教 程 - - 数 组 Date 49 第7章 数组 6.4.3 字符串的输入输出

35、1.字符串的输出方法 (1)用printf函数 用printf输出字符串时,要用格式符“%s”,输 出时从数组的第一个字符开始逐个字符输出,直 到遇到第一个0为止。 例: char st15=“I am a boy!” printf(“st=%s,%c,%c”,st,st3,st7); 输出结果: I am a boy!mb 甚 蛤 阻 慷 煎 褪 驰 菩 札 莉 宝 吮 鸳 拓 肄 拟 韩 旺 炮 准 雹 碗 跋 蔑 斤 株 向 炎 袱 狰 察 巨 9 6 0 - C 语 言 程 序 设 计 教 程 - - 数 组 9 6 0 - C 语 言 程 序 设 计 教 程 - - 数 组 Date

36、 50 第7章 数组 例6.11 字符串输出示例 #include main() static char str20=”How do you do ?”; int k; printf(“%s”,str); /*输出str中的字 符串*/ for (k=0;strk!=0;k+) printf(“%c”,strk); /*一个一个地输 出字符*/ 输出结果为:How do you do ?How do you do ? 使用printf()函数的“%s“格式符来输出字符串,从数组的 第一个字符开始逐个输出,直到遇到第一个0为止。 使用”%c”格式时,用循环实现每个元素的输出。 袱 饵 淤 志 蔼

37、 癣 剪 度 酋 氦 随 云 函 托 圣 狗 失 屈 叫 斟 愚 吴 憋 豪 右 景 凭 滞 佃 替 铀 墅 9 6 0 - C 语 言 程 序 设 计 教 程 - - 数 组 9 6 0 - C 语 言 程 序 设 计 教 程 - - 数 组 Date 51 第7章 数组 (2)用puts函数输出字符串 函数原型:int put(char * str); 调用格式:puts(str); 函数功能:将字符数组str中包含的字符串 或str所指示的字符串输出,同时将0转换成换行 符。 例:char ch=“student“; puts(ch); puts(“Hello“); 将字符数组中包含的字

38、符串输出,然后再 输出一个换行符。因此,用puts()输出一行,不必 另加换行符n。 函数puts每次只能输出一个字符串 ,而printf可以输出几个: printf(“%s%s“,str1,str2); 邑 礁 疾 厂 忠 钉 执 旧 悠 森 帅 肆 椽 阎 洗 疑 阻 阉 谩 扳 粱 袱 而 镍 炕 盐 醒 混 浴 荡 揭 烘 9 6 0 - C 语 言 程 序 设 计 教 程 - - 数 组 9 6 0 - C 语 言 程 序 设 计 教 程 - - 数 组 Date 52 第7章 数组 2. 字符串的输入 (1)使用scanf函数输入字符串 例:char st15; sacnf(“%s

39、”,st); 但:scanf(“%s”,是错误的; 因为st就代表了该字符数组的首地址。 注:输入时,以回车或空格作为结束标志; 即:用scanf输入的字符串中不能含有空格。 若按如下方法输入: How do you do? 执行语句 : scanf(“%s“,st) ; 则s 的内容为: How0 使用格式字符串“%s“时会自动加上结束标志0。第一个空 格后的字符没有输入st中。 衍 漂 检 痪 摄 晾 蝎 廊 川 衬 绍 皮 戮 挽 涨 样 艇 魁 秃 勾 脉 罩 栅 桃 报 械 苔 沟 惭 她 蚕 康 9 6 0 - C 语 言 程 序 设 计 教 程 - - 数 组 9 6 0 - C

40、 语 言 程 序 设 计 教 程 - - 数 组 Date 53 第7章 数组 (2)使用函数gets()输入字符 函数原型:char *gets(char *str); 调用格式: gets(str); str是一个字符数组或指 针。 函数功能:从键盘读入一个字符串到str中, 并自动在末尾加字符串 结束标志符0。 输入字符串时以回车结束输入,这种方式可 以读入含空格符的字符串 如: char s14; gets(s); 若输入的字符串为: How do you do? 则s 的内容为: How do you do?0 叔 悲 决 蒸 盔 唐 艳 繁 泅 堆 灸 任 牛 盼 翼 决 巴 救

41、勇 莆 禁 呆 畜 止 宣 仁 界 考 嫡 攘 咎 罢 9 6 0 - C 语 言 程 序 设 计 教 程 - - 数 组 9 6 0 - C 语 言 程 序 设 计 教 程 - - 数 组 Date 54 第7章 数组 例6.12 字符串输入输出示例 #include main() char s20,s120; scanf(“%s”,s); printf(“%sn”,s) ; scanf(“%s%s”,s, s1); printf(“s=%s,s1= %s”,s,s1); puts(“n”); gets(s); puts(s); 程序运行过程: How do you do? How How

42、do you do? s=How,s1=do How do you do? How do you do? 请 棵 昏 环 结 菲 轰 兽 澈 术 个 乒 川 豢 偷 大 沼 饥 米 抓 四 尺 泣 扒 狱 邯 犀 具 弓 捍 蔓 默 9 6 0 - C 语 言 程 序 设 计 教 程 - - 数 组 9 6 0 - C 语 言 程 序 设 计 教 程 - - 数 组 Date 55 第7章 数组 6.4.4 字符处理函数 语言库函数中除了前面用到的库函数gets()与 puts()之外,还提供了一些常用的库函数,其函数原 型说明在string.h中 1. 字符串拷贝函数:strcpy() 调用

43、格式:strcpy(d_str,s_str); 功 能:将源字符串s_str复制到目标字符数 组d_str中。 说 明:d_str的长度应不小于s_str的长度 ,d_str必须写成数组名形式。s_str可以是字符串 常量或字符数组名形式。 例: char s110,s28=“student”,s36; strcpy(s1,s2); strcpy(s3,“okey“); 将s2中的“student“赋给s1(连同结束标志 0), “okey“赋给s3;s2的值不变。 注意:不能直接使用赋值语句来实现拷贝或赋 值。 如: s1=s2; s1=“student”;都是不允许的 蔷 骆 擂 断 悔

44、割 絮 爽 搀 凌 症 愁 份 狭 奸 卿 尹 彻 幕 胺 祥 胁 右 牙 庐 蹲 逆 吨 管 畦 翌 芬 9 6 0 - C 语 言 程 序 设 计 教 程 - - 数 组 9 6 0 - C 语 言 程 序 设 计 教 程 - - 数 组 Date 56 第7章 数组 2.字符串连接函数strcat() 调用格式:strcat(d_str,s_str); 功能:将s_str连同0连接到d_str的最 后一个字符(非0字符)后面。结果放在 d_str中。 例:char s114=“I am a”; char s25=“boy.”; strcat(s1,s2); 连接前:s1: s2: 连接后

45、:s1 I a m a 0 b o y . 0 I a m a b o y . 0 椅 擎 倘 损 洋 真 烃 瓷 却 勿 熔 贯 驯 缘 歉 蝶 陪 淌 咙 雄 葵 攫 滴 抹 拦 狂 鸵 确 乎 釉 耐 贺 9 6 0 - C 语 言 程 序 设 计 教 程 - - 数 组 9 6 0 - C 语 言 程 序 设 计 教 程 - - 数 组 Date 57 第7章 数组 3.字符串比较函数strcmp() 调用格式:strcmp(str1,str2); 功能:若str1=str2,则函数返回值为0; 若str1str2,则函数返回值为 正整数; 若str1 #include main()

46、int len1,len2 char s180,s280; gets(s1);gets(s2); if (strcmp(s1,s2)!=0) if (strlen(s1)strlen(s2) strcat(s1,s2);puts(s1); else strcat(s2,s1);puts(s2); 输入:you Thank 输出:Thank you 选 腮 陀 畴 镇 筛 霍 绢 垛 奉 狐 敝 粳 宠 斩 娠 绩 描 咳 前 驯 搂 窟 颓 炼 粹 亩 抉 郑 期 量 雁 9 6 0 - C 语 言 程 序 设 计 教 程 - - 数 组 9 6 0 - C 语 言 程 序 设 计 教 程 - - 数 组 Date 60 第7章 数组 6.5 数组作为函数的参数 数组作为函数参数主要有两种情况: 数组元素作为函数的实参:这种情况与 普通变量作实参一样,是将数组元素的值 传给形参。形参的变化不会影响实参数组 元素,我们称这种参数传递方式为“值传 递”。 数组名作实参:要求函数形参是相同 类型的数组或指针,这种方式是把实参数 组的起始地址传给形参数组,形参数组的 改变也是对实参数组的改变,称这种参数 传递方式为“地址传递”。 闺 缘 磊 羚 常 砖 名 封 苦 煎 带 缉 疼

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

当前位置:首页 > 其他


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