C程序设计第7章数组.doc_第1页
C程序设计第7章数组.doc_第2页
C程序设计第7章数组.doc_第3页
C程序设计第7章数组.doc_第4页
C程序设计第7章数组.doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第7章 数组在前面各章中,我们所使用的变量均是简单变量,处理的数据都是基本类型(整型、实型、字符型),因而也只能处理一些简单问题。但在实际生活中,存在很多复杂的、特殊的问题。例如学校中,就有学生的学籍、档案、成绩管理;教职工的人事档案管理等等,仅用基本的数据类型、简单变量来处理这些问题是非常麻烦的。除了基本类型的数据外,C语言还提供了构造类型的数据,它们是数组类型、结构体类型等。本章介绍一维数组和二维数组的定义、数组元素的引用方法,同时介绍字符型数组及字符串的处理方法。7.1 一维数组数组是一些具有相同数据类型的数组元素的有序集合。数组中的每一个元素(即每个成员、也可称为下标变量)具有同一个名称,不同的下标,每个数组元素可以作为单个变量来使用。数组可分为一维数组和多维数组(如二维数组、三维数组)。数组的维数取决于数组元素的下标个数,即一维数组的每一个元素只有一个下标,二维数组的每一个元素均有二个下标,三维数组的每一个元素都有三个下标,以此类推。一维数组中的数组元素是排成一行的一组下标变量,用一个统一的数组名来标识,用下标来指示其在数组中的具体位置。下标从0开始排列。一维数组通常是和一重循环相配合,对数组元素依次进行处理。7.1.1 一维数组的定义在C语言中,变量必须先定义,后使用。数组也是如此,使用数组时必须先定义,后引用。定义一维数组的格式为:类型说明符 数组名整型常量表达式,;例如:int a10,b5;说明: 它表示定义了两个一维数组,一个数组名为a,另一个数组名为b。数组名是按照“标识符”的规则构成的。 a数组含有10个数组元素,即a0、a1、a2、a9;b数组含有5个数组元素,即b0、b1、b2、b3和b4。注意,不能使用a10和b5,否则即出现数组超界现象。 类型说明符int 说明a数组和b数组中的每个元素均占2个字节,只能存放整型数据。类型说明符可以是任何基本类型,如float、double、char等;也可以是以后要介绍的其它数据类型,如结构型、共用型等。 整型常量表达式可以是整型常量或符号常量。最常见的是整型常量。不允许为变量。 C编译程序(如Turbo C)为a数组在内存中分配了10个连续的数组单元(共占20个字节),为b数组在内存中分配了5个连续的数组单元(共占10个字节),如图7-1所示。a0a1a2a3a4a5a6a7a8a9b0b1b2b3b4图7-1 C编译程序还指定数组名a为a数组的首地址,即a与&a0等价;指定数组名b为b数组的首地址,即b与&b0等价。也就是说,在C语言中,每个已定义的数组,其数组名有两个作用,其一代表该数组的名称;其二代表该数组在内存中的首地址。7.1.2 一维数组的初始化数组元素和变量一样,可以在定义的同时赋予初值,称为数组的初始化。对一维数组进行初始化,可以用以下几种形式。 对数组的所有元素均赋予初值,数组的长度可以省略。例如:int a6=1,2,3,4,5,6;也可写为 int a =1,2,3,4,5,6;a数组初始化后,a0=1,a1=2,a2=3,a3=4,a4=5,a5=6。又如:char s5=A,B,C,D,E;或 char s = A,B,C,D,E;s数组初始化后,s0=A,s1=B,s2=C,s3=D,s4=E。 对数组的部分元素赋予初值。例如:int b10=1,2,3;b数组初始化后,b0=1,b1=2,b2=3,其余各元素均为0。 对数组的所有元素均赋予0值。例如:int c10=0; 或 int c10=0,0,0,0,0,0,0,0,0,0;7.1.3 数组元素的引用当定义了某数组后,就可以引用该数组中的任何元素了。引用形式为:数组名下标。例如,前面定义过的a数组,可以引用的数组元素为a0、a1、a2、a9。【例7-1】数组元素的引用例子。程序如下:main( ) int a10,b5=55,44,33,22,11,i; for(i=0;i10;i+) ai=i+1; printf(“%4d”,ai); printf(“n”); for(i=0;i5;i+)printf(“%4d”,bi); printf(“n”); 在引用时应注意以下几点: 引用时只能对数组元素引用。如【例7-1】中的ai,bi;而不能引用整个数组,如【例7-1】中的a或b。 在引用数组元素时,下标可以是整型常数、已赋值的变量或含变量的表达式。如【例7-1】中ai,bi 的下标i就是已赋值的变量。 由于数组元素本身可看作同一类型的单个变量,因此,对变量的各种操作也都适用于数组元素。如【例7-1】中对数组元素ai的赋值操作和输出操作。 引用数组元素时,下标上限(即最大值)不能超界。也就是说,若数组含有n个元素,下标的最大值为n-1,(因下标从0开始);若超出界限,C编译程序并不给出错误信息(即其不检查数组是否超界),程序仍可以运行,但可能会改变该数组以外其它变量或其它数组元素的值,由此会造成不正确的结果。如【例7-1】,若误将第一个for语句中的i10写成i=10,就会出现下标超界现象a10=11,程序运行后,b数组中的b0原值55被错误地改变为11。7.1.4 一维数组应用举例【例7-2】从键盘输入10个整型数据,找出其中的最小值并显示出来。程序如下:main( ) int a10,min,i; for(i=0;i10;i+)scanf(“%d”,&ai); min=a0; for(i=1;iai) min=ai; printf(“min=%dn”,min);程序运行结果为:若输入: 10 22 34 90 66 45 78 59 -11 100输出为: min=-90【例7-3】采用“冒泡法”对任意输入的10个整数按由小到大的顺序排序。冒泡法排序的思路是:n个数由小到大排序,将相邻两个数依次进行比较,将小数调换在前头,逐次比较,直至将最大的数移至最后;再将n-1个数继续比较,将次大数移至倒数第2位置;依此规律,直至比较结束。例如“9、6、8、2、4”的排序过程示意如下: 第1步: 9 交换6666(比较4次)69 交换888889 交换222229 交换444449 第2步: 6 不换666(比较3次)88 交换22228 交换444489999 第3步:6 交换22 第4步: 2 不换(比较2次)26 交换4(比较1次)4446688889999程序如下:main( ) int a10,i,j,t; for(i=0;i10;i+) scanf(%d,&ai); for(i=0;i10;i+) for(j=0;jaj+1) t=aj;aj=aj+1;aj+1=t; for(i=0;i10;i+) printf(%4d,ai); printf(n);程序运行结果为:若输入10个数是:22 34 98 76 90 59 11 45 81 27则排序的结果为 :-90 27 11 22 34 45 59 76 81 98【例7-4】采用“选择法”对任意输入的10个整数按由大到小的顺序排序。选择法排序的思路是:将n个数依次比较,保存最大数的下标位置,然后将最大数和第1个数组元素换位;接着再将n-1个数依次比较,保存次大数的下标位置,然后将次大数和第2个数组元素换位;接着再将n-2个数依次比较,保存第3大数的下标位置,然后将第3大数和第3个数组元素换位;按此规律,直至比较换位完毕。例如,“1、3、6、9、5”的排序过程示意如下:第1步:1 3 6 9 5 5个数比较,保存最大数9的下标位置3,将9和第1个数组元素1换位;第2步:9 3 6 1 5 余下4个数比较,保存次大数6的下标位置2,将6和第2个数组元素3换位;第3步:9 6 3 1 5 后3个数比较,保存第3大数5的下标位置4,将5和第3个数组元素3换位;第4步:9 6 5 1 3 最后2个数比较,保存大数3的下标位置4,和第4个数组元素1换位;程序如下:main( ) int i,j,t,max,max_j,b10; for(i=0;i10;i+) scanf(%d,&bi); for(j=0;j9;j+) max=bj; max_j=j; for(i=j;imax) max=bi; max_j=i; t=bmax_j; bmax_j=bj;bj=t; for(i=0;i10;i+) printf(%4d,bi); printf(n);程序运行结果为:若输入10个数是:22 34 98 76 90 59 11 45 81 27则排序的结果为 :98 81 76 59 45 34 22 11 27 -90 7.2 二维数组二维数组中的数组元素是排成行列形式的一组双下标变量,用一个统一的数组名来标识、第一个下标表示行,第二个下标表示列。下标也从0开始排列。二维数组通常是和双重循环相配合,对数组元素依次进行处理。7.2.1 二维数组的定义定义二维数组的格式为:类型说明符 数组名整型常量表达式1 整型常量表达式2,;例如:int a34;说明: 二维数组中的每一个数组元素均有两个下标,且必须分别放在“ ”内,即上例不能写成“int a3,4”。 二维数组a中的第1个下标表示该数组具有的行数,第2个下标表示该数组具有的列数,两个下标之积是该数组具有的数组元素个数。即二维数组a共有34=12个数组元素,排成如下的3行4列:第0列第1列第2列第3列第0行a00a01a02a03第1行a10a11a12a13第2行a20a21a22a23 二维数组a中的每个数组元素的数据类型均相同,都只能存放整型数据(均占2个字节)。其12个数组元素占据连续的存储空间(共24个字节)。二维数组的存放规律是按行排列,即先排列第0行的各个元素,然后再排列第1行的各个元素,以此类推,如图7-2所示。a00a01a02a03a10a11a12a13a20a21a22a23图7-2 一个二维数组可以看成若干个一维数组,即每行为一个一维数组。如二维数组a就可看成3个一维数组,这3个一维数组的数组名为a0、a1和a2。每个一维数组含有4个数组元素。7.2.2 二维数组的初始化与一维数组类似,在定义二维数组的同时,也可以对其元素进行初始化。通常有以下几种方式。分行给二维数组所有元素赋初值。例如: int a24=1,2,3,4,5,6,7,8;该语句执行后的a数组的各个元素值为:a00=1,a01=2,a02=3,a03=4,a10=5,a11=6,a12=7,a13=8。 不分行给二维数组所有元素赋初值。例如: int a24=1,2,3,4,5,6,7,8;该语句执行后的a数组的各个元素值同上。 对部分元素赋初值。例如: int a24=1,2,5;该语句执行后的a数组的各个元素值为:a00=1,a01=2,a10=5,其余元素值均为0。 若对二维数组所有元素赋初值,则第一维的长度可以省略。此时第一维的长度由第二维长度(即列数)自动确定。例如: int a 5=1,2,3,4,5,6,7,8,9,10;或 int a 5=1,2,3,4,5,6,7,8,9,10;由列数5可自动确定第一维的长度是2。7.2.3 二维数组元素的引用定义了二维数组后,就可以引用该数组中的任何元素。引用形式为:数组名下标1下标2【例7-5】二维数组元素的引用例子。程序如下:main() int a66,i,j; for(i=1;i6;i+) for(j=1;j6;j+) aij=(i/j)*(j/i); for(i=1;i6;i+) for(j=1;j6;j+) printf(%2d,aij); printf(n); 该程序的运行结果为:1 0 0 0 00 1 0 0 00 0 1 0 00 0 0 1 00 0 0 0 1与一维数组元素引用相同,任何二维数组元素的引用都可以看成一个变量的使用,可以被赋值,可以参与组成表达式,也可输入输出。但要注意,其下标取值应限定在数组大小范围内,不能超界使用。7.2.4 二维数组应用举例【例7-6】分别计算矩阵a的两条对角线上的元素之和。行列数相同的矩阵主对角线上所有元素的下标值具有行列相等的特征;矩阵辅对角线上所有元素的下标值具有行与列之和等于该矩阵的最大列下标值(或最大行下标值)的特征。如图7-3所示。程序如下:辅对角线 主对角线图7-3 矩阵对角线示意图1 3 67 9 1114 15 17main() int a33=1,3,6,7,9,11,14,15,17;int sum1=0,sum2=0,i,j; for(i=0;i3;i+) for(j=0;j3;j+) if(i=j) sum1=sum1+aij;if(i+j=2) sum2+=aij; printf(sum1=%dnsum2=%dn,sum1,sum2);程序运行结果为:sum1=27sum2=29【例7-7】有一个35的矩阵,要求编程求出该矩阵所有元素中的最大值,并给出其所在的位置,即行列号。程序如下:main() int i,j,r,c,max; int b35=1,5,9,13,17,2,6,10,14,18,45,-8,22,79,4; max=b00; for(i=0;i3;i+) for(j=0;jmax) max=bij;r=i;c=j; printf(max=%d,r=%d,c=%dn,max,r,c);程序运行结果为:max=79, r=2, c=37.2.5 多维数组当数组元素的下标在2个或2个以上时,该数组称为多维数组。多维数组中使用最多的是前面介绍的二维数组。定义多维数组的一般格式为:类型说明符 数组名长度1 长度2长度k;例如:int a233;定义了一个含有233共18个元素的整型三维数组a,其元素为:a000,a001,a002 (可看成名为a00的一维数组)a010,a011,a012 (可看成名为a01的一维数组)a020,a021,a022 (可看成名为a02的一维数组)(以上9个元素可看成名为a0的二维数组)a100,a101,a102 (可看成名为a10的一维数组)a110,a111,a112 (可看成名为a11的一维数组)a120,a121,a122 (可看成名为a12的一维数组)(以上9个元素可看成名为a1的二维数组)多维数组元素在内存中排列顺序的规律是:第一维的下标变化最慢,最右边的下标变化最快。例如上述三维数组a的元素就按上面6行顺序排列。定义了多维数组后,就可以引用该数组中的任何元素。引用形式为:数组名下标1 下标2下标k和一维、二维数组元素引用相同,任何多维数组元素的引用都可以看成一个变量的使用,可以被赋值,可以参与组成表达式。注意不能超界引用多维数组元素。7.3 字符数组字符数组是存放字符型数据的数组,其中每个数组元素存放的值均是单个字符。字符数组也有一维数组和多维数组之分。比较常用的是一维字符数组和二维字符数组。7.3.1 字符数组的定义、初始化及引用字符数组的定义、初始化及引用同前面介绍的一维数组、二维数组类似,只是类型说明符为char,对字符数组初始化或赋值时,数据使用字符常量或相应的ASCII码值。例如: char c10,str510; /* 字符数组的定义 */又如: char c3=r, e, d; /* 字符数组的初始化 */ printf(“%c%c%cn”,c0,c1,c2); /* 字符数组元素的引用 */字符数组中的每个元素均占一个字节,且以ASCII代码的形式来存放字符数据。7.3.2 字符串与字符数组1字符串与字符数组在前面2.4.3节中曾介绍过字符串(即字符串常量)。所谓字符串就是指用双引号括起来的若干有效字符序列。在C语言中,字符串可以包含字母、数字、转义字符等。由于C语言中没有提供字符串变量(即专门存放字符串的变量),所以,对字符串的处理常常采用字符数组来实现。然而字符串有长有短,对字符串的处理(如测定字符串的实际长度;两个字符串的连接等等)怎样才能方便快捷呢?C语言规定了一个“字符串结束标志”,以字符0表示。0是指ASCII代码为0的字符,它是一个不可显示的字符,也是一个“空操作”字符,即不进行任何操作,只作为一个标记。C语言中,系统自动地在每一个字符串的最后加入一个字符0,作为字符串的结束标志。所以,字符串的结束标志0也要占据一个字节。例如,在字符数组c中存放字符串“China”,在内存单元中的存放形式如图7-4所示。China0c0c1c2c3c4c5图7-42字符数组的初始化 以字符常量的形式对字符数组初始化。例如: char s16=s,t,r,i,n,g;也可写成: char s1 =s,t,r,i,n,g; 以字符串常量的形式对字符数组初始化。例如: char s27=“string”;也可写成: char s2 = “string”;说明:以字符串常量的形式对字符数组初始化时,系统会自动地在该字符串的最后加入字符串结束标志0,因此s2数组的长度为7。而以字符常量的形式对字符数组初始化时,系统不会自动地在该数组的最后单元加入0字符,因此s1数组的长度为6。若人为地加入0字符。如char s1 = s, t, r, i, n, g, 0;则s1数组的长度也为7。【例7-8】字符数组初始化的例子。给出以下定义:char x =”abcdefg”;char y = a, b, c, d, e, f, ;则正确的叙述为A) 数组x和数组y等价B) 数组x和数组y的长度相同C) 数组x的长度大于数组y 的长度D) 数组x的长度小于数组y的长度根据上述说明可知该题应选C。即数组x的长度比数组y 的长度大1。3字符数组的输入和输出字符数组的输入和输出 有 两种形式。 逐个字符的输入和输出采用“%c”格式符与一重循环配合来实现逐个字符的输入和输出。【例7-9】将字符数组中字符逐个输入和输出。程序如下:main( ) char s7; int i; for(i=0;i7;i+) scanf(%c,&si); for(i=0;i7;i+) printf(%c,si); printf(n);程序运行时若由键盘输入:string则输出结果为:string 字符串(即整串)的输入和输出采用“%s”格式符来实现字符串(整串)的输入和输出。【例7-10】将字符数组中字符串(整串)的输入和输出。程序如下:main( ) char s1=How are you!,s210; scanf(%s,s2); printf(%sn,s1); printf(%sn,s2);程序运行时若由键盘输入:How do you do!则输出结果为:How are you!How说明:因为scanf函数在用“%s”格式符控制的字符串输入时,遇到空格或Tab或回车符就结束,所以程序运行时尽管从键盘输入:How do you do!,但是s2字符数组只获得了“How” 串。由此可见,采用scanf函数输入字符串时,字符串中不能包含空格。若想使字符串中包含空格,可以使用7.3.3中介绍的gets函数。注意,由键盘输入字符串时,其长度不要超出该字符数组定义的范围,同时,还需考虑到0的存储空间。而字符串的长度比字符数组长度短是可行的。由【例7-10】可见,欲实现字符串的整串输入、输出,程序中只需给出字符串的首地址即可,字符串的结束则由0控制(即字符串的输出遇到0就结束)。而数组名本身就代表该数组的首地址,故程序中常用数组名来提供字符串的首地址。另外需注意,不能采用赋值语句将一个字符串直接赋给一个数组。例如:char c10; c =”good”; 是错误的。7.3.3 字符串处理函数为了简化用户的程序设计,在C语言的函数库中提供了许多用于字符串处理的函数,这些函数使用起来方便、可靠。用户在程序设计中,可以直接调用这些函数,以减少编程的工作量。下面介绍几个常用的字符串处理函数。每个字符串函数都带有参数,为了叙述方便,当有一个参数时,用str表示;有两个参数时,用str1,str2表示。1 字符串输入、输出函数在调用字符串输入、输出函数时,在程序前面通常应设置一个相关的文件包含预处理命令(有关预处理命令将在第9章介绍),即:#include 字符串输入函数gets( )gets函数的调用格式通常为:gets(str);其中,参数str为字符串中第一个字符的存放地址,通常为字符数组名,也可以是第10章将要介绍的字符型指针变量。gets函数的功能是从键盘输入一个字符串(该字符串中可以包含空格),直至遇到回车符为止,并将该字符串存放到由str所指定的数组中(或内存区域)。 字符串输出函数puts( )puts函数的调用格式通常为:puts(str);其中,参数str的含义同gets函数的参数作用。puts函数的功能是从str指定的地址开始,依次将存储单元中的字符串输出至显示器,直至遇到字符串结束标志为止。注意:puts函数输出完字符串后会自动换行,这是由于系统在遇到0时自动将其转换为n。【例7-11】字符串输入、输出函数应用的例子。程序如下:#include main( ) char a15,a25,a35,a45; scanf(%s%s,a1,a2); gets(a3);gets(a4); puts(a1);puts(a2); puts(a3);puts(a4);程序运行时若由键盘输入:aa bbcc dd则输出结果为:aa bbcc dd根据scanf和gets这两个函数输入字符串的功能可知:a1数组存储了“aa”串;a2数组存储了“bb”串;a3数组存储了“”串(空串);a3数组存储了“cc dd”串。然后利用puts函数依次输出这4个字符串。注意该例中的语句gets(a3);紧随语句scanf(%s%s,a1,a2);之后而产生的空串效果。2 字符串处理函数在调用字符串处理函数时,在程序前面应设置一个相关的文件包含预处理命令,即:#include 求字符串长度函数strlen( )strlen函数的调用格式通常为:strlen(str);strlen函数的功能:统计str为起始地址的字符串的长度(不包含0),并将其作为函数值返回。【例7-12】求字符串长度的例子。程序如下:#include main( ) char str1 =tv0willn0; char str2 =abn012; printf(%dn,strlen(str1); printf(%dn,strlen(str2);程序运行结果为:36strlen函数在测定一个字符串的长度时,遇到第一个0(字符串结束标志)就结束。但遇到符合ddd的转义字符时(如【例7-12】中的012),系统将按ddd处理,而不看作为0,1, 2。因此,【例7-12】中的第1个字符串的长度为3,第2个字符串的长度为6,而不是3。 字符串连接函数strcat( )strcat函数的调用格式通常为:strcat(str1, str2);strcat函数的功能是将str2为首地址的字符串连接到str1串的后面,且从str1串的0所在单元连接起,即自动覆盖了str1串的结束标志0。说明: 该函数的返回值为str1串的首地址。 str1串所在的字符数组要留有足够的空间,以确保两个字符串连接后不出现超界现象。 参数str2既可以为字符数组名、指向字符数组的指针变量,也可以为字符串常量。【例7-13】字符串连接的例子。程序如下:#include string.hmain()char str120=good ,str2 =bye!; strcat(str1,str2); puts(str1); strcat(str1,2002); puts(str1);程序运行结果为:good bye!good bye!2002 字符串复制函数strcpy( )strcpy函数的调用格式通常为:strcpy(str1, str2);strcpy函数的功能是将str2为首地址的字符串复制到str1为首地址的字符数组中。说明: 参数str2既可以为字符数组名、指向字符数组的指针变量,也可以为字符串常量。 str1串所在的字符数组要留有足够的空间,以确保复制字符串后不出现超界现象。【例7-14】字符串复制的例子。程序如下:#include main() char a7=abcdef,b4=ABC; strcpy(a,b); puts(a); printf(%cn,a5); strcpy(a,2003);puts(a);程序运行结果为:ABCf2003注意:在【例7-14】中,当语句strcpy(a,b);执行后,a数组中各个单元的存储内容如图7-5所示。因而当执行语句printf(%cn,a5);后,可输出f字符。ABC0ef0a0a1a2a3a4a5a6图7-5(4) 字符串比较函数strcmp( )strcmp函数的调用格式通常为:strcmp(str1, str2);strcmp函数的功能:将以str1和str2为首地址的两个字符串进行比较,比较的结果由函数的返回值决定。即:当str1串与str2串相等时,函数的返回值为0;当str1串str2串时,函数的返回值0,即是一个正整数;当str1串str2串时,函数的返回值str2) 或if(str10) puts(str1); else puts(str2); printf(n=%dn,n);程序运行结果为:Chinese n=-47.3.4 字符数组应用举例【例7-16】由键盘任意输入一字符串和一个字符,要求从该串中删除所指定的字符。程序如下:main() char x,s20; int i,j; gets(s); printf(deldte ? n); scanf(%c,&x); for(i=j=0;si!=0;i+) if(si!=x) sj+=si; sj=0; puts(s);程序运行时若由键盘输入:how do you do?显示屏幕显示:deldte ? 由键盘又输入:o则运行结果为:hw d yu d?【例7-17】由键盘任意输入3个字符串,找出其中的最大串。程序如下:main( ) char str20,s320; int i; for(i=0;i0) strcpy(str,s0); else strcpy(str,s1); if(strcmp(s2,str)0) strcpy(str,s2); printf(The largest string is: %sn,str);本章小结数组是一些具有相同数据类型的数组元素(即下标变量)的有序集合。数组分为一维数组和多维数组。实际应用中,使用频度较高的是一维数组和二维数组。一维数组具有一个下标;二维数组具有二个下标。一维数组常与一重循环配合、二维数组常与二重循环配合,对数组元素依次进行处理。数组必须先定义,后引用。在定义数组的同时可以对数组进行初始化。引用时只能对数组元素进行引用,不能引用整个数组。引用数组元素时,切记不能超出数组定义的范围。C语言没有专用的字符串变量,常采用字符数组来处理字符串。在输入和存储字符串时系统会自动在串尾加入0作为字符串结束标志。C语言的函数库提供了许多字符串处理函数,灵活地使用这些函数可以简化程序设计。习题1选择题 合法的数组定义是A) int a =”string”;B) int a5=0,1,2,3,4,5;C) char a=”string”;D) char a =0,1,2,3,4,5; 若有定义和语句:char s10; s=”abcd”; printf(“%sn”,s);则结果是(以下u代表空格)A) 输出abcdB

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论