![C程序设计第6章 利用数组处理批量数据_第1页](http://file1.renrendoc.com/fileroot_temp2/2020-3/26/1e8639df-b7e0-4593-b370-36534003a028/1e8639df-b7e0-4593-b370-36534003a0281.gif)
![C程序设计第6章 利用数组处理批量数据_第2页](http://file1.renrendoc.com/fileroot_temp2/2020-3/26/1e8639df-b7e0-4593-b370-36534003a028/1e8639df-b7e0-4593-b370-36534003a0282.gif)
![C程序设计第6章 利用数组处理批量数据_第3页](http://file1.renrendoc.com/fileroot_temp2/2020-3/26/1e8639df-b7e0-4593-b370-36534003a028/1e8639df-b7e0-4593-b370-36534003a0283.gif)
![C程序设计第6章 利用数组处理批量数据_第4页](http://file1.renrendoc.com/fileroot_temp2/2020-3/26/1e8639df-b7e0-4593-b370-36534003a028/1e8639df-b7e0-4593-b370-36534003a0284.gif)
![C程序设计第6章 利用数组处理批量数据_第5页](http://file1.renrendoc.com/fileroot_temp2/2020-3/26/1e8639df-b7e0-4593-b370-36534003a028/1e8639df-b7e0-4593-b370-36534003a0285.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第6章 利用数组处理批量数据,6.1 怎样定义和引用一维数组 6.2 怎样定义和引用二维数组 6.3 字符数组,6.1怎样定义和引用一维数组,6.1.1 怎样定义一维数组 6.1.2 怎样引用一维数组元素 6.1.3 一维数组的初始化 6.1.4 一维数组程序举例,6.1.1怎样定义一维数组,定义一维数组的一般形式为: 类型符 数组名常量表达式; 数组名遵循标识符的命名规则 如 int a10;,数组名,数组长度,每个元素的 数据类型,10个元素:a0,a1,a2,a9,6.1.1怎样定义一维数组,一维数组在内存中的顺序存放。 每个数据元素占用的字节数,就是其类型的字节数。 例如: float
2、 a100; 字节数为:100*4。,6.1.1怎样定义一维数组,常量表达式中可以包括常量和符号常量,但不能包含变量。也就是说,C语言不允许对数组的大小作动态定义,即数组的大小不依赖于程序运行过程中变量的值。 例如: int n; scanf(“%d,/* 不能用变量说明数组大小*/,6.1.2 怎样引用一维数组元素,引用数组元素的表示形式为: 数组名下标 下标可以是整型表达式。 例如: a0=a5+a7-a2*3 注意:定义数组时用到的“数组名常量表达式” 和引用数组元素时用到的“数组名下标” 是有区别的。 例如 int a10; /数组有10个元素 t=a6; /数组中序号为6的元素,6.
3、1.2 怎样引用一维数组元素,例6.1 对10个数组元素依次赋值为0,1,2,3,4,5,6,7,8,9,要求按逆序输出。 解题思路: 定义一个长度为10的数组,数组定义为整型 要赋的值是从0到9,可以用循环来赋值 用循环按下标从大到小输出这10个元素,#include int main() int i,a10; for (i=0; i=0; i-) printf(%d ,ai); printf(n); return 0; ,a0a1a2a3a4a5a6a7a8a9,6.1.3一维数组的初始化,在定义数组的同时,可以对数组元素初始化: 1.定义数组时对全部数组元素赋初值。 int a10 =
4、0,1,2,3,4,5,6,7,8,9; 2.定义数组时对部分元素赋值。 int a10 = 0,1,2,3,4; /* 花括弧内提供了前5个元素的初值,后5个元素的初值为0。 */ 3.如果数组元素全部赋初值为0,可以写成: int a10 = 0,0,0,0,0,0,0,0,0,0; 或:int a10 = 0; 4.如果定义时对全部数组元素赋初值,可以不指定数组长度。 int a5 = 1,2,3,4,5; 可以表示为: int a = 1,2,3,4,5;,6.1.4一维数组程序举例,例6.2 用数组处理求Fibonacci数列问题 解题思路: 例5.8中用简单变量处理的,缺点不能在内
5、存中保存这些数。假如想直接输出数列中第25个数,是很困难的。 如果用数组处理,每一个数组元素代表数列中的一个数,依次求出各数并存放在相应的数组元素中,#include int main() int i; int f20=1,1; for(i=2;i20;i+) fi=fi-2+fi-1; for(i=0;i20;i+) if(i%5=0) printf(n); printf(%12d,fi); printf(n); return 0; ,例6.3 有10个地区的面积,要求对它们按由小到大的顺序排列。 解题思路: 排序的规律有两种:一种是“升序”,从小到大;另一种是“降序”,从大到小 把题目抽象
6、为:“对n个数按升序排序” 采用起泡法排序,9 8 5 4 2 0,8 9 5 4 2 0,8 5 9 4 2 0,8 5 4 9 2 0,8 5 4 2 9 0,8 5 4 2 0 9,大数沉底,a0 a1 a2 a3 a4 a5,for(i=0;iai+1) t=ai;ai=ai+1;ai+1=t; ,8 5 4 2 0 9,5 8 4 2 0 9,5 4 8 2 0 9,5 4 2 8 0 9,5 4 2 0 8 9,a0 a1 a2 a3 a4 a5,for(i=0;iai+1) t=ai;ai=ai+1;ai+1=t; ,5 4 2 0 8 9,4 5 2 0 8 9,4 2 5 0
7、 8 9,4 2 0 5 8 9,a0 a1 a2 a3 a4 a5,for(i=0;iai+1) t=ai;ai=ai+1;ai+1=t; ,4 2 0 5 8 9,2 4 0 5 8 9,2 0 4 5 8 9,a0 a1 a2 a3 a4 a5,for(i=0;iai+1) t=ai;ai=ai+1;ai+1=t; ,2 0 4 5 8 9,0 2 4 5 8 9,a0 a1 a2 a3 a4 a5,for(i=0;iai+1) t=ai;ai=ai+1;ai+1=t; ,for(i=0;iai+1) ,for(i=0;iai+1) ,for(i=0;iai+1) ,for(i=0;ia
8、i+1) ,for(j=0;j5;j+),#include int main() int a10; int i,j,t; printf(input 10 numbers :n); for (i=0;iai+1) / 相邻两个数比较 t=ai; ai=ai+1; ai+1=t; printf(the sorted numbers :n); for(i=0;i10;i+) printf(%d ,ai); printf(n); return 0; ,6.2 怎样定义和引用二维数组,1分队,2分队,3分队,队员1,队员2,队员3,队员4,队员5,队员6,float pay36;,6.2.1怎样定义二维
9、数组 6.2.2怎样引用二维数组的元素 6.2.3二维数组的初始化 6.2.4二维数组程序举例,6.2 怎样定义和引用二维数组,二维数组定义的一般形式为 类型符 数组名常量表达式常量表达式; 如:float a34,b510; 二维数组可被看作是一种特殊的一维数组,它的元素又是一个一维数组。 例如,把a看作是一个一维数组,它有3个元素: a0、a1、a2 每个元素又是一个包含4个元素的一维数组,6.2.1怎样定义二维数组,a0,a1,a2,二维数组中的元素在内存中的排列顺序是:按行存放,即先顺序存放第一行的元素,再存放第二行的元素,地址 值 数组元素,b00 b01 b02 b10 b11 b
10、12 b20 b21 b22,3000H 3002H 3004H 3006H 3008H 300AH 300CH 300EH 3010H,例如:整型数组 b33= 1,2,3, 4,5,6, 7,8,9 ;,1 2 3,4 5 6,789,二维数组元素的表示形式为: 数组名下标下标 下标可以是整型表达式。 数组元素可以出现在表达式中,也可以被赋值。 b12=a23/2 合法 for(i=0;im;i+) printf(“%d,%dn”,ai0,a0i);合法,6.2.2怎样引用二维数组的元素,6.2.3二维数组的初始化,可以用下面4种方法对二维数组初始化: .分行给二维数组赋初值。 例如: i
11、nt a34 = 1,2,3,4,5,6,7,8,9,10,11,12; .可以将所有数据写在一个花括号内,按数组排列的顺序对各元素赋初值。 例如:int a34 = 1,2,3,4,5,6,7,8,9,10,11,12;,6.2.3二维数组的初始化,.可以对部分元素赋初值。 例如: int a34 = 1,5,9; int a34 = 1,0,6,0,0,11; int a34 = 1,5,6;,1 0 0 0 5 0 0 0 9 0 0 0,1 0 0 0 0 6 0 0 0 0 0 11,1 0 0 0 5 6 0 0 0 0 0 0,6.2.3二维数组的初始化,4.如果对全部元素都赋初
12、值,则定义数组时对第一维的长度可以不指定,但第二维的长度不能省。 例如: int a4 = 1,2,3,4,5,6,7,8,9,10,11,12; 等价于:int a34 = 1,2,3,4,5,6,7,8,9,10,11,12; 在定义时也可以只对部分元素赋初值而省略第一维的长度,但应分行赋初值。 例如:int a4 = 0,0,3,0,10;,0 0 3 0 0 0 0 0 0 10 0 0,例6.4 将一个二维数组行和列的元素互换,存到另一个二维数组中。,6.2.4二维数组程序举例,解题思路: 可以定义两个数组:数组a为2行3列,存放指定的6个数 数组b为3行2列,开始时未赋值 将a数组
13、中的元素aij存放到b数组中的bji元素中 用嵌套的for循环完成,include int main() int a23=1,2,3,4,5,6,b32,i,j; printf(array a:n); for (i=0;i=1;i+) for (j=0;j=2;j+) printf(%5d,aij); bji=aij; printf(n); printf(array b:n); for (i=0;i=2;i+) for(j=0;j=1;j+) printf(%5d,bij); printf(n); return 0; ,例6.5 有一个34的矩阵,要求编程序求出其中值最大的那个元素的值,以及其
14、所在的行号和列号。,#include int main() int i,j,row=0,colum=0,max; int a34=1,2,3,4,9,8,7,6,-10,10,-5,2; max=a00; for (i=0;imax) max=aij; row=i; colum=j; printf(max=%dnrow=%dncolum=%dn, max,row,colum); return 0; ,6.3.1怎样定义字符数组 6.3.2字符数组的初始化 6.3.3怎样引用字符数组中的元素 6.3.4字符串和字符串结束标志 6.3.5 字符数组的输入输出 6.3.6善于使用字符串处理函数 6.
15、3.7字符数组应用举例,6.3 字符数组,用来存放字符数据的数组是字符数组。 字符数组中的一个元素存放一个字符。 定义字符数组的方法与定义数值型数组的方法相同。 例如: char c10; c0=I; c1= ;c2=a;c3=m;c4= ; c5=h; c6=a;c7=p; c8=p;c9=y;,6.3.1怎样定义字符数组,c0c1c2c3c4c5c6c7c8c9,6.3.2字符数组的初始化,字符数组的初始化方法方与数值型数组基本相同。 例如: char c10=I, ,a,m, ,h,a,p,p,y; char c=I, ,a,m, ,h,a,p,p,y;,例6.6 输出一个已知的字符数组
16、。 解题思路: 定义一个字符数组,并用“初始化列表”对其赋以初值 用循环逐个输出此字符数组中的字符,6.3.3怎样引用字符数组中的元素,#include int main() char c15=I, ,a,m, ,a, ,s,t,u,d,e,n,t,.; int i; for(i=0;i15;i+) printf(%c,ci); printf(n); return 0; ,6.3.3怎样引用字符数组中的元素,在C语言中,是将字符串作为字符数组来处理的。为了测定字符串的实际长度,C语言规定了字符串结束标志0。 注意:字符数组并不要求它的最后一个字符为0。 可以用字符串初始化字符数组。 例如:定义
17、字符数组 char c=Pascal program; char c=Pascal program; char c11=I, ,a,m, ,h,a,p,p,y,0;,6.3.4字符串和字符串结束标志,char c10=”China”; 可写成 char c10=”China”; 从c5开始,元素值均为0 printf(”%s”,c); 只显示: China,6.3.4字符串和字符串结束标志,字符数组名,字符数组的输入输出方法:逐个字符输入输出(%c)。 字符串的输入输出方法:整个字符串一次输入输出(%s),输出的字符中不包括结束符0。 例如 char c=China; printf(%s,c)
18、;,6.3.5 字符数组的输入输出,6.3.5 字符数组的输入输出,说明: (1)用“%s”格式符输出字符串时,printf函数中的输出项是字符数组名,而不是数组元素名。 (2)如果数组长度大于字符串实际长度,输出到0结束。 (3)输出字符不包括结束符0 。 (4)如果一个字符数组中包含一个以上0 ,则遇第一个0时输出就结束。 (5)可以用scanf函数输入一个字符串。,例如: char c6; scanf(”%s”,c); China 系统自动在China后面加一个0 char str15,str25,str35; scanf(”%s%s%s”,str1,str2,str3); How ar
19、e you? ,6.3.5 字符数组的输入输出,str1,str2,str3,在C函数库中提供了一些用来专门处理字符串的函数,使用方便。 使用字符串函数时,程序开头使用#include ,6.3.6 善于使用字符串处理函数,1.puts函数-输出字符串的函数 其一般形式为: puts (字符数组) 作用是将一个字符串输出到终端 char str20=”China”; puts(str); 输出China,字符数组名,2. gets函数-输入字符串的函数 其一般形式为: gets(字符数组) 作用是输入一个字符串到字符数组 char str20; gets(str); Computer,6.3.
20、6 善于使用字符串处理函数,字符数组名,3. strcat函数-字符串连接函数 其一般形式为: strcat(字符数组1,字符数组2) 其作用是把两个字符串连接起来,把字符串2接到字符串1的后面,结果放在字符数组1中,函数调用后返回字符数组1的地址。 char str130=” Peoples Republic of ”; char str2=”China”; printf(”%s”, strcat(str1,str2); 输出:Peoples Republic of China,6.3.6 善于使用字符串处理函数,字符数组str1必 须定义得足够大,4. strcpy和strncpy函数-字
21、符串复制 strcpy一般形式为: strcpy(字符数组1,字符串2) 作用是将字符串2复制到字符数组1中去 char str110,str2=”China”; strcpy(str1,str2);,6.3.6 善于使用字符串处理函数,str1,关于strcpy函数的几点说明,(1)字符数组1必须定义得足够大,以便容纳被复制的字符串。字符数组1的长度不应小于字符串2的长度。 (2)“字符数组1”必须写成数组名形式(如str1),“字符串2”可以是字符数组名,也可以是一个字符串常量。如strcpy(str1,China); (3)复制时连同字符串后面的0一起复制到字符数组1中。 (4)可以用s
22、trncpy函数将字符串2中前面若干个字符复制到字符数组1中去。例如:strncpy(str1,str2,2);作用是将str2中前面2个字符复制到str1中去,然后再加一个0 。复制的字符个数n不应多于str1中原有的字符。,关于strcpy函数的几点说明,(5)不能用赋值语句将一个字符串常量或字符数组直接给一个字符数组。如: str1=China; 不合法 str1=str2; 不合法 用strcpy函数只能将一个字符串复制到另一个字符数组中去。 用赋值语句只能将一个字符赋给一个字符型变量或字符数组元素。 下面是合法的使用: char a5,c1,c2; c1=A; c2=B; a0=C;
23、 a1=h; a2=i; a3=n; a4=a;,5. strcmp函数-字符串比较函数 其一般形式为 strcmp(字符串1,字符串2) 作用是比较字符串1和字符串2 strcmp(str1,str2); strcmp(”China”,”Korea”); strcmp(str1,”Beijing”);,6.3.6 善于使用字符串处理函数,5. strcmp函数-字符串比较函数 字符串比较的规则是:将两个字符串自左至右逐个字符相比,直到出现不同的字符或遇到0为止。 如全部字符相同,认为两个字符串相等。 若出现不相同的字符,则以第一对不相同的字符的比较结果为准。 比较的结果由函数值带回: 如果字
24、符串1=字符串2,则函数值为0 如果字符串1字符串2,则函数值为一个正整数 如果字符串1字符串2,则函数值为一个负整数,6.3.6 善于使用字符串处理函数,5. strcmp函数-字符串比较函数 ”A”A” ”computer”compare” ”these”that” ”1A”$20” ”CHINA”CANADA” ”DOG”TSINGHUA”,6.3.6 善于使用字符串处理函数,5. strcmp函数-字符串比较函数 if(str1str2) printf(”yes”); 错误 if(strcmp(str1,str2)0) printf(”yes”); 正确,6.3.6 善于使用字符串处理函数,6. strlen函数-测字符串长度的函数 其一般形式为: strlen (字符数组) 它是测试字符串长度的函数,函数的值为字符串中的实际长度。 例如: char str10=”China”; printf(”%d”,strlen(str); 输出结果是5 也
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 仲裁延期举证申请书
- 教师困难申请书
- 中职退学申请书
- 大学生创业项目鲜花计划书
- 土石方外运安全施工方案
- 土建施工安全作业施工方案
- 人行便道冬季施工方案
- 专题知识与创作
- 厨房团队的沟通管理
- 艺术的奇妙世界
- 《社会主义市场经济理论(第三版)》第十三章社会主义市场经济标准论
- 人教版小学美术六年级下册全册课件
- 变更索赔案例分析
- 过敏性休克的急救及处理流程教材课件(28张)
- DB32-T 3129-2016适合机械化作业的单体钢架塑料大棚 技术规范-(高清现行)
- 《花婆婆》儿童绘本故事
- DB44∕T 2149-2018 森林资源规划设计调查技术规程
- 数据结构英文教学课件:chapter10 Hashing
- 人教新目标英语九年级上册单词中文Units
- 机动车牌证申请表格模板(完整版)
- 《国家电网公司十八项电网反事故措施(试行)》实施细则
评论
0/150
提交评论