




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
芄膅蒄袅膀膄薆蚇肆膃虿袃羂芃莈蚆袈节蒁袁膇芁蚃蚄膃芀螅罿聿艿蒅螂羅芈薇羈袁芈蚀螁腿芇荿羆肅莆蒂蝿羁莅薄羄袇莄螆螇芆莃蒆蚀膂莂薈袅肈莂蚀蚈羄莁莀袄袀莀蒂蚆膈葿薅袂肄蒈蚇蚅羀蒇莇袀羆蒆蕿螃芅蒆蚁罿膁蒅螄螁肇蒄蒃羇羃肀薆螀衿腿蚈羅膇腿莈螈肃膈薀羃聿膇蚂袆羅膆螄虿芄膅蒄袅膀膄薆蚇肆膃虿袃羂芃莈蚆袈节蒁袁膇芁蚃蚄膃芀螅罿聿艿蒅螂羅芈薇羈袁芈蚀螁腿芇荿羆肅莆蒂蝿羁莅薄羄袇莄螆螇芆莃蒆蚀膂莂薈袅肈莂蚀蚈羄莁莀袄袀莀蒂蚆膈葿薅袂肄蒈蚇蚅羀蒇莇袀羆蒆蕿螃芅蒆蚁罿膁蒅螄螁肇蒄蒃羇羃肀薆螀衿腿蚈羅膇腿莈螈肃膈薀羃聿膇蚂袆羅膆螄虿芄膅蒄袅膀膄薆蚇肆膃虿袃羂芃莈蚆袈节蒁袁膇芁蚃蚄膃芀螅罿聿艿蒅螂羅芈薇羈袁芈蚀螁腿芇荿羆肅莆蒂蝿羁莅薄羄袇莄螆螇芆莃蒆蚀膂莂薈袅肈莂蚀蚈羄莁莀袄袀莀蒂蚆膈葿薅袂肄蒈蚇蚅羀蒇莇袀羆蒆蕿螃芅蒆蚁罿膁蒅螄螁肇蒄蒃羇羃肀薆螀衿腿蚈羅膇腿莈螈肃膈薀羃聿膇蚂袆羅膆螄虿芄膅蒄袅膀膄薆蚇肆膃虿袃羂芃莈蚆袈节蒁袁膇芁蚃蚄膃芀螅罿聿艿蒅螂羅芈薇 C+语言程序设计课程辅导二(2.1)-数组和字符串 一、数组的概念 在程序设计中存储单个数据时,需要根据数据的类型定义相应的变量来保存。如存储一个整数时需要定义一个整数变量来保存,存储一个实数时需要定义一个单精度或双精度变量来保存,存储含有多个成分的一个记录数据时,需要定义该类型的一个结构变量来保存。 若在程序设计中需要存储同一数据类型的、彼此相关的多个数据时,如存储数学上使用的一个数列或一个矩阵中的全部数据时,显然采用定义简单变量的方法是不行的,这就要求定义出能够同时存储多个值的变量,这种变量在程序设计中称为数组。 在实际应用中,一组相关的数据之间可能存在着一维关系,也可能存在着二维关系,等等。一个数列中的数据若是一维关系,则它除第一个数据外,每个数据只有一个直接前驱;除最后一个数据外,每个数据只有一个直接后继。假定一个数列为(38,42,25,60),则每个数的后一个数就是它的直接后继,每一个数的前一个数就是它的直接前驱,如42的直接前驱为38,直接后继为25。一个矩阵中的数据若二维关系,则它除第一行和第一列上的所有数据外,每个数据在行和列的方向上各有一个直接前驱;除最后一行和最后一列上的所有数据外,每个数据在行和列的方向上各有一个直接后继。假定一个矩阵为: 2 6 9 12 8 4 7 3 5 1 6 8则每一个元素均处于相应行和列的交点位置上,虽然有的元素值相同,但由于所处的位置不同,所以是不同的元素。 在程序设计中,用一维数组表示和存储一维相关的数据,用二维数组表示和存储二维相关的数据,用三维数组表示和存储三维相关的数据,等等。假定一个数列为a1,a2,.,an,则需要用一个一维数组来存储,假定仍用a作为数组名,则a中应至少包含有n个元素,每个元素用来存储数列中一个相应的数据。若a中正好包含有n个元素,则这n个元素依次表示为a0,a1,.,an-1,用a0存储数列中的第一个数据a1,用a1存储数列中的第二个数据a2,依次类推。假定一个矩阵为: a11 a12 . a1n a21 a22 . a2n M M . M am1 am2 . amn则需要用一个二维数组来存储,假定二维数组名用b表示,则b中应至少包含mn个元素,也就是说,第一维尺寸至少为m,第二维尺寸至少为n,该数组b中的每个元素用来存储矩阵中的一个相应的数据。 二、数组的定义 2.1 一维数组 1. 定义格式 一维数组同简单变量一样,也是通过变量定义语句定义的。其定义格式为: =; 为已存在的一种数据类型,是用户定义的一个标识符,用它来表示一个数组,的值是一个整数,由它标明该数组的长度,即数组中所含元素的个数,每个元素具有所指定的类型,两边的中括号是语法所要求的符号,不是标明其内容为可选而使用的符号,是用逗号分开的一组表达式,每个表达式的值将被赋给数组中的相应元素。 当数组定义中包含有初始化选项时,其可以被省略,此时所定义的数组的长度将是中所含的表达式的个数。 一个数组被定义后,系统将在内存中为它分配一块含有n个(n为数组长度)存储单元的存储空间,每个存储单元包含的字节数等于元素类型的长度。如对于一个含有10个int型元素的数组,它将对应10*4=40个字节的存储空间。 定义了一个数组,就相当于同时定义了它所含的每个元素。数组中的每个元素是通过下标运算符来指明和访问的,具体格式为:“”,这与数组的定义格式相同,但出现的位置是不同的,当出现在变量定义语句时则为数组定义,而当出现在表达式中时则为一个元素。 对于一个含有n个元素的数组,C+语言规定:它的下标依次为0,1,2,.,n-1,因此全部n个元素依次为a0,a1,a2,.,an-1,其中假定a为数组名。 2. 格式举例 (1) int a20;(2) double bMS; /假定MS为已定义的整型常量 (3) int c5=1,2,3,4,0;(4) char d=a,b,c,d;(5) int e8=1,4,7;(6) char f10=B,A,S,I,C;(7) bool g2*N+1; /假定N为已定义的整型常量(8) float h15, h210;(9) short x=1, y=2, z, w4=25+x, -10, x+2*y, 44;(10) int p; 第一条语句定义了一个元素为int型、数组名为a、包含20个元素的数组,所含元素依次为a0,a1,.,a19,每个元素同一个int型简单变量一样,占用4个字节的存储空间,用来存储一个整数,整个数组占用80个字节的存储空间,用来存储20个整数。 第二条语句定义了一个元素类型为double、数组长度为MS的数组b,该数组占用MS*8个字节的存储空间,能够用来存储MS个双精度数,数组b中的元素依次为b0,b1,.,bMS-1。 第三条语句定义了一个整型数组c,即元素类型为整型的数组c,它的长度为5,所含元素依次为c0,c1,c2,c3和c4,并相应被初始化为1,2,3,4和0。 第四条语句定义了一个字符数组d,由于没有显式地给出它的长度,所以隐含为初值表中表达式的个数4,该数组的4个元素d0,d1,d2和d3依次被初始化为a,b,c,和d。注意若没有给出数组的初始化选项,则表示数组长度的常量表达式不能省略。 第五条语句定义了一个含有8个元素的整型数组e,它的初始化数据项的个数为3,小于数组中元素的个数8,这是允许的,这种情况的初始化过程为:将利用初始化表对前面相应元素进行初始化,而对后面剩余的元素则自动初始化为常数0。数组e中的8个元素被初始化后得到的结果为:e0=1, e1=4, e2=7, e3e7=0。 第六条语句定义了一个字符数组f,它包含有10个字符元素,其中前5个元素被初始化为初值表所给的相应值,后5个元素被初始化为字符0,对应数值为0。 第七条语句定义了一个布尔型数组g,它的数组长度为2*N+1,每个元素没有被初始化。 第八条语句定义了两个单精度型一维数组h1和h2,它们的数组长度分别为5和10。在一条变量定义语句中,可以同时定义任意多个简单变量和数组,每两个相邻定义项之间必须用逗号分开。 第九条语句定义了三个短整型简单变量x,y和z,其中x和y被初始化为1和2,定义了一个短整型数组w,它包含有四个元素,其中w0被初始化为25+x的值,即26,w1被初始化为-10,w2被初始化为x+2*y的值,即5,w3被初始化为44。 第十条语句是错误的数组定义,因为它既省略了数组长度选项,又省略了初始化选项,使系统无法确定该数组的大小,从而无法分配给它确定的存储空间。 3. 数组元素的访问 通过变量定义语句定义了一个数组后,用户便可以随时使用其中的任何元素。数组元素的使用是通过下标运算符指明和访问的,其中运算符左边为数组名,中间为下标。一个数组元素又称为下标变量,所使用的下标可以为常量,也可以为变量或表达式,但其值必须是整数,否则将产生编译错误。 假定an为一个已定义的数组,则下面都是访问该数组的下标变量的合法格式: (1) a5 /下标为一个常数 (2) ai /下标为一个变量 (3) aj+ /下标为后增1表达式 (4) a2*x+1 /下标为一般表达式 假定在上述每个变量的下标表达式中,所使用的变量i,j和x的值分别为2,3和4,则ai对应的数组元素为a2,aj+对应的数组元素为a3,同时j的值被修改为4,a2*x+1对应的数组元素为a9。 使用一个下标变量同使用一个简单变量一样,可以对它赋值,也可以取出它的值。如: (1) int a5=0,1,2,3,8; /定义数组a并进行初始化 (2) a0=4; /把4赋给a0 (3) a1+=a0; /把a0的值4累加到a1,使a1的值变为5 (4) a3=3*a2+1; /把赋值号右边表达式的值7赋给a3 (5) coutaa0; /因a0=4,所以aa0对应的元素为a4, /该语句输出a4的值8 C+语言对数组元素的下标值不作任何检查,也就是说,当下标值超出它的有效变化范围0n-1(假定n为数组长度)时,也不会给出任何出错信息。为了防止下标值越界(即小于0或大于n-1),则需要编程者对下标值进行有效性检查。如: (1) int a5; (2) for(int i=0; i5; i+) ai=i*i; (3) for(i=0; i5; i+) coutai ; 第一条语句定义了一个数组a,其长度为5,下标变化范围为04。第二条语句让循环变量i在数组a下标的有效范围内变化,使下标为i的元素赋值为i的平方值,该循环执行后数组元素a0,a1,a2,a3和a4的值依次为0,1,4,9和16。第三条语句控制输出数组a中每一个元素的值,输出语句中下标变量ai中的下标i的值不会超出它的有效范围。如果在第三条语句中,用做循环判断条件的不是i5,而是i=5,则虽然a5不属于数组a的元素,但也同样会输出它的值,而从编程者角度来看是一种错误。由于C+系统不对元素的下标值进行有效性检查,所以用户必须通过程序检查,确保其下标值有效。 4. 程序举例 (1) #include void main() int i, a6; for(i=0;iai; for(i=5;i=0;i-) coutai ; coutendl; 在程序的主函数中首先定义了一个int型简单变量i和一个含有6个int型元素的数组a,接着使数组a中的每一个元素依次从键盘上得到一个相应的整数,最后使数组a中的每一个元素的值按下标从大到小的次序显示出来,每个值之后显示出一个空格,以便使相邻的元素值分开。 若程序运行时,从键盘上输入3,8,12,6,20,15这6个整数,则得到的输入和运行结果为: 3 8 12 6 20 15 15 20 6 12 8 3 (2) #include void main() int a8=25,64,38,40,75,66,38,54; int max=a0; for(int i=1;imax) max=ai; coutmax:maxendl; 在这个程序的主函数中,第一条语句定义了一个整型数组a8,并对它进行了初始化;第二条语句定义了一个整型变量max,并用数组a中第一个元素a0的值初始化;第三条语句是一个for循环,它让循环变量i从1依次取值到7,依次使数组a中的每一个元素ai同max进行比较,若元素值大于max的值,则就把它赋给max,使max始终保存着从a0ai元素之间的最大值,当循环结束后,max的值就是数组a中所有元素的最大值;第四条语句输出max的值。 在该程序的执行过程中,max依次取a0,a1和a4的值,不会取其他元素的值。程序运行结果为: max:75 (3) #include const int N=7; void main() double wN=2.6,7.3,4.2,5.4,6.2,3.8,1.4; int i,x; coutx; for(i=0;ix) coutwi=wiendl; 此程序的功能是从数组aN中顺序查找出比x值大的所有元素并显示出来。若从键盘上输入的x值为5.0,则得到的程序运行结果为: 输入一个实数:5.0 w1=7.3 w3=5.4 w4=6.2 (4) #include const int M=10; void main() int aM+1; a0=1; a1=2; int i; for(i=2;i=M;+i) ai=ai-1+ai-2; for(i=0;iM;+i) coutai,; coutaMendl; 该程序首先定义数组a,并分别为数组元素a0和a1赋值1和2,接着依次计算出a2至aM的值,每个元素值均等于它的前两个元素值之和,最后按照下标从小到大的次序显示出数组a中每个元素的值。该程序运行结果为: 1,2,3,5,8,13,21,34,55,89,144 羈袁芈蚀螁腿芇荿羆肅莆蒂蝿羁莅薄羄袇莄螆螇芆莃蒆蚀膂莂薈袅肈莂蚀蚈羄莁莀袄袀莀蒂蚆膈葿薅袂肄蒈蚇蚅羀蒇莇袀羆蒆蕿螃芅蒆蚁罿膁蒅螄螁肇蒄蒃羇羃肀薆螀衿腿蚈羅膇腿莈螈肃膈薀羃聿膇蚂袆羅膆螄虿芄膅蒄袅膀膄薆蚇肆膃虿袃羂芃莈蚆袈节蒁袁膇芁蚃蚄膃芀螅罿聿艿蒅螂羅芈薇羈袁芈蚀
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 厂矿消防知识培训
- 云南省峨山彝族自治县高中生物 第五章 细胞的能量供应和利用 5.4.2 影响光合作用因素教学设计 新人教版必修1
- 隔物灸产品培训
- 多媒体信息技术与教学融合的培训成果
- 一年级语文上册 第一单元 1 天地人配套教学设计 新人教版
- 九年级化学下册:第10单元 课题1 常见的酸和碱教学设计
- 人教部编版七年级历史上册 第12课《汉武帝巩固大一统王朝》教学设计
- 安全教育培训总结
- 药理学练习试题及答案
- 2024分析技术考试-环保检测练习卷附答案
- 2024年郑州轨道工程职业学院单招职业适应性测试题库参考答案
- 2024年四川省成都市龙泉驿区中考数学二诊试卷(含答案)
- (2024版)机动车查验员理论知识考试题库及答案
- 铁路机务知识培训课件
- 人工智能在制造业中的应用2024年智能工厂的新范式
- 2024智能AI中台白皮书
- 《万以内数的认识》大单元整体设计
- 铝加工(深井铸造)企业重点事项解读(米)
- 幼儿游戏与社会性的发展
- (医学课件)特应性皮炎
- 2024年安徽合肥文旅博览集团招聘笔试参考题库含答案解析
评论
0/150
提交评论