已阅读5页,还剩22页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第6章 数 组,6.1 一维数组 6.2 二维数组 6.3 字符数组与字符串 6.4 数组作为函数参数 6.5 程序举例,6.1 一维数组 6.1.1 一维数组的定义与引用 定义一维数组的一般形式如下: 类型说明符 数组名常量表达式; 其中类型说明符是定义数组中各元素的数据类型,常量表达式是说明数组的大小(即数组中元素的个数。 数组的说明与变量的说明一样,其作用是为数组分配存储空间。,返回目录,关于数组的说明要注意以下几个问题: (1)数组名的命名规则与变量名相同。 (2)说明数组大小的常量表达式必须为整型,并且用方括号括起来(不能用圆括号)。 (3)说明数组大小的常量表达式中可以包含符号常量,但不能是变量。,例6.1 下面的程序说明了如何对数组定义和引用数组元素: #include “stdio.h“ #define N 5 main() int i, aN; for (i0; iN; ii1) aii; for (i0; iN; ii1) printf(“%5d“,ai); printf(“n“); ,在这个程序中,首先定义了一个长度为5的整型一维数组a,然后利用for循环对其中的每一个元素(a0a4)进行赋值,最后利用for循环输出这5个元素值。 在C语言中,凡是一般简单变量可以使用的地方都可以使用数组元素。,6.1.2 一维数组的初始化 在C语言中,给数组元素提供数据的方法有以下3种。 (1)利用赋值语句逐个对数组中的元素进行赋值。 (2)利用输入函数逐个输入数组中的各个元素。例如, #include “stdio.h“ main() int i, a5; for (i0; i5; ii1) scanf(“%d“,&ai); 其中&ai表示取数组元素ai的地址。 (3)初始化。,下面对静态一维数组的初始化作三点说明: (1)可以只给数组的前若干个元素赋初值,此时后面的元素均将自动赋以初值0。 (2)在对全部元素赋初值时,说明语句中可以不指定数组长度,其长度默认为与初值表中数据的个数相同。 (3)虽然标准C语言规定只能对“静态存储”的数组进行初始化,即除了可以对外部(全局)数组进行初始化外,还可以对用static说明的局部数组进行初始化。,例6.3 分析下列程序的输出结果: #include “stdio.h“ main() int k,x5; static int y5; int z50,0,0; for (k0; k5; k) printf(“%5d%5d%5d“,xk,yk,zk); printf(“n“); ,6.2 二维数组 6.2.1 二维数组的定义与引用 定义二维数组的一般形式如下: 类型说明符 数组名常量表达式1常量表达式2;,返回目录,6.2.2 二维数组的初始化 与一维数组一样,也可以对静态存储的二维数组进行初始化。 在对二维数组进行初始化时要注意以下几点。 (1)在分行给二维数组赋初值时,对于每一行都可以只对前几个元素赋初值,后面未赋初值的元素系统将自动赋初值0;并且,还可以只对前几行元素赋初值。 (2)在给全部元素赋初值时,说明语句中可以省略第一维的长度说明。 (3)在分行赋初值时,也可以省略第一维的长度说明。,6.3 字符数组与字符串 6.3.1 字符数组的定义与初始化 定义字符数组的一般形式如下: char 数组名常量表达式; 一维字符数组 char 数组名常量表达式1常量表达式2; 二维字符数组 (1)当对字符数组中所有元素赋初值时,数组的长度说明可以省略。 (2)可以只对前若干元素赋初值。 (3)虽然标准C语言规定只能对“静态存储”的字符数组进行初始化,即除了可以对外部(全局)字符数组进行初始化外,还可以对用static说明的局部字符数组进行初始化。,返回目录,6.3.2 字符串 C语言规定,字符串常量(简称字符串)要用一对双撇号括起来。在一个字符串常量中,最后还包括一个结束符0。 C语言允许用字符串常量对字符数组进行初始化。,6.3.3 字符数组与字符串的输入与输出 1输入输出一个字符(格式说明符为 %c) 在用于输入时,输入项为数组元素地址。在具体输入时,各字符之间不要分隔,字符也不要用单撇号括起来。 在用于输出时,输出项为数组元素。 2输入输出一个字符串(格式说明符为 %s) 在用格式说明符%s进行输入输出时,其输入输出项均为数组名。但在输入时,相邻两个字符串之间要用空格分隔,系统将自动地在字符串最后加结束符0。,6.3.4 字符串处理函数 下面简单介绍一些常用的字符串处理函数。 (1)puts(字符数组名) 功能:输出一个字符串到终端。 (2)gets(字符数组名) 功能:从终端输入一个字符串到字符数组,并返回字符数组的地址。 (3)strcat(字符数组1,字符串2) 功能:将字符串2连接到字符串1的后面,并返回字符串1的地址。,(4)strcpy(字符数组1,字符串2) 功能:字符串2拷贝到字符数组1中。 (5)strcmp(字符串1,字符串2) 功能:比较字符串。 这个函数的返回值如下: 若字符串1字符串2,则返回值为0; 若字符串1字符串2,则返回值为正整数; 若字符串1字符串2,则返回值为负整数。,(6)strlen(字符串) 功能:测试字符串长度。 (7)大小写转换函数 大小写转换函数有以下两个: strlwr(字符串) 将字符串中大写字母转换成小写字母。 strupr(字符串) 将字符串中小写字母转换成大写字母。,6.4 数组作为函数参数 6.4.1 形参数组与实参数组的结合 例6.8 用选择法对无序序列进行排序。,图6.1 选择法排序流程图,返回目录,C程序如下: /* select.c */ select(b,n) int n,b; int i,j,k,d; for (i0; in2; ii1) ki; for (ji1; jn1; jj1) if (bjbk) kj; if (k!i) dbi; bibk; bkd; ,/* ex.c */ #include “stdio.h“ #include “select.c“ main() int k; static int s103,5,4,1,9,6,10,56,34,12; printf(“n“); for (k0; k10; kk1) printf(“%4d“,sk); printf(“n“); select(s,10); for (k0; k10; kk1) printf(“%4d“,sk); printf(“n“); ,在C语言中,形参数组与实参数组之间的结合要注意以下几点: (1)调用函数与被调用函数中分别定义数组,其数组名可以不同,但类型必须一致。 (2)在C语言中,形参变量与实参之间的结合是采用数值结合的,因此,如果在被调用函数中改变了形参的值,是不会改变实参值的。 (3)实参数组与形参数组的大小可以一致也可以不一致,C编译系统对形参数组的大小不作检查,调用时只将实参数组的首地址传给形参数组。 (4)虽然函数中的形参数组一般不指定大小,但为了控制形参数组的使用范围,一般要在函数中另设一个传送形参数组元素个数的形参变量,如函数select()中的形参n。,6.4.2 二维数组作为函数参数 二维数组作为函数参数与一维数组完全类似。 例6.9 利用函数求两个矩阵的乘积矩阵。 在例6.4中说明了两个矩阵相乘的方法。但在例6.4中,只能对固定的两个矩阵进行相乘,没有通用性。在本例中,用函数matmul()来实现矩阵相乘,在主函数main()中再用具体的矩阵来调用它。,具体的C程序如下: #include “stdio.h“ main() int i,j,c23; static int a241,2,3,4,5,6,7,8; static int b431,2,3,4,5,6,7,8,9,10,11,12; matmul(a,b,c,2,4,3); for (i0; i2; ii1) for (j0;j3; jj1) printf(“%5d“,cij); printf(“n“); printf(“n“); ,matmul(a,b,c,m,n,k) int m,n,k,a24,b43,c23; int i,j,t; for (i0; im; ii1) for (j0; jk; jj1) cij0; for (t0; tn; tt1) cijcijait*btj; return; ,6.5 程序举例 例6.10 从键盘输入年、月、日,计算并输出该日是该年的第几天。 C程序如下: #include “stdio.h“ main() int year,month,day,k,sum; static int t31,0,31,30,31,30,31,31,30,31,30,31; printf(“input year,month,day:“); scanf(“%d,%d,%d“,&year,&month,&day); if (year%40 & year%100!0)|year%4000) t129; else t128; sumday; for (k0;kmonth1;kk1) sumsumtk; printf(“Dyas%dn“,sum); ,返回目录,例6.12 编写一个对长度为n的线性表进行冒泡排序的函数。 冒泡排序的过程如下: 从前到后扫描待排序序列,依次比较相邻两个项目的大小,若发现逆序就进行交换,最后使最大者换到序列的最后;然后从后到前扫描剩下的序列,依次比较相邻两个项目的大小,若发现逆序就进行交换,最后使最小者换到序列的最前面。对剩下的序列重复这个过程,直到剩下的序列为空为
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农贸市场智能检测设备
- 商超智慧安全管理系统
- 某涂料厂产品研发管理制度
- 非遗剪纸进校园:传统文化传承的实践与创新
- AI在林业中的应用
- 某石油化工厂危险品管理准则
- 2026年人工智能生成图像的著作权归属研究
- 公司成员酒店组织机构
- 仓储管理试题及答案
- 卫生培训签到记录表
- 2026四川德阳市什邡市教育和体育局选调高(职)中教师13人备考题库附答案详解
- 2026江西赣州市安远县东江水务集团有限公司第一批人员招聘10人备考题库含答案详解(b卷)
- 2026年花样滑冰赛事品牌建设与营销创新案例研究
- 2026年考研数学一模拟单套试卷(含解析)
- 旅馆防偷拍工作制度
- 2026贵州贵阳市信昌融合实业发展有限公司招聘16人笔试备考试题及答案解析
- 2026年四川发展控股有限责任公司校园招聘笔试参考题库及答案解析
- 2026年辽宁省公务员省考《行政职业能力测验》真题解析
- TCCIIA 0004-2024 精细化工产品 分类
- 突发事件创伤伤员医疗救治规范2025年版
- 第25讲-理解为王:化学反应原理综合题解法策略
评论
0/150
提交评论