版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、本章学习目标 迄今为止,我们使用的都是属于基本类型(整型、字符型、实型)的数据,C语言还提供了构造类型的数据,包括数组类型、结构体类型、共用体类型。基本类型数据按一定规则组成了构造类型数据。通过本章的学习,读者应该掌握以下内容: 一维数组 二维数组 字符数组 多维数组,第6章 数组,6.1.1 相关知识 数组是一种十分有用的数据结构,许多问题不用数组几乎难以解决。一维数组是数组应用的基础。 数组是同一数据类型的有序数据的集合。构成数组的单元称为数组元素,数组元素的序号称为下标。C语言中数组的下标从0开始计数,最大下标比数组元素个数少1。比如数组a有5个整数元素,a0是它的第0号元素(第1个元素
2、),a4是它的第4号元素(第5个元素),它在内存中,6.1 一维数组,的形式如图6-1所示。,数组名a01(数组中所有a134元素都有相a2-5同的名字)a367a49数组中元素的序号 图6-1 数组在内存中的形式 数组元素的序号用方括号括起来。方括号又被称为下标运算符,具有最高的优先级。下标必须是一个整数,如a2,或一个整型表达式,如i=1,j=2,则ai+j就表示a3。 带下标的数组名在这里就相当于该类型的一个变量,因此可以作为赋值语句的左值,如a4+=3;数组的维数是数组元素下标的个数。根据数组的维数可以将数组分为一维、二维、三维、多维数组。,6.1.2 程序范例 通过下例程序学习一维数
3、组变量的定义、初始化、引用。 1范例一 任务:定义一个数组,使a0到a7的值为07,然后输出。 源程序: #include main() int i,a8; /*一维数组的定义*/,for(i=0;i=7;i+) ai=i; /*一维数组的初始化*/ for(i=0;i=7;i+) printf(%d ,ai); /*一维数组的引用*/ 运行结果如下: 0 1 2 3 4 5 6 7 程序说明:上述程序首先定义一个一维数组,再对数组初始化,最后输出一维数组。,2范例二 任务:定义一个数组,使a0到a9的值为1、3、519,然后按逆序输出。 源程序: #include main() int i,
4、a10; for(i=0;i=9;i+) ai=1+2*i;,for(i=9;i=0;i-) printf(%d ,ai); 运行输出: 19 17 15 13 11 9 7 5 3 1 程序说明:程序定义整型数组a,有10个元素,通过for循环对数组元素赋以连续的奇数值:1,3,5,19,然后以反序输出。在第一个for循环头的第二个表达式中写上数组的最大下标可以预防“丢一错误”,即最好写成i=9或i10,而不要写成i9这种形式。 6.1.3 知识归纳,1一维数组的定义(先定义后使用) 数组要占用内存空间,只有在声明数组元素的类型和个数之后编译器才能为该数组分配合适的内存,这种声明就是数组的定
5、义。一维数组中的各个数组元素是排成一行的一组下标变量,用一个统一的数组名来标识,用一个下标来指示其在数组中的位置,下标从0开始。一维数组通常和一重循环相配合,对数组元素进行处理。 对一维数组来说,其定义的一般形式为: 其中,类型标识符指数组元素的类型;数组名是个标识符,是数组类型变量;整型常量表达式表示该数组的大小,应该大于0。,例如语句:int a10; 定义了一个数组a,a是有10个整型元素的数组名,元素个数为10,数组元素类型为整型。 说明: (1)数组名:按标识符规则。本例a就是数组名。 (2)整型常量表达式:表示数组元素个数(数组的长度)。可以是整型常量或符号常量,不允许用变量。整型
6、常量表达式在说明数组元素个数的同时也确定了数组元素下标的范围,下标从0开始整型常量表达式-1(注意不是1整型常量表达式)。C语言不检查数组下标越界,但是使用时,一般不能越界使用,否则结果难以预料(覆盖程序区程序飞出,覆盖数据区数据覆盖破坏,操作,系统被破坏,系统崩溃)。本例数组元素个数是10个,下标为09。 (3)类型说明:指的是数据元素的类型,可以是基本数据类型,也可以是构造数据类型。类型说明确定了每个数据占用的内存字节数。在16位操作系统下,比如整型2字节,实型4字节,双精度8字节,字符1字节。本例数组元素是整型,每个元素占2个字节,因为有10个数组元素,所以占用20字节。 (4)C编译程
7、序为数组分配了一片连续的空间。 (5)C语言还规定,数组名是数组的首地址,即a=i=0; i-) ai 以此来顺序或逆序地遍历一维数组中的所有元素。 注意事项: (1)引用数组元素时,下标可以是整型常数、已经赋值的整型变量或整型表达式。 (2)数组元素本身可以看作是同一个类型的单个变量,因此对变量可以进行的操作同样也适用于数组元素。也就是,数组元素可以在任何相同类型变量可以使用的位置引用。 (3)引用数组元素时,下标不能越界。 3一维数组变量的初始化 在定义数组元素时,系统为其分配了一定的存储空间,所有的存储空间的赋初始值可以在程序运行之前,即在编译阶段进行,也可在运行期间(在定义一个数组变量
8、的同时就给它赋值,这称为数组的初始化),用赋值语句或输入语句使数组中元素得到初始值。 (1)在编译阶段赋初值(初始化)。,1)对全部数组元素赋初值。例如: static int a6=1,2,3,4,5,6; 其中,数组元素的个数和花括号中初值的个数是相同的,并且花括号中的初值从左到右依次赋给每个数组元素,即a0=1,a1=2,a2=3,a3=4,a4=5,a5=6。用初始化的方法可以提高赋值效率,而且这是在程序编译时进行的,不占用系统的运行时间。 2)只给部分数组元素赋初值。这又可分为两种情况: 如果只给数组的前半部分元素赋初值,可连续写出初值,,例如: int a5=1,2; 其作用是把1
9、赋给a0,把2赋给a1,而对后面的元素全部自动赋以初值0,即a2= a3 = a4=0; 如果只给数组的后半部分元素或某些不连续的元素赋初值,则花括号中分隔数值的逗号不能缺少,把要赋的值写入适当的地方,而不予赋值的地方应写0(对数值型数组)。 例如:int a5=0,3,0,7,9;则对数组元素a1、a3、a4赋了初值3,7,9,而a0、a2元素值均为0。,又例如:static int a10=0,1,2,3,4; 此语句定义a数组有10个元素,但花括号中只提供了5个初值,表示只给前5个数组元素a0a4赋初值,后面5个元素a5a9 系统自动赋0。 3)给数组全部元素赋初值时,可以省略数组长度。
10、例如: int a=10,20,30,40,50; 省略数组长度时,系统将根据赋初值的个数确定数组长度。上述大括号内共有5个初值,说明数组a的元素个数为5,即数组长度为5。,(2)在运行阶段赋初值。 举例如下: int a10; int i; for(i=0;i10;i+) scanf(%d, 上面程序段中对数组元素的赋值是通过循环语句实现的,这要占用运行时间。 数组初始化时的常见错误有以下两种: 1)在实际数值之间留有空位,例如:,int a5=1,3,5; 是错误的,即在1和3之间、3和5之间必须有具体数值,即使是0也必须写上。 2)初始值的个数大于元素的个数,例如: int a5=1,2
11、,3,4,5,6; 也是错误的,因为数组只有5个元素,而提供了6个初值,这会造成编译错误。 6.1.4 实例验证,以下程序用来实现一维数组的应用。通过该程序熟悉数组的定义以及数组元素的初始化、引用。 1范例一 任务:定义一个数组并赋值,实现前后倒置然后输出。 例如:,通过这一遍的比较,数组的最大元素9被放到了最后它应在的位置,然后对余下的5个元素进行第二遍排序。 第二遍:,这一遍把次最大的元素8放到倒数第二位它应在的位置。 第三遍:,第四遍:,第五遍:,对上面的数组共比较了5遍,是比较次数最多的情况,而且每一遍都有交换事件发生。但对有些数组,n个元素不一定要比较n-1遍,也许可以提早结束。如有
12、数组:2 1 4 3 9 7,进行第一遍比较:,源程序: #define N 10 #include main() int i,j,t,aN; for(i=0;i=N-1;i+) scanf(%d,for(i=0;i=N-1;i+) printf(%3d,ai); printf(n); for(i=0,j=N-1;i=N/2-1;i+,j-) t =ai; ai=aj; aj=t; printf(n change array :n);,for(i=0;i=N-1;i+) printf(%3d,ai); printf(n); 运行输入:0 1 2 3 4 5 6 7 8 9 输出: not ch
13、ange array: 0 1 2 3 4 5 6 7 8 9 change array : 9 8 7 6 5 4 3 2 1 0,程序说明: (1)这里N=10,则进行了N/2=5次对换,最后一次是a4和a5的对换。 (2)如果n为偶数,则要对换n/2对元素;如果n为奇数,则要对换(n-1)/2对元素,处于正中间的那个元素(下标为(n-1)/2)不需和任何元素对换。 (3)不管n是偶数还是奇数,都要进行n/2次对换。可以定义两个整型变量i和j,分别作为数组前部元素和后部元素的下标,i的初值为0,j的初值为n-1,它们随着操作的进行不断向中间收缩,直至进行完n/2次交换。,2范例二 任务:用
14、起泡法对数据进行排序。 源程序: #include #define N 100 main() int i,j,n,t,aN,fini,count,times; printf(Input n(=%d)n,N); scanf(%d,printf(Input %d number to be sorted:n,n); for(i=0;iaj+1),t=aj; aj=aj+1; aj+1=t; times+; fini=0; printf(n pass number=%dn exchange times=%dn,count,times);,for(i=0;in;i+) printf(%3d,ai); i
15、f(i+1)%5=0) printf(n); 运行输出: Input n(n100) 6,Input 6 number to be sorted: 8 7 9 1 4 2 pass number=5 compare times=11 1 2 4 7 8 9 再次运行: Input n(n=100) 10 Input 10 number to besorted:,9 8 1 7 6 3 4 5 4 1 Pass number=9 Compare times=33 1 1 3 4 4 5 6 7 8 9 程序分析与说明: (1)编程思路:起泡法的特点是将相邻的两个元素进行比较,把较小的元素调到前面
16、(升序)或后面(降序)。,(2)设数组有6个元素,则其起泡排序过程可表示如下,其中带箭头的弧线表示比较,下划线表示交换。 第一遍:,(3)其中变量fini为开关变量,count为比较遍数的计数器,times为交换次数计数器。程序中首先定义一个大数组,在此范围内可以任意确定对任意个元素的数组进行排序,这样处理比较灵活。 3范例三 任务:用Shell排序法对数据排序。 源程序: #include #define M 500 main(), int t,i,j,n,jump,count,times,aM,alldone; printf(Input n(n=%d):n,M); scanf(%d,whi
17、le(jump=1) alldone=1; while(alldone=1) alldone=0; for(i=0;iaj) t=ai; ai=aj;,aj=t; alldone=1; times+; count+; jump=jump/2; ,for(i=0;i=n-1;i+) printf(%3d,ai); if(i+1)%10=0) printf(n); printf(pass number=%dn exchange times=%dn,count,times); 运行输出: Input n(n=500);,10 Input 10 number to be sorted in shell
18、: 9 8 1 7 6 3 4 5 4 1 1 1 3 4 4 5 6 7 8 9 pass number=7 exchange times=13 程序分析与说明: (1)在起泡排序法中每两个相邻的元素都要进行比较,这样比较的次数就比较多。能否减少比较次数,加快排序的,进行呢?Shell排序法可以做到。 (2)它的基本思想是允许第一次跳过较大的间隔去和后面的元素进行比较,当接近目的时,再跳过较小的间隔和后面的元素进行比较,直到间隔为1才进行相邻元素的比较。每次跳过多大的间隔为好呢?通常采用一种简单的方案:开始时跳过的间隔是数组长度的一半,以后每一遍再取上一间隔的一半。 (3)为了说明Shell
19、排序的原理,以10个元素的数组为例作详细的图解说明。10个元素的跳步共有3种:10/2=5,5/2=2,2/2=1,即跳步jump可以取值5、2、1。原始数据:9 8 1 7 6 3 4 5 4 1。 如下图:,jump=5:,在这一遍中,第i个元素和第i+jump个元素比较,即第一个元素和第6个元素比较,第2个和第7个比较,第5个和第10个比较。带下划线的数据表示是一对逆序数据,要对它们进行交换,交换后的结果在下一行显示出来。当一遍进行完后,再重复这样的操作,直到在当前跳步(jump=5)下再没有应该交换的元素为止。上面最后一行已符合这样的要求,于是把跳步缩小一半,对上一跳步下的结果继续进行
20、比较。,jump=2:,在这一遍中是第i个和第i+jump比,比较结果如最后一行所示,再对其进行一遍类似的操作,未发现有逆序现象,于是转入下一跳步操作。,jump=1:,从上面的排序可以看出,Shell排序需要三重循环:最外层循环控制跳步的大小;最内层循环实际执行扫描、比较和交换;中间一层的循环控制在当前跳步下重复检查的次数,为此可设一个开关变量alldone来控制,其值为1表示进行内循环,其值为0表示不再进行内循环。设n为数组长度,a为数组名,则可用如下框架描述Shell排序过程: jump=n/2; while(jump=1),alldone=1; while(alldone=1) all
21、done=0; for(i=0;iaj) alldone=1; ,jump=jump/2; 由此可写出完整的程序,程序中用jump表示跳步间隔,count表示比较遍数,times表示交换次数。 (4)和起泡法相比,Shell排序法不管是比较次数还是交换次数都有所降低,说明Shell排序法是个更有效的排序方法。 4友情提示 (1)范例二、三有一定难度,酌情掌握。 (2)数组是一种非常有用的数据类型,数组和循环语句的结合可以解决很多实际问题。,6.2 二维数组,6.2.1 相关知识 在C语言中,可以把一个二维数组看成一个特殊的一维数组,每个数组元素又是包含有若干个元素的一维数组。二维数组是如何定义
22、和应用的呢? 6.2.2 程序范例 观察以下程序,学习二维数组的简单应用。 1范例一 任务:定义一个二维数组,按行给各个元素赋值并按行输出。,源程序: #include main() int i,j,a34; for(i=0;i3;i+) for(j=0;j4;j+) scanf(%d,i+),for(j=0;j4;j+) printf(%d , aij); printf(n); 运行输入:1 2 3 4 5 6 7 8 9 10 11 12 运行输出:1 2 3 4 5 6 7 8 9 10 11 12 程序说明:上述程序首先定义一个二维数组,再对数组初始化,最后输出二维数组。 2范例二 任
23、务:定义一个二维数组,并输出每一行的最小值。,源程序: #include #define N 4 main() int aNN, mN, i, j; printf(Input numbers: n); for (i=0; iN; i+) for (j=0; jN; j+) scanf(%d, /*对二维数组初始化*/,for (i=0; iaij) mi=aij; /*依次与其余元素比较,直至找到每一行的最小值*/ printf(Min is: ); for (i=0; iN; i+),printf(%d , mi); /*输出每一行的最小值*/ 运行结果: Input numbers: 72
24、 3 4 89 81 23 61 8 32 78 7 12 39 85 1 6 Min is: 3 8 7 1,程序说明:上述程序首先定义一个NN行的二维数组,对数组初始化,再假定每行的第一个元素为当前行的最小值,依次与其余元素比较,直至找到每一行的最小值,最后输出每一行的最小值。 6.2.3 知识归纳 1二维数组变量的定义 二维数组变量定义的一般形式为: 这里的方括号是下标运算符;代表第1个下,标,定义数组的行数;代表第2个下标,定义数组的列数。 假设定义数组a34和b43,在内存中的存储示意如图6-3和图6-4所示。数组a可以看作是有3个“元素”的一维数组,这三个元素分别是a0,a1,a2
25、,而每个元素又是一个有4个整型元素的一维数组;数组b可以看作是有4个“元素”的一维数组,每个元素又是一个有3个整型元素的一维数组。因此a和b的“元素”个数不同,每个“元素”的大小也不同。,既然a0,a1,a2是一维整型数组的数组名,那么它们就代表着一维整型数组的首地址,不是可以直接进行输入输出操作的真实意义上的元素。 二维数组在内存中的存放形式是按行存放的,下一行紧跟在上一行的尾部,正如a,b数组中的数字所标示的顺序那样。二维数组定义中常见的错误是把行、列用一个方括号括起来,例如:int a3,4; 2二维数组元素的引用 和一维数组元素的引用一样,二维数组元素也是通过数组名和下标来引用的,只是
26、这里需要两个下标,如,a21,b14-i。具有两个下标的二维数组元素相当于一个普通变量,可以作为赋值表达式的左值使用,例如:a22=b11*2;b11不需写成(b11),因为下标运算符 具有最高的优先级。 只有一个下标的二维数组“元素”不能作为赋值语句的左值使用,因为这时它不是变量,它代表的是一维数组的首地址,而地址是个常量。 在引用二维数组时,最大的行、列下标都应比定义的值少1。如对于int a34;就不能出现a04,a14,a24,a34,a33,a32,a31,a30这样,的元素引用。 要引用二维数组的全部元素,即要遍历二维数组,通常应使用二层嵌套的for循环:外层对行进行循环,内层对列
27、进行循环。其格式一般为: for(i=0;i=行数-1;i+) for(j=0;j=列数-1;j+) aij 3二维数组变量的初始化 二维数组同样存在初始化的问题。二维数组的初始化有以下四种形式:,(1)按行依次对二维数组赋初值。例如: static int a34=1,2,3,4,5,6,7,8,9,10,11,12; (2)将所有数据写在一个花括号内,按数组排列顺序对各数组元素赋初值。例如: static int a34=1,2,3,4,5,6,7,8,9,10,11,12; (3)同一维数组一样,可以对部分元素显式赋初值。例如: static int a34=1,2,3; 它的作用只对各
28、行第一列的元素赋初值,其余元素值自动为,0,故相当于: static int a34=1,0,0,2,0,0,3,0,0; 思考题:“static int a34=1, ,5,6;”的含义是什么? (4)若对全部元素显式赋初值,则数组第一维的元素个数在说明时可以不指定,但第二维的元素个数仍然不能缺省。例如: static int a4=1,2,3,4,5,6,7,8; 6.2.4 实例验证,以下程序用来实现二维数组的应用。通过该程序熟悉二维数组的定义以及数组元素的初始化、引用。 1范例一 任务:定义一个二维数组,求出最大值以及其所在的行号和列号。 源程序: #include stdio.h m
29、ain() ,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=%d,row=%d,colum=%dn, max,row,colum); 输出结果: max=10,row=2,colum=1 程序说明:上述程序首先定义一个34行的二维数组,对数组赋初值。再假定第一行的第一个元素为当前行的最大值,依次与本行其余元素比较,若有元素的值大于当前的最大值,则记下当前元素所在的行号和列号,直至在每一,行中找完
30、为止,最后输出当前的最大值。 2范例二 任务:打印出以下形式的杨辉三角形。,程序分析: (1)可以将杨辉三角形的值放在一个方形矩阵的下半三角中,如果需打印7行杨辉三角形,应该定义等于或大于77的方形矩阵,只是矩阵的上半部和其余部分并不使用。 (2)杨辉三角形的特点如下: 1)第0列和对角线上的元素都为1。 2)除第0列和对角线上的元素以外,其他元素的值均为前一行上的同列元素和前一列元素之和。,源程序: #include stdio.h void main() int s77; int i,j; for(i=0;i7;i+) sii=1;si0=1;,for(i=2;i7;i+) for(j=1
31、;ji;j+) sij=si-1j-1+si-1j; printf(杨辉三角形:n); for(i=0;i7;i+) for(j=0;j=i;j+) printf(%4d,sij); printf(n); , 输出结果:,6.3 字符数组与字符串,6.3.1 相关知识 前面已经介绍了一维和二维数组的基础理论和基本应用。但是C语言本身并没有设置一种类型来定义字符串变量,字符串的存储完全依赖于字符数组,但字符数组又不等于字符串变量。 6.3.2 程序范例 通过下例程序学习字符数组与字符串。 1范例一 任务:输入一个字符串,然后以反序输出。,源程序: #include #include main()
32、 char c20; int i, j; i=0; printf(Input a string:n); scanf(%c,while(ci!= n) ,输出结果: Input a string: characters The reverse of string: sretcarahc; 2范例二 任务:将二维字符数组初始化,并在屏幕上输出。 源程序: #include ,#include main() int i; char name59= zhao, qian, sun, li, wang; for(i=0;i5;i+) printf(%st, namei); /*namei代表该行数组元素
33、的首地址*/ getchar(); ,运行输出结果: zhao qian sun li wang 6.3.3 知识归纳 1字符数组的定义和基本操作 (1)字符数组的定义形式和初始化。 字符数组是数组元素类型为字符的数组,字符数组中的每一个元素均为字符。它的定义形式如下: char 例如:char c10;,该语句说明c是一个含有10个字符型数据的字符数组。它和一般数组的初始化一样,可以在定义时赋初值。 字符数组的长度可用初值来确定,如: char str=a, b, c, d; 编译程序,可以计算出字符数组str的长度为4。 注意:如果花括号中提供的初值个数(即字符个数)大于数组长度,则作语法
34、错误处理。如果初值个数小于数组长度,则只将这些字符赋给数组中前面那些元素,其余的元素自动定为空字符(即0)。如: char c5= a, b, c, d;,则c4自动赋为0。 (2)字符数组的输入。字符数组有三种输入方法:赋值输入法、格式控制输入法和用gets函数输入法。 1)赋值输入法:是通过对数组变量赋初值的方法使数组元素具有值。赋初值时,既可以逐字符地赋值,也可以以字符串的形式赋值。如: char c110,c220; char c3=a, b, c, d; char c4=abcd;,2)格式控制输入法中使用的格式控制符是“%s”,例如对上面定义的数组,可以用下列语句输入: scanf
35、(%s,c1); 因为c1代表数组的首地址,所以在读的时候,c1前不应该再加取地址运算符“ 习惯上省略花括号,简写成: char str10= string!; 在这里,由于string是字符串常量,系统自动在最后加入0,所以不必人为加入。 还可以用以下形式进行定义:,char str=string; 系统将按字符串中实际的字符个数来定义数组的大小。 2)在执行过程中给一维字符数组赋值。例如: char s20; scanf(%s,s); printf(%s,s); 其中,scanf()函数中的输入项s是数组名。从键盘输入的字符串应短于已定义的字符数组的长度。 3常用的字符串处理函数,C语言中
36、没有提供对字符串进行整体操作的运算符,但提供了很多有关字符串操作的库函数。下面介绍几种包含在头文件中的常用作字符串处理函数的库函数。 (1)字符串复制(拷贝)函数strcpy()。 调用的形式如下: strcpy(s1,s2) 此函数用来把s2所指字符串(源)的内容复制到s1所指存储空间(目的)中,函数返回s1的值,即目的串的首地址。 例如:,static char str110,str2=China; strcpy(str1,str2); 执行后,str1的状态如图6-5所示。 China00000图6-5 数组strl10示意图 (2)字符串连接函数strcat()。 调用形式如下: st
37、rcat(s1,s2) 该函数将s2所指字符串的内容连接到s1所指的字符串后面,并自动覆盖s1串尾的0, 函数返回s1的地址值。,注意:s1所指的字符串应有足够的空间容纳两串合并后的内容。 例如: static char str130=People; static char str2=China; printf(%s,strcat(str1,str2); 输出结果如下: PeopleChina (3)求字符串长度函数strlen()。,strlen()函数的调用形式如下: strlen(s) 此函数计算出以s为起始地址的字符串的长度,并作为函数的返回值。这一长度不包括串尾的结束标志0。例如:
38、char c10=Boat; printf(%d, strlen(c); 输出结果为4。 (4)字符串的比较函数strcmp()。 调用形式如下:,strcmp(字符串1,字符串2) strcmp函数用于比较两个字符串的大小,比较时对两个字符串自左至右逐个比较(按ASCII码值大小比较),直到出现不同的字符或遇到0为止。比较结果由函数值返回: 1)若字符串1=字符串2,函数值为0。 2)若字符串1字符串2,函数值是正整数,为两个字符中第一个不同字符的ASCII码的差值。在字符串比较时,字符结束符0也参加比较,下同。 3)若字符串1字符串2,函数值是负整数,为两字符串中第,一个不同字符的ASCII码的差值。 例如: printf(%d, strcmp(Book,Boat); 的输出结果为14。 (5)gets(字符数组)。 gets()函数用于从键盘输入一个字符串到字符数组中,并得到一个返回值,该函数值是字符数组的首地址。此函数与用scanf()的%s的格式化输入稍有差别,接收的字符串可以包含空格。,(6)puts(字符数组)。 puts函数用于将一个字符串输出到终端上,它的功能与printf()函数的%s的功能基本相同。由于printf()可以同时输出
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年山东省泰安市电梯作业特种设备安全管理人员A测试题(附答案)
- 2026年湖南省岳阳市中考一模物理试题附答案
- 人教版一年级上册数学第五单元20以内的进位加法全课教学设计
- 2025年河北省沙河市高三历史上册期末考试自测卷及完整答案(历年真题)
- 2025年湖北省恩施市高一历史上册期末考试模拟卷含答案【A卷】
- 2025年江苏省新沂市高三历史上册期末考试测试卷及完整答案(名校卷)
- 2026八股文数据分析面试题及答案
- 2026安装投标岗位面试题及答案
- 玻璃钢制品工岗前安全技能测试考核试卷含答案
- 电力电容器及其装置制造工操作技能评优考核试卷含答案
- 国家能源投资集团有限责任公司高校毕业生招聘考试真题2025
- 2025年山东德州市初二学业水平地理生物会考试题题库(答案+解析)
- 第2课《周总理你在哪里》教学设计 2026-2027学年统编版语文九年级上册
- 2026年监理工程师工作实务手册
- 2026年北京市朝阳区高三二模英语试卷(含答案)
- 中交集团国考云题库
- 雨课堂学堂在线学堂云《Reading and Writing in English(清华)》单元测试考核答案
- 快递员职业技能培训标准
- 11.2《五代史+伶官传序》课件+2025-2026学年统编版高二语文选择性必修中册
- 2025年广东省第一次普通高中学业水平合格性考试(春季高考)数学试题(含答案详解)
- 民办学校教师考核标准与实施细则
评论
0/150
提交评论