




免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第7章 数组C语言除提供一些基本类型之外,还提供构造类型的数据,它们有数据类型、结构体类型和共同体类型。构造类型数据是由基本类型数据按一定规则组成的,因此它们又被称为“导出类型”。数组时有序数据的集合。数组中的每一个元素都属于同一个数据类型。用一个统一的数组名和下标来唯一的确定数组中的元素。7.1 一维数组的定义和引用1. 一维数组定义: 类型说明符 数组名常量表达式 例如: int a5;说明:(1)数组名的命名规则和变量名相同,遵循标识符命名规则。(2)在定义数组时,需要制定数组中元素的个数,方括号中的常量表达式用来表示元素的个数,即数组长度。(3)常量表达式中可以包含常量和符号常量,不能包含变量。注意:int a 5;其数组元素分别为: a 0,a1,a 2,a 3,a 4 上面的五个元素相当于五个int 型的简单变量。2. 数组初始化: 数组可以初始化,即在定义时使它包含程序马上能使用的值,初始化表达式按元素顺序依次写在一对花括号内。值的个数不能多于数组元素的个数。1).在数组定义的时候初始化 int a10=0,1,2,3,4,5,6,7,8,9; 以下定义错误,初始化的参数过多:int a5=10,9,8,7,6,5;2).只对一部分元素初始化,其他元素为0 int a10=0,1,2,3,43). 对全部数组元素赋初值,可以不指定数组长度. int a5=1,2,3,4,5 可写成 int a =1,2,3,4,54)数组中所有元素初值为0. Int a10=03. 数组引用:定义了数组,就可以对数组中的元素进行引用。 引用方式为: 数组名 下标 下标可以是整型常量或整形表达式。例如:int a 5; t=a 3;4. 例如:一维数组的输入输出#includevoid main()int a5,i;for(i=0; i5; i+)scanf(%d,&ai);for(i=0; i5; i+)printf(%d ,ai);7.2 二维数组的定义和使用1. 二维数组的定义二维数组定义的一般形式:类型说明符 数组名行下标列下标例如:int age35;C语言中的数组可以有多个下标,数组中每个元素需要两个下标来表示称为二维数组,第一个下标表示该元素所在行,第二个下标表示所在列。2.二维数组的理解技巧 可以把二维数组看成是一种特殊的一维数组:它的元素又是一个一维数组。3. 二维数组元素的表示形式 数组名下标下标 数组元素可以出现在表达式中,也可以被赋值。4.二维数组也可在定义时初始化。(1) 分行对二维数组赋初值。 int a35=17,20,19,18, 21,19,18,21,17,20,21,17,20,19,18; (2)提供全部初值时,第一维的大小可以省略 int a 5=17,20,19,18, 21,19,18,21,17,20,21,17,20,19,18; (3)对部分元素赋值: int a34=1,5,95. 例如:二维数组的输入输出 int a23,i,j; for (i=0;i2;i+) for(j=0;j3;j+) scanf(“%d”,&aij); for (i=0;i2;i+) for(j=0;j3;j+) printf(“%d ”,aij);例如:求二维数组中最大的元素值及其行列号。#include void main( ) int a34= 1, 2, 3, 4, 9, 8, 7, 6, -10, 10, -5, 2 ; int i,j,row=0, colum=0,max; 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=10, row=2, colum=17.3 字符数组1.字符数组用来存放字符数据,字符数组中的一个元素存放一个字符。由于字符型与整型是互相通用的,因此也可以定义一个整型数组,用它存放字符数据。2.字符数组初始化两种方法: char array10=“hello”;或 char array10=h,e,l,l,o,0;C语言中,必须使用字符数组来存储字符串,字符数组中的每个数组元素存储一个字符,并且最后一个数组元素存储空值字符0,作为字符串结束标志。3. 字符数组的输入输出两种方法:(1) 逐个字符输入输出。用格式符“%c”输入或输出一个字符。(2) 将整个字符串一次输入或输出。用“%s”格式符。注意:(1) 输出字符不包括结束符0。(2) 用“%s”格式符输出字符串时,printf函数中的输出项是字符数组名,而不是数组元素名。(3) 如果数组长度大于字符串的实际长度,也只输出到遇0结束。(4) 如果一个字符数组中包含一个以上0,则遇到第一个0时输出就结束。(5) 可以用scanf函数输入一个字符串。4.例如:计算由键盘输入的五个人的平均年龄。#include void main() int age5; int i, sum=0; printf(Enter an age:); for(i=0;i5;i+) scanf(“%d”,&agei); sum+=agei;printf(Enter another age:); printf(The average is: %fn,sum/5.0);5.字符串处理函数(1)puts( ) 函数格式:puts (字符数组)功能:将一个字符串(可以包含转义字符、以0结束的字符序列)输出到终端(输出完换行)。说明: 字符数组必须以0结束。 puts( )自动将0转成n,实现换行。 使用puts( )必须包含头文件 stdio.h 。例如:#include void main( ) char str =Hello; puts (str); puts (str);#include void main( ) char str =Hello; printf(%s,str); printf(%s,str); (2)gets( ) 函数格式:gets (字符数组)功能:从键盘输入一个以回车结束的字符串放入字符数组中,并自动加0。说明: 输入串长度应小于字符数组长度。 gets( ) 只以回车作为输入结束的标志。 使用gets( )必须包含头文件 stdio.h 。例如:#include void main( ) char str10; gets (str); puts (str);#include void main( ) char str10 ; scanf(%s,str); puts(str); (3)字符串连接函数 strcat( ) 。格式: strcat (字符数组1,字符数组2)功能:把字符数组 2 连到字符数组 1 后面。返值:返回字符数组1的首地址。说明: 字符数组1必须足够大,字符数组2 也可是字符串。 连接前,两串均以0结束;连接后,串1的0取消,新串最后加0。 使用strcat( )必须包含头文件 string.h 。例如: #include #include void main( ) char str10 =abcd; strcat(str,efgh); puts(str); 输出:abcdefgh(4)字符串拷贝函数 strcpy( ) 。 格式: strcpy (字符数组1,字符串2) 功能:把字符串 2 拷贝到字符数组 1 中去。 返值:返回字符数组1的首地址。说明: 字符数组1必须足够大,字符串2 也可是字符数组。 拷贝时0一同拷贝。 使用strcpy( )必须包含头文件 string.h 。 不能使用赋值语句为一个字符数组赋值。例如: #include #include void main( ) char destination25; char blank = , c = C+, turbo = Turbo; strcpy(destination, turbo); strcat(destination, blank); strcat(destination, c); printf(%sn, destination); 输出: Turbo C+(5)字符串比较函数 strcmp( ) 。 格式: strcmp (字符串1,字符串2) 功能:比较两个字符串。 返值:返回 int 型整数。 a. 若字符串1 字符串2, 返回正整数。 c. 若字符串1= 字符串2, 返回零。说明: 字符串比较不能用关系运算符,必须用strcmp 。使用strcmp( )必须包含头文件 string.h 。例: if( str1=str2) printf(“yes”) ; - if( strcmp(str1,str2)=0) printf(“yes”) ; (6)求字符串长度函数 strlen( ) 。 格式: strlen (字符数组) 功能:计算字符串长度。 返值:返回字符串实际长度。 说明: 返回的是字符串的实际长度,不包括0。 “字符数组”也可以是字符串。使用strlen( ) 必须包含头文件 string.h 。例: char str10=“China”; printf( “%dn”, strlen( str ); 输出:5(7) 将字符串中大写换成小写 strlwr(字符串)(8) 将字符串中小写换成大写 strupr(字符串)6.字符数组程序举例例1:输入一行字符,统计其中有多少个单词#include void main( ) char string81 ; int i,num=0,word=0 ; char c; gets(string); for(i=0;(c=stringi)!=0;i+) if(c= ) word=0; else if( word=0 ) word=1; num+; printf(There are %d words in the linen,num);输入: I am a teacher输出: There are 4 words in the line例2:输入三个字符串,找出其中最大者include #include void main( ) char string20, str3
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025自考国考会计试题及答案
- 土木工程考试题库及答案
- 考点解析-人教版九年级《电与磁》综合测评练习题(含答案详解)
- 护理表演学考试题及答案
- 难点详解人教版八年级上册物理光现象《光的直线传播》专项测评试题(含答案及解析)
- 考点攻克人教版九年级《电功率》综合练习试题(含答案及解析)
- 2025-2026学年度上海市六年级上册初中数学9月月考试题 参考答案
- 十大类考试题目及答案
- 滕州二中分班考试试卷及答案
- 湘潭县一中开学考试题及答案
- 2025-2030年中国铝合金游艇行业十三五规划与发展建议分析报告
- 2023-2024学年鲁教版 九年级数学上册期中复习检测试卷
- 船舶机舱进水的应急处理
- 《人体的经络》课件
- 班级管理(延边大学)知到智慧树章节答案
- 《福禄贝尔》课件
- 带班育人方略班会-《从“埋头苦干”走向“抬头巧干”》【课件】
- 【MOOC】人工智能原理-北京大学 中国大学慕课MOOC答案
- 心肌梗死患者的便秘护理
- 中国冷冻烘焙食品行业市场集中度、竞争格局及投融资动态分析报告(智研咨询)
- 期中测试卷(第一单元至第四单元)-2024-2025学年六年级上册数学人教版
评论
0/150
提交评论