ImageVerifierCode 换一换
格式:DOC , 页数:24 ,大小:59.50KB ,
资源ID:498001      下载积分:2000 积分
快捷下载
登录下载
邮箱/手机:
温馨提示:
如需开发票,请勿充值!快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝扫码支付 微信扫码支付   
注意:如需开发票,请勿充值!
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【http://www.mydoc123.com/d-498001.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文([计算机类试卷]国家二级C语言机试(函数和数组)模拟试卷6及答案与解析.doc)为本站会员(testyield361)主动上传,麦多课文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知麦多课文库(发送邮件至master@mydoc123.com或直接QQ联系客服),我们立即给予删除!

[计算机类试卷]国家二级C语言机试(函数和数组)模拟试卷6及答案与解析.doc

1、国家二级 C语言机试(函数和数组)模拟试卷 6及答案与解析 一、选择题 1 以下叙述中正确的是 ( A)用户自己定义的函数只能调用库函数 ( B)不同函数的形式参数不能使用相同名称的标识符 ( C)在 C语言的函数内部,可以定义局部嵌套函数 ( D)实用的 C语言源程序总是由一个或多个函数组成 2 有定义语句: char*s1=OK, *s2=ok;以下选项中,能够输出 K的语句是 ( A) if(strcmp(s1, s2)!=0)puts(s1); ( B) if(strcmp(s1, s2)!=0)puts(s2); ( C) if(strcmp(s1, s2)=1)puts(s1);

2、( D) if(strcmp(s1, s2)=0)puts(s1); 3 有以下程序 #include stdio h intfun(inta, intb) if(b=0)returna;、 elsereturn(fun(-a, -b); main( ) printf( dn, fun(4, 2); 程序的运行结果是 ( A) 1 ( B) 2 ( C) 3 ( D) 4 4 以下叙述中 正确的是 ( A)函数名代表该函数的入口地址 ( B)所有函数均不能接受函数名作为实参传入 ( C)函数体中的语句不能出现对自己的调用 ( D)如果函数带有参数,就不能调用自己 5 已定义以下函数 intfu

3、n(int*P)retum*p; )fun函数返回值是 ( A)不确定的值 ( B)一个整数 ( C)形参 P中存放的值 ( D)形参 P的地址值 6 有以下程序 #include stdio h intflintx, inty) retum(y-x)*x); main( ) inta=3, b=4, c=5, d; d=flfla, b), f(a, c); printf( dn, d); 程序运行后的输出结果是 ( A) 10 ( B) 8 ( C) 9 ( D) 7 7 有以下程序 yoidfun(inta, intb, intc) a=b; b=c; c=a; main( ) inta

4、=10, b=20, c=30; fun(a, b, c); printf( d, d, dn, C, b, a); ) 程序运行后的输出结果是 ( A) 10, 20, 30 ( B) 20, 30, 10 ( C) 30, 20, 10 ( D) 0, 0, 0 8 有以下程序 #include stdio h intfun(inta, intb) retuma+b; main( ) intx=6, y=7, z=8, r; r=fun(fun(x, y), Z-); printf( dn, r); ) 程序运行后的输出结果是 ( A) 15 ( B) 21 ( C) 20 ( D) 31

5、 9 有以下程序 #include stdio h intflintx) inty; iflx=011x=1)return(3); y=x*x-f(x-2); returny; main( ) intz; z=f(3); printf( dn, z); 程序的运行结果是 ( A) 9 ( B) 0 ( C) 6 ( D) 8 10 有以下程序 fun(intx) intp; if(x=0x=1)return(3); p=x-fun(x-2); returnp; main( ) printf( n, fun(7); ) 执行后的输出结果是 ( A) 3 ( B) 7 ( C) 0 ( D) 2

6、11 以下叙述中正确的是 ( A)对于变量而言, 定义 和 说明 这两个词实际上是同一个意思 ( B)在复合语句中不能定义变量 ( C)全局变量的存储类别可以是静态类 ( D)函数的形式参数不属于局部变量 12 在一个 C源程序文件中所定义的全局变量,其作用域为 ( A)由具体定义位置和 extern说明来决定范围 ( B)所在程序的全部范围 ( C)所在函数的全部范围 ( D)所在文件的全部范围 13 有以下程序 #include stdio h func(intn) staticintnum=1; num=num+n; printf( d, num); yoidmain( ) func(3

7、); func(4); printf(n); ) 程序运行后的输出是 ( A) 45 ( B) 35 ( C) 48 ( D) 34 14 有以下程序 #include stdio h intfun( ) staticintx=1; x*=2; retumx; main( ) inti, s=1; for(i=1; i =3; i+) s*=fun( ); printf( dn, s); ) 程序运行后的输出结果是 ( A) 0 ( B) 10 ( C) 30 ( D) 64 15 有以下程序 intfun(intx, intn) staticintsum=0, i; for(i=0; i n

8、; i+)sum+=xi; retumsum; main( ) inta-1, 2, 3, 4, 5), b=6, 7, 8, 9), s=0; s=fun(a, 5)+fun(b, 4); printf( dn, s); ( A) 50 ( B) 45 ( C) 60 ( D) 55 16 有下列程序: inta=4; intflintn) intt=0; staticinta=5; if(n 2)inta=6; t+=a+; elseinta=7; t+=a+; returnt+a+; main( ) ints=a, i=0; for(; i 2; i+)s+=f(i); printfl

9、dn, s); 程序运行后的输出结果是 ( A) 28 ( B) 24 ( C) 32 ( D) 36 17 下列定义数组的语句中,正确的是 ( A) intN=10; intxN; ( B) #defineN10intxN; ( C) intx0 10; ( D) intx; 18 有下列程序: main( ) inti, s=0, t=1, 2, 3, 4, 5, 6, 7, 8, 9; for(i=0; i 9; i+=2)s+=*(t+i); printf( dn, s); 程序执行后的输出结果是 ( A) 20 ( B) 45 ( C) 36 ( D) 25 19 VN程序中函数 f

10、的功能是:当 flag为 1时,进行由小到大排序;当 flag为 0时,进行由大到小排序。 yoidf(intb, intn, intflag) inti,j, t; for(i=0; i n-1; i+) for(j=i+lj nj+) if(flag?bi bj: bi bD) t=bi; bi=bj; bD=t; ) main( ) inta10=5, 4, 3, 2, 1, 6, 7, 8, 9, 10, i; f( a2, 5, 0); f(a, 5, 1); for(i=0; i 10; i+、 ) printf( d, , ai); 程序运行后的输出结果是 ( A) 1, 2,

11、3, 4, 5, 6, 7, 8, 9, 10, ( B) 3,4, 5, 6, 7, 2, 1, 8, 9, 10, ( C) 5,4, 3, 2, 1, 6, 7, 8, 9, 10, ( D) 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 20 有以下程序 #include stdio h main( ) intc6: 10, 20, 30, 40, 50, 60, *p, *s; P=c; S= c5; printf( dn, s-P); ) 程序运行后的输出结果是 ( A) 50 ( B) 6 ( C) 5 ( D) 60 21 如果定义 floata10, x;则以下

12、叙述中正确的是 ( A)表达式 a+1是非法的 ( B)语句 a= x;是非法的 ( C)三个表达式 a1、 *(a+1)、 * a1表示的意思完全不同 ( D)表达式 * a1是非法的,应该写成 *( (a1) 22 若有以下程序 #include stdio h main( ) inti, j=0; chara=Howareyou!, b10; for(i=0; ai; i+) if(ai=)bj+=ai+1; bj=0; printf( sn, b); 则程序的输出结果是 ( A) Howareyou ( B) Hay! ( C) Howareyou! ( D) ay 23 以下数组定义

13、中错误的是 ( A) intx3=0); ( B) intx2113=1, 2, 3, 4), 5,6; ( C) intx3: 1, 2, 3), 4, 5, 6); ( D) intx23=l, 2, 3, 4, 5, 6; 24 以下定义数组的语句中错误 的是 ( A) intnum3=1, 2), 3, 4, 5, 6; ( B) intnum=1,2, 3, 4, 5, 6); ( C) intnum4: l, 2, 3, 4, 5, 6); ( D) intnum24=1, 2), 3, 4), 5,6; 25 有下列程序: main( ) inta44=1,4, 3, 2, 8,

14、6, 5, 7, 3, 7, 2, 5, 4, 8, 6, 1, i,j, k,t; for(i=0; i 4; i+) for(j=0; j 3; j+) for(k=j+1; k 4; k+) if (aji aki)t=aDi; aji=aki; aki=t; )/*按列排序 */ for(i=0; i 4; i+)printf( d, , aii); 程序运行后的输出结果是 ( A) 8, 7, 3, 1, ( B) 1, 6, 5, 7, ( C) 4, 7, 5, 2, ( D) 1, 6, 2, 1 26 若有定义: intw35;则以下不能正确表示该数组元素的表达式是 ( A)

15、 *(*w+3) ( B) *(*(w+1) ( C) *(w+1)4 ( D) *( w00+1) 27 设有定义: intx23;则以下关于二维数组 x的叙述错误的是 ( A)数组 x可以看作是由 x0和 x1两个元素组成的一维数组 ( B)可以用 x0=0;的形式为数组所有元素赋初值 0 ( C)元素 x0可看作是由 3个整型元素组成的一维数组 ( D) x0和 x1是数组名,分别代表一个地址常量 28 有以下程序 #include stdio h intfun(chars) char*P=s: while(*P!=0)p+; return(p-s); main( ) printf( d

16、n, fun(OabcDEF); 程序运行后的输出结果是 ( A) 6 ( B) 7 ( C) 1 ( D) 0 29 以下叙述中正确的是 ( A) charca35=A, B, CCC);是不合语法的 ( B)字符串数组,是指数组中的每个元素都是一个存放字符串的一维数组 ( C) charca5=tA, BB, CCC;是不合语法的 ( D) char*ca3=A, BB, CCC);是不合语法的 30 以下叙述中正确的是 ( A)语句 charstr10=string!;和 charstr10=string!;并不等价 ( B)对于一维字符数组,不能使用字符串常量来赋初值 ( C)对于字符

17、串常量 string!,系统已自动在最后加入了 0字符,表示串结尾 ( D)在语句 charstr1=string!;中,数组 str的大小等于字符串的长度 31 以下选项中,没有编译错误的是 ( A) charstr3=d, e, b, u, g, 0; ( B) charstrl5=pass, str26; str2=str1; ( C) charname10; name=china: ( D) charstr4; str4=helloworld; 32 设有定义: charp=1, 2, 3), *cq=p;以下不能计算出一个 char型数据所占字节数的表达式是 ( A) sizeof(

18、p) ( B) sizeof(char) ( C) sizeof(q) ( D) sizeof(p0) 33 以下不能将 S所指字符串正确复制到 t所指存储空间的是 ( A) for(i=0; ti=si; i+); ( B) while(*t=*s)t+; s+; ( C) for(i=0, j=0; ti+=sj+; ); ( D) do*t+=*s+; while(*S); 34 有以下程序 #include stdio h yoidmain( ) chars: 012xy; inti,n=0; for(i=0; si!=0; i+) if(si =a si =Z)n+; printf(

19、 dn, n); 程序运行后的输出结果 ( A) 0 ( B) 3 ( C) 5 ( D) 2 35 若要求从键盘读入含有空格字符的字符串,应使用函数 ( A) getc( ) ( B) gets( ) ( C) getchar( ) ( D) scanf( ) 国家二级 C语言机试(函数和数组)模拟试卷 6答案与解析 一、选择题 1 【正确答案】 D 【试 题解析】 一个 C语言源程序可以由一个或多个源文件组成,每个源文件可由一个或多个函数组成,这些函数可以是自定义函数,也可以是库函数,各个函数之间没有土从关系,不能嵌套定义函数。 【知识模块】 函数和数组 2 【正确答案】 A 【试题解析】

20、 字符串比较函数 strcmp的功能是对 s1和 s2所指字符串进行比较。如果 s1 s2,返回负数,如果 s1=s2,返回 0,如粜 s1 s2,返回正数,所以对于本题来说,能够输出 ”OK”的语句是选项 A所指的语句。 【知识模块】 函数和数组 3 【正确答案】 B 【试题解析】 由程序可知函数 fun(inta, intb)是一个递归函数。所以当主函数中调用 (4 , 2)时,其执行过程如下: fun(4, 2)- fun(3, 1)- fun(2, 0),其返回值为 2。 【知识模块】 函数和数组 4 【正确答案】 A 【试题解析】 函数形、实参传递的时候,要求对应位置类型一致即可,如

21、果实参为函数名,可以定义相应的形参为指向函数的指针变量来获得该函数的入口地址,因此选项 B错误的,在 C语言中允许进行递归调用,即自己调用自己,选项C和选项 D是 错误的。 【知识模块】 函数和数组 5 【正确答案】 B 【试题解析】 由函数 intfun(int=p)retump; 的定义可知,返回值为整型指针变量 p所指向的数据。 【知识模块】 函数和数组 6 【正确答案】 C 【试题解析】 本题考查函数的嵌套调用。首先计算 f(a, b)与 f(a, C, f(a,b)=(b a)*a=3, f(a, C=(c a)*a=6,然后计算 f(3, 6)=(6-3)*3=9。 【知识模块】

22、函数和数组 7 【正确答案】 C 【试题解析】 函数 fun中采用了变量作为参数,那么参数传递以后,形参 a,b, c的变化对于实参 a, b, c是没有影响的,因此主函数中 a,b, c的值经过 fun调用以后,值没有变化。 【知识模块】 函数和数组 8 【正确答案】 B 【试题解析】 本题考查了函数的调用,函数 fun功能为求两个数据的和。主函数中表达式 r=fun(fun(x, y), z-),首先计算内层调用 fun(x,y),计算结果为 13,然后外层调用 fun(13, 8),结果为 21。 【知识模块】 函数和数组 9 【正确答案】 C 【 试题解析】 主函数调用 f( )函数,

23、将实参 3传递给 x,进行 if条件语句的判断不成立,接着执行 y=3+3 f(1),再执行 f(1),而 f(1)满足 if条件语句,所以 f(1)的值为 3,代入 y=3*3。 f(11=9-3=6。 【知识模块】 函数和数组 10 【正确答案】 D 【试题解析】 因为在函数 fun(intx)中,如果参数 x等于 0或 1时,返回值 3。否则 p=x=fun(x 2)这是一个递归函数,所以在主函数调用 fun(7)时,其过程为: ”fun(7)=7=fun(5)=7=(5=fun(3)=7=(5=(3一fun(1)=7 (5 (3 3)=7 5=2”,所以最后的输出结果为 2。 【知识模

24、块】 函数和数组 11 【正确答案】 C 【试题解析】 用 static说明符说明全局变量时,此变量可称作静态全局变量。静态全局变量只限于本编译单位使用,不能被其他编译单位所引用。在一个函数内部定义的变量 (包括形参 )是局部变量,它只在本函数范围内有效。不同函数中可以使用相同名字的局部变量,它们代表不同的对象,互不影响。在函数内部复合语句中也可以定义变量,这些变量都是局部变量,只在本 复合语句中有效。 【知识模块】 函数和数组 12 【正确答案】 A 【试题解析】 全局变量是在函数外部任意位置上定义的变量,它的作用域是从变量定义的位置开始,到整个源文件结束止。在同一编译单位内用 extem说

25、明符扩展全局变量的作用域 (当全局变量定义在后,引用它的函数在前时,应该在引用它的函数中用 exterll对此全局变量进行说明,以便通知编译程序:该变量是一个已在外部定义了的全局变量,已经分配了存储单元,不需要再为它分配存储单元。这时全局变量的作用域从 exterll说明处起,延伸到该函数末尾 )。当一个程序由多个编译单位构成,并且在每个文件中均需要引用同一个全局变量,这时只在其中一个文件中定义所有的全局变量,而在其他用到这些全局变量的文什中用 extem对这些变量进行说明。 【知识模块】 函数和数组 13 【正确答案】 C 【试题解析】 存函数 func(intn)中定义了局部静态变量 hu

26、m,其初始值等于1,所以在主函数中执行 func(3),输出 4,此时静态变量 num的值等于 4,当退出函数 func(31时,其值不会丢失,所以当在执行。 func(4)时,输出 8。 【知识模块】 函数和数组 14 【正确答案】 D 【试题解析】 本题考查了静态局部变量,该局部变量的值在函数调用结束后如果不消失而保留原值。函数 fun的功能返回 2的乘方,主函数 fun函数调用 3次,因此第一次 s累乘 2,第二次累乘 4,第三次累乘 8,即为 2*4*8,值为 64。 【知识模块】 函数和数组 15 【正确答案】 C 【试题解析】 在函数 intfun(intx, intn)的定义中,

27、变量 sum使川 rstatic修饰符,这说明了变量 sum为一个静态局部变量。由于在整个程序运行期问,静态局部变量 在内存中的静态存储区中占据着永久的存储单元。即使退出函数之后,下次再进入该函数时,静态局部变量继续使用原来存储单元中原来的值。函数intfun(intxintn)的功能是求出数组各个元素的和。所以在主函数中,调用函数Fun(a, 5)后,变量 sum=1+2+3+4+5=15,当再次调用 Fun(b, 4)后,变量sum=15+6+7+8+9=45,所以 s=15+45=60。 【知识模块】 函数和数组 16 【正确答案】 A 【试题解析】 程序中定义了全局整型变量 a=4。在

28、 intf(intn)函 数中定义了局部静态整型变量并进行了初始化即 staticinta=5。在 jntffintn)函数中对 n是否是偶数进行判断,如果 n是奇数,则函数的返回值为 11,局部静态整型变量 a=6;如果 n是偶数,则函数的返回值为 12,局部静态整型变量 a=6。所以在 main( )函数中循环首先执行 s+=f(O)语句,而 f(0)返回值 12,所以第一次循环结束 s的值等于4+12=16;第二次开始执行 f(1)时,在 f(1)中执行 if(n 2)inta=6; t+=a+; 和retumt+a+;这两条语句,这时 t=6, a=6(静态局部变量第一次循环后其值加

29、1值不释放,执行第二次循环量,其值仍有效 ),所以 f(1)的返回值等于 12。再在主函数中执行 s+=f(1)语句,即 16+12=28。 【知识模块】 函数和数组 17 【正确答案】 B 【试题解析】 数组说明的一般形式为:类型说明符数组名 f常量表达式 1;其中类型说明符可以是任一种基本数据类型或构造数据类型,数组名是定义的数组标识符。常量表达式表示数据元素的个数,也就是数组的长度,必须是整型常量。 【知识模块】 函数和数组 18 【正确答案】 D 【 试题解析】 本题在主函数中定义了一维整型数组 t=l, 2, 3, 4, 5, 6, 7,8, 9;然后在 for循环语句中自变量 i从

30、 0开始,每次自加 2,执行 s+=+(t+i)语句,因为 C语言规定数组名代表数组的首地址,也就是第一个元素的地址。因此*(t+i)代表数组的第 i+1个元素。所以程序运行的结果是 1+3+5+7+9=25,即变量 s的值等于 25。 【知识模块】 函数和数组 19 【正确答案】 B 【试题解析】 主函数中进行了两次 f函数的调用。第一次传递给形参数组 b的地址为元素 a2的地址, n接 收数据位 5,因此数组 b中元素为 3, 2, 1, 6, 7,此时 flag的值为 0,进行由大到小排序,而数组 b和实参数组 a共用一段存储空间,第一次调用结束以后,数组 a的值为 5,4, 7,6,3

31、,2, 1, 8,9, 10。第二次调用 f函数,形参数组接收实参数组 a的首地址,取 5个元素,由小到大排序,调用结束以后,数组 a的值为 3, 4, 5,6, 7,2, l, 8,9, 10。 【知识模块】 函数和数组 20 【正确答案】 C 【试题解析】 主函数中指针变量 p指向数组 c, s保存了数组最后一个元素的地址,那么 s-D为两个地址之 间的元素差 5。 【知识模块】 函数和数组 21 【正确答案】 B 【试题解析】 定义语句 floata10, x;以后,数组名 a表示了数组元素的首地址,是常量在程序中不能更改,因此选项 A是的描述是正确的。而指向运算符和取址运算符,是互反运

32、算符优先级相同, * a1和 *( a1)含义相同。 【知识模块】 函数和数组 22 【正确答案】 D 【试题解析】 主函数中利用 for循环访问字符串 a的每一个字符,判断当前字符是否为空格,如果是空格则保存该空格后面的一个字符存放到字符数 组 b中。在字符串 Howareyou!”中,第一个空格后面字符为 a,第二个空格后面字符为 y。 【知识模块】 函数和数组 23 【正确答案】 B 【试题解析】 二维数组的初始化有以下几种形式: 分行进行初始化; 不分行的初始化; 部分数组元素初始化; 省略第一维的定义,不省略第二维的定义。在选项 A中赋值号左边定义了一个 3行 2列的二维数组,而右边

33、用 2行 3列的数字进行赋初值。所以出现了边界的越界溢出而出错。 【知识模块】 函数和数组 24 【正确答案】 D 【试题解析】 在选项 D的数组定义中,赋值号左边定义了一个 2行 4列的二维数组,而在右边定义了一个 3行 2列的二维数组。 【知识模块】 函数和数组 25 【正确答案】 B 【试题解析】 最外层的 for语句的自变量 i是列下标,而内部的两个 for语句的白变量 j和 k是行卜标。所以由程序段可知,这是利用三重循环对二维数组 a44的元素按列从小到大进行排序,所以最后排完序的结果为 a44=(1, 4, 2, 1,3,6,3,2, 4, 7,5, 5), 8, 8, 6, 7,

34、最后一个 for语句的功能是输出数组a44主对角线上的元素,因而输出为 1, 6,5, 7。 【知识模块】 函数和数组 26 【正确答案】 C 【试题解析】 在 C语言中,二维数组的名字表示的是二维数组的地址,对于二维数组 intw35,可以认为 w为一个一维数组,含有 3个元素,而每个元素为一个含有 5个元素的一维数组。而 (w+1)为一个含有两个元素的一维数组,首先和(w+1)4结合非法, 4超出了二维数组的边界,取值也就是非法的了。 【知识模块】 函数和数组 27 【正确答案】 B 【试题解析】 二维数组的元 素在内存中占一系列连续的存储单元。数组元素在内存中的排列顺序是先存放第 0行的

35、元素,再存放第 1行的元素 称这种存放顺序为按行存放。可以把一个二维数组看成是一个一维数组,每个数组元素又是包含有若干个元素的一维数组。另外在给二维数组赋初值时可以不用含花括号对。例如, inta43=1, 2, 4, 5;在编译时,系统将按 a数组元素在内存中排列的顺序,将花括号内的数据一一对应地赋给各个元素,若数据不足,系统将给后面的元素自动补初值 0。以上将给 a数组第一行的元素和第二行的第一个元素依次赋予 1、 2、 4、 5,其他元 素的初值都为 0。 【知识模块】 函数和数组 28 【正确答案】 B 【试题解析】 函数 fun的主要功能是计算字符串中实际字符的个数,因此主函数中调用

36、 fun得到结果为 7。 【知识模块】 函数和数组 29 【正确答案】 B 【试题解析】 字符串数组,也就是二维字符数组,其中每个元素为一个字符串,选项 B的说法正确。选项 A和 C对于 ca的定义是正确的。选项 D定义一个指针数组,可以保存多个字符串的首地址。 【知识模块】 函数和数组 30 【正确答案】 C 【试题解析】 在 C语言中,字符串是借助于字符型一维数组来存放的,可以借助在定义时初始化以及输入来把字符串存入数组,并规定以字符 0作为 ”字符串结束标志 ”。 0是一个转义字符,称为空值,它的 ASC 码值为 0。 0作为标志占用存储空间,但不计入字符串的实际长度。在 C语言中,系统

37、在每个字符串的最后自动加入一个字符 (0)作为字符串的结束标志。 【知识模块】 函数和数组 31 【正确答案】 A 【试题解析】 选项 A是定义了字符数组 str3,并对其赋初值。选项 B中语句str2=strl非法,字符数 组不能直接赋值。选项 C, D和选项 B一致。 【知识模块】 函数和数组 32 【正确答案】 A 【试题解析】 选项 A计算的是 p字符数组首地址所占的内存字节数,返回值数组中所有元素占有的空间。 *q和 p0分别表示数组 p中下标为 0的字符元素,选项 B和 D都可以计算 char型数据占有的字节数。 【知识模块】 函数和数组 33 【正确答案】 D 【试题解析】 在选

38、项 D中,不能把 s所指字符串的结束标志符赋给字符串 t。 【知识模块】 函数和数组 34 【正确答案】 D 【 试题解析】 这段程序的功能求出字符串 s中字符在小写字符 a到 z之间字符的个数。在程序中字符串 s的值为 ”012xy”,所以在字符串 s中符合要求的字符的个数等于 2。 【知识模块】 函数和数组 35 【正确答案】 B 【试题解析】 scanf(、 )语句中用 ”空格 ”间隔不同的字符串,空格将被全部忽略掉,所以用 scanf( )函数不能输入空格; getchar( )函数用于输入字符,其调用形式为: ch=getchar( ), getchar( )函数从终端读入一个字符作为函数值,把读入的一个字符赋给变量 ch。在输入时,空格、回车符都将用于字符读入,而且只有在用户敲入 Enter键时,读入才开始执行。 gets( )函数的调用形式为:gets(stLadr, ),其中 str_adr是存放输入字符串的起始地址,可以是字符数组名、字符数组元素的地址或字符指针变量。 gets( )函数用来从终端键盘读入字符串 (包括空格符 ),直到读入一个换行符为止。 getc( )函数的调用形式为: ch=getc(pf)其中 pf是文件指针。函数的功能是从 pf指定的文件中读入一个字符,并把它作为函数值返回 。 【知识模块】 函数和数组

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1