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

上传人:testyield361 文档编号:498000 上传时间:2018-11-30 格式:DOC 页数:29 大小:73KB
下载 相关 举报
[计算机类试卷]国家二级C语言机试(函数和数组)模拟试卷5及答案与解析.doc_第1页
第1页 / 共29页
[计算机类试卷]国家二级C语言机试(函数和数组)模拟试卷5及答案与解析.doc_第2页
第2页 / 共29页
[计算机类试卷]国家二级C语言机试(函数和数组)模拟试卷5及答案与解析.doc_第3页
第3页 / 共29页
[计算机类试卷]国家二级C语言机试(函数和数组)模拟试卷5及答案与解析.doc_第4页
第4页 / 共29页
[计算机类试卷]国家二级C语言机试(函数和数组)模拟试卷5及答案与解析.doc_第5页
第5页 / 共29页
点击查看更多>>
资源描述

1、国家二级 C语言机试(函数和数组)模拟试卷 5及答案与解析 一、选择题 1 有以下程序 (strcpy为字符串复制函数, strcat为字符串连接函数 ) #include stdio h #include string-h main( ) chara10=abc, b10=012, c10=xyz; strcpy(a+1, b+2); puts(strcat(a, c+1); 程序运行后的输出结果是 ( A) bc2yz ( B) a2yz ( C) a12xyz ( D) 12yz 2 有定义语句: chars10=123456700;则 strlen(s)的值是 ( A) 8 ( B)

2、7 ( C) 9 ( D) 10 3 有以下程序,程序中库函数 islower(ch)用以判断 ch中的字 *是否为小写字 * #include stdio h #include ctype h yoidfun(char*p) inti=0; while(pi) iffpi= islower(pi-1)pi-1=pi-1=pi-1-a+A; i+: main( ) chars1100=abcdEFG!; fun(s1); printf( sn, s1); 程序运行后的输出结果是 ( A) abcdEFg! ( B) abcdEFG! ( C) abcdEFg! ( D) abcDEFG! 4

3、下列选项中,能够满足 只要字符串 s1等于字符串 s2,则执行 ST要求的是 ( A) if(s1=s2)ST; ( B) if(strcpy(s1, s2)=1)ST; ( C) if(strcmp(s2, s1)=0)ST; ( D) if(s1-s2=0)ST; 5 以下叙述中正确的是 ( A)函数既可以直接调用自己,也可以间接调用自己 ( B)任何情况下都不能用函数名作为实参 ( C)函数的递归调用不需要额外开销,所以效率很高 ( D)简单递归不需要明确的结束递归的条件 6 以下叙述中错误的是 ( A)用户定义的函数中可以没有 return语句 ( B)用户定义的函数中若没有 retu

4、m语句,则应当定义函数为 yoid类型 ( C)用户定义的函数中可以有多个 retum语句,以便可以调用一次返回多个函数值 ( D)函数的 retum语句中可以没有表达式 7 有以下程序 intadd(inta, intb) return(a+b); ) main( ) intk, (*f)( ), a=5, b=10; f=add; 则以下函数调用语句错误的是 ( A) k=add(a, b); ( B) k=(*f)Ca, b); ( C) k=*f(a, b); ( D) k=fla, b); 8 若有以下函数首部 intfun(doublex10, )则下面针对此函数的函数声明语句中正

5、确的是 ( A) intfun(double, int); ( B) intfun(double*x, intn); ( C) intfun(double*, int*); ( D) intfun(doublex, int*n); 9 有以下程序 intflintx); main( ) intn=1, m; m=f(f(f(n); printf( dn, m); intflintx) returnx*2; 程序运行后的输出结果是 ( A) 1 ( B) 2 ( C) 4 ( D) 8 10 有以下程序 #include stdio h doublef(doublex); main( ) dou

6、blea: 0; inti; for(i=0; i 30; i+=10)a+=f(double)i); printf( 5 ofn, a); doublef(doublex) returnx*x+1; 程序运行后的输出结果是 ( A) 401 ( B) 500 ( C) 503 ( D) 1404 11 有以下程序 #include stdio h intflintx); main( ) inta, b=0; for(a=0; a 3; a+) b=b+f(a); putchar(A+b); intflintx) returnx*x+1; ) ( A) BCD ( B) BDI ( C) AB

7、E ( D) BCF 12 有以下程序 #include stdio h intfun(intx) intp; if(x=0x=1)return(3); p=x-fun(x-2); retum(p); ) main( ) printf( dn, fun(9); 程序运行后的输出结果是 ( A) 5 ( B) 9 ( C) 4 ( D) 7 13 以下选项中函数形参不是指针的是 ( A) fun(int p) ( B) fun(inta10) ( C) fun(int*a) ( D) fun(intP) 14 有以下程序 (strcat函数用以连接两个字符串 ) #include stdio h

8、 #include string h main( ) chara20=abcDOEFGO, b= sn; strcat(a, b); printf( sn, a); 程序运行后的输出结果是 ( A) abcDE0FG0UK ( B) abcDUK ( C) UK ( D) EFGUK 15 若有以下程序 intflinta, intn) if(n 1) intt; t=f(a, n-1); returnt an-1? t: an-1; elsereturna0; main( ) inta=8, 2, 9, 1, 3, 6, 4, 7, 5; printf( dha, f(a, 9); 则程序的

9、输出结果是 ( A) 9 ( B) 1 ( C) 8 ( D) 53 7局部变量和全局变量 16 有以下程序 intd=1; yoidfun(intP) intd=5: d+=p+; printf( d, d); ) main( ) inta=3: fun(a); d+=a+: printf( dn, d); 程序的输出结果是 ( A) 96 ( B) 94 ( C) 84 ( D) 85 17 有以下程序 yoidfun2(chara, charb) printf( c c, a, b); ) chara=A, b=B; yoidfunl( ) a=C; b=D; ) main( ) fun

10、l( ); printf( c ca, b); fun2(E, F); 程序的运行结果是 ( A) ABEF ( B) CDEF ( C) abcD ( D) CDAB3 8变量的作用域和生存期 18 有以下程序 fun(intx, inty) staticintm=0, i=2; i+=m+1; m=i+x+y; returnm; main( ) intj=1, m=1, k; k=fun(j, m); printf( d, , k); k=fun(j, m); printf( dn, k); 执行后的输出结果是 ( A) 5, 5 ( B) 5, 11 ( C) 11, 11 ( D) 1

11、1, 5 19 有以下程序 #include stdio h intflintn); main( ) inta=3, s; s=f(a); s=s+f(a); printf( dn, s); ) intflintn) staticinta=1; n+=a+: retumn; 程序运行 后的输出结果是 ( A) 9 ( B) 8 ( C) 7 ( D) 10 20 有以下程序 intf(intm) staticintn=0; n+=m; returnn; main( ) intn=0: printf( d, , f(+n); printf( dn, fin+); ) 程序运行后的输出结果是 (

12、A) 1 1 ( B) 1,2 ( C) 2, 3 ( D) 3, 3 21 有以下程序 #include stdio h yoidmain( ) inta=2, 3, 5, 4), i; for(i=0; i 4; i+) switch(i 2) case0: switch(ai 2) case0: ai+; break; case1: ai-; break; case1: ai: O; for(i=0; i 4; i+) printf( d, ai); printf(n); 程序运行后的输出结果是 ( A) 2050 ( B) 3344 ( C) 3040 ( D) 304 22 下列选项

13、中,能正确定义数组的语句是 ( A) intnum; ( B) intN=2008; intnumN; ( C) intnum0 2008; ( D) #defineN2008intnumN; 23 有以下程序 #include stdio h main( ) ints12=1,2, 3, 4, 4, 3, 2, 1, 1, 1, 2, 3), c5: O, i; for(i=0; i 12; i+)csi+; for(i=1; i 5; i+)printf( d, ci); printf(n); ( A) 4332 ( B) 2344 ( C) 1234 ( D) 1123 24 以下叙述中

14、正确的是 ( A)一条语句只能定义一个数组 ( B)数组说明符的一对方括号中只能使用整型常量,而不能使用表达式 ( C)每个数组包含一组具有同一类型的变量,这些变量在内存中占有连续的存储单元 ( D)在引用数组元素时,下标表达式可以使用浮点数 25 有以下程序 #include stdio h main( ) inta=10, 20, 30, 40, *p=a, i; for(i=0; i =3; i+)ai=*p; p+; ) printf( dn, a2); 程序运行后的输出结果是 ( A) 20 ( B) 30 ( C) 10 ( D) 40 26 若有以下程序 #include cha

15、r*a=you, b=welcome#you#to#China!; main( )inti, j=0; char*p; for(i=0; bi!=0; i+) if(*a=bi) p= bi; for(j=0; aj!=0; j+) if(aj!=*P)break; p+; if(aj=0)break; printf( sn, p); 则程序的输出结果是 ( A) #you#to#China! ( B) me#you#toChina! ( C) #China! ( D) #to#China! 27 有以下程序 #include stdio h #defineN4 yoidfun(intaN,

16、intb) inti; for(i=0; i N; i+)bi=aii-aiN-1-i; yoidmain( ) intxNN=1, 2, 3, 4), 5,6, 7, 8, 9, 10, 11, 12, 13, 14, 15,16), yN, i; fun(x, y); for(i=0; i N; i+)printf( d, , yi); printffn); 程序运行后的输出结果是 ( A) -12, -3, 0, 0, ( B) -3, -1, 1, 3, ( C) 0, 1, 2, 3, ( D) -3,-3, -3, -3 28 有下列程序: main( ) intx32=0), i

17、; for(i=0; i 3; i+)scanf( d, xi); printf( 3d 3d 3dn,x00, x01, x10); ) 若运行时输入: 246 CR,则输出结果为 ( A) 200 ( B) 240 ( C) 204 ( D) 246 29 有下列程序: main( ) inti,t3=9, 8, 7, 6, 5, 4, 3, 2, 1; for(i=0; i 3; i+) printf( d2-ii); 程序执行后的输出结果是 ( A) 753 ( B) 369 ( C) 751 ( D) 357 30 以下错误的定义语句是 ( A) intx43=1, 2, 3, 1,

18、 2, 3, 1, 2, 3, 1, 2, 3; ( B) intx3=0), 1, 1, 2, 3; ( C) intx3=1, 2, 3, 4); ( D) intx4=1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3; 31 有以下程序 #include stdio h #defineN3 yoidfun(intaN, intb) inti, j; for(i=0; i N; i+) bi=ai0; for(j=j N; j+) if(bi aij)bi=aiD; main( ) intxNN=1,2, 3, 4, 5, 6, 7, 8, 9, yN, i; fun(

19、x, y); for(i=0; i N; i+)printf( d, , yi); printf(n); ( A) 1, 3, 5, ( B) 2, 4, 8, ( C) 3, 5, 7 ( D) 3,6, 9 32 下列叙述中正确的是 ( A)两个连续的单引号 ()是合法的字符常量 ( B)可以对字符串进行关系运算 ( C)两个连续的双引号 ()是合法的字符串常量 ( D)空字符串不占用内存,其内存空间大小是 0 33 若有以下程序段 charstr412=aa, bbb, ccccc, d), *strp4; inti; for(i=0; i 4; i+)strpi=stri;不能正确引用

20、字符串的选项是 ( A) strp ( B) str0 ( C) strp3 ( D) *strp 34 以下叙述中正确的是 ( A)函数调用 strlen(s);会返回字符串 s实际占用内存的大小 (以字节为单位 ) ( B)两个字符串可以用关系运算符进行大小比较 ( C)当拼接两个字符串时,结果字符串占用的内存空间是两个原串占用空间的和 ( D) C语言本身没有提供对字符串进行整体操作的运算符 35 设有定义 charstr=Hello;则语句 printf( d d, sizeof(str), strlen(str);的输出结果是 ( A) 66 ( B) 65 ( C) 55 ( D)

21、 56 36 有以下程序 main( ) chara510=one, two,three, four,fiye); inti, j; chart; for(i=0; i 4; i+) for0=i+1; j 5; j+) if(ai0 aD0) t=ai0; ai0=aj0; aj0=t; puts(a1); 程序运行后的输出结果是 ( A) fwo ( B) owo ( C) two ( D) fix 37 有以下程序 #include stdio h #include string-h yoidmain( ) charstr20= One*World, One*Dream!), *p=st

22、r1; printf( d, , strlen(p); printf( sn, p); 程序运行后的输出结果是 ( A) 9, One*Dream! ( B) 10, One*Dream! ( C) 9, One*World ( D) 10, One*World 38 下列语句组中,正确的是 ( A) char*s; s=Olympic; ( B) chars7; s=Olympic; ( C) char*s; s=Olympic; ( D) chars7; s=Olympic; 39 以下能正确定义字符串的语句是 ( A) charstr=Lx43: ( B) charstr=0: ( C)

23、 charstr=; ( D) charstr=064; 40 有以 下程序 #include stdio h main( ) chars=abcde; s+=2; printf( dn,s0); 执行后的结果是 ( A)输出字符 c的 ASC 码 ( B)输出字符 C ( C)输出字符 a的 ASC 码 ( D)程序出错 国家二级 C语言机试(函数和数组)模拟试卷 5答案与解析 一、选择题 1 【正确答案】 B 【试题解析】 程序执行 strcpy(a+1, b+2)后,字符数组 a的值为 ”a2”,再进行字符串的连接 strcat(a,c+1),此时字符数组 a的值为 ”a2yz”。 【知

24、识模块】 函数和数组 2 【正确答案】 B 【试题解析】 字符串长度函数 strlen(s)表示计算出以 s为起始地址的字符串的长度,并作为函数值返回。这个长度值不包括串尾的结束标志 0。 【知识模块】 函数和数组 3 【正确答案】 D 【试题解析】 函数 fun(char*p)的功能是如果 pi指向的字符为空字符并且其前个字符是小写字 *,则把小写字 *变成大字 *,所以在主函数中,执行 fun(s1)后,小写字 *b, d都改成大字 *。 【知识模块】 函数和数组 4 【正确答案】 C 【试题解析】 在 C语言中要对两个字符串的大小进行比较,就需要调用字符串比较函数 strcmp( ),如

25、果这个函数的返回值等于 0,说明两个字符串相等。 【知识模块】 函数和数组 5 【正确答案】 A 【试题解析】 一个 C语言源程序可以由一个或多个源文件组成,每个源文件可由一个或多个函数组成,各函数之间是平行的,除了主函数外,函数之间可以相互调用,甚至 C语言中的函数可以直接或间接地自己调用自己,称之为递归调用,该调用主要用于把要 解决的问题转化为一个新的问题,而这个新问题的解决方法仍与原来的解法相同,只是所处理的对象有规律地递增或递减,可以应用这个转化过程使问题得到解决,同时为了有效使用递归调用必定要有一个明确的结束递归的条件。而每次进行递归调用时候,需要利用栈保存现场信息,因此并不会提高效

26、率,选项 C和选项 D不正确。函数名表名了函数的入口地址,如果函数的形参为指向函数的指针变量,那么对应的实参必须为函数名,因此函数名可以为函数的参数,选项 B错误。 【知识模块】 函数和数组 6 【正确答案】 C 【试题解析】 函数值通 过 retum语句返同, retum语句的形式如下: retum表达式或 retum(表达式 ):当程序执行到 renJm语句时,程序的流程就返回到调用该函数的地方,并带回函数值。在同一函数内,可以根据需要,在多处出现 retum语句,在函数体的不同部位退出函数。无论函数体中有多少个 retum语句, retum语句只可能执行一次,返回一个函数值。 retum

27、语句中也可以不含有表达式,这时必须定义函数为 vojd类型,它的作用只是使流程返回到调用函数,并没有确定的函数值。函数体内可以没有 retum语句,这时也必须定义函数为 void类犁,程序的流程就一直执行到函数末尾的 ”,然后返同调用函数,也没有确定的函数值带回。 【知识模块】 函数和数组 7 【正确答案】 C 【试题解析】 在语句 ”k=*f(a, b)”中,由于 ”( )”的优先级高于 ”*”,所以 ”f(a,b); ”表示其返回类型为指针的带有两个整型参数的函数,而不是整型数值,因此选项 C为错误的调用形式。 【知识模块】 函数和数组 8 【正确答案】 C 【试题解析】 函数说明的一般形

28、式为:类型名函数名 (参数类型 1,参数类型2, ) 。因为函数 intfun(doublex10, int*n)的第 1个形式参数是一个双精度型的一维数组,第 2个参数是一个整型指针,并返回一个整型值。一维数组的名字表示的是一维数组的地址。 【知识模块】 函数和数组 9 【正确答案】 D 【试题解析】 程序考查了函数的调用。对于 m=f(f(f(n);首先计算最内层的函数调用 f(n),执行 f函数,得到返回值 2,然后计算 f(2),得到返回值为 4,最后计算 ”4),得到计算结果为 8。 【知识模块】 函数和数组 10 【正确答案】 C 【试题解析 】 由于函数 f的作用是对形参 x求平

29、方再加 1,所以在主函数中,循环第一次执行后变量 a的值等于 1,第二次执行后,变量 a的值等于 102,第三次执行后,变量 a的值等于 503。 【知识模块】 函数和数组 11 【正确答案】 B 【试题解析】 在函数 main( )中,第一次执行 for循环时, b的值等于 1,此时输出字 *B;第二次执行 for。循环时, b的值等于 3,此时输出字 *D;第一次执行for循环时, b的值等于 8,此时输出字 *I。 【知识模块】 函数和数组 12 【正确答案】 D 【试题 解析】 函数 fun的主要功能是: 初值 x的值为 9,因此 fun(9)=9 fun(7)=9 (7 (5-(3-

30、3),因此答案为 7。 【知识模块】 函数和数组 13 【正确答案】 A 【试题解析】 C语言中形参数组是指针变量,其数组中元素的个数由传递的实参数组决定,因此可以在定义的时候,不给出元素个数的说明,因此选项 B和 D形参均为指针变量,选项 A的定义在 C语言中不存在的。 【知识模块】 函数和数组 14 【正确答案】 B 【试题解析】 在字符串中字符 0表示字符串的结束标 志,所以字符串 a和 b相连接的结果为 ABCDUK。 【知识模块】 函数和数组 15 【正确答案】 A 【试题解析】 主函数中调用 f(a, 9),递归函数的调用过程如下:f(a,9)f(a,8)f(a , 7)f(a,6

31、)f(a , 5)f(a,4)f(a,3)f(a,2)f(a , 1), f(a, 1)得到返回值为 a0,值为 8,递归过程开始回归,回归过程描述如下: 8 a1,返回88 a2不成立,返回 a2的值为 9 因此函数 f的主要功能为计算数组中的最大值。主函数中输出最人值为 9。 【知识模块】 函数和数组 16 【正确答案】 C 【试题解析】 代码考查点为全局变量和局部变量的同名问题,若全局变量和某个函数中的局部变量同名,则在该函数中,此全局变量被屏蔽,在该函数内,访问的是局部变量,与同名的全局变量不发生任何关系。主函数执行。 fun(3)时候,执行调用函数 fun,使用局部变量 d=5,执行

32、 d+=p+,相当于 d: d+(p+),得到 d的值为 8,输出。函数调用结束,转到主函数,继续执行 d+=a+,此时 d为全局变量,执行语句以后, d值为 4。 【知识模块】 函数 和数组 17 【正确答案】 B 【试题解析】 存 funl( )函数之前定义了全局字符变量 a和 b。这两个变量的作用域是从其定义处到整个程序结束。在 fun1( )函数之内定义了两个变量 a和 b,并且分别初始化为字符 C和 D。在 C语言中,若全局变量和某个函数中的局部变量同名,则在该函数中此全局变量被屏蔽,在该函数内访问的是局部变量,与同名的全局变量不发生任何关系。所以在主函数中,执行 fun1( )后,

33、变量 a、 b的值分别等于 C、 D,打印输出 CD,接着执行 fun2(EF)语句,变量 a、 b的值变为 E、 F并输出。 【知识模块】 函数和数组 18 【正确答案】 B 【试题解析】 子函数 fun(intx, inty),将变量 m和 i声明为局部静态变量,因此第 1次调用主函数后,局部静态变量 m和 i的值为 5和 3,第 1次函数调用结束时,它们的值不释放保持不变,所以第 2次调用时,局部静态变量 m和 i的初始值分别为 5和 3,即在执行 ”i+=m+1”时, i的值为 9,因此最终 m的值为 11。 【知识模块】 函数和数组 19 【正确答案】 A 【试题解析】 在主函数中第

34、 一次调用 f(a)时,得到变量 s的值等于 4,在第二次调用 f(a)时,在子函数 f中由于变量 a是一个局部静态变量,所以这次其值等于2,因而在主函数中第二次调用 f(a)后,其返回值等于 5,最后变量 s的值等于 9。 【知识模块】 函数和数组 20 【正确答案】 B 【试题解析】 由于在函数 f中,变量 n为静态局部变量,所以在主函数中第一次调用函数 f后,变量 n的值等于 l,当第二调用函数 f时,在函数 f的内部静态局部变量 n的值仍然保留等于 l,所以返回函数值等于 2。 【知识模块】 函数和数组 21 【正 确答案】 C 【试题解析】 在主函数的 for循环语句中,当循环变量

35、i的值等于 0, 2时,执行switch中的 case0语句,分别对数组元素 a0和 a2加 1和减 1,所以 a0的值等于 3, a2等于 4。当循环变量 i的值等于 1, 3时,执行 switch中的 case1语句,把数组元素 a1和 a3的值赋为 0。所以输出数组 a的元素,其结果为 3040。 【知识模块】 函数和数组 22 【正确答案】 D 【试题解析】 在定义一维数组时,数组的下标应该是一个确定的整数值。要注意的是在定义二维 数组时,其第一维下标可以省略,但第二维下标不能省略。 【知识模块】 函数和数组 23 【正确答案】 A 【试题解析】 本题考查 for语句的循环控制,首先定

36、义了两个数组并赋予了初始值,第一个 for循环语句循环 12次遍历 s数组的各个元素,将 sn中的原素值作为c数组中的下标,使相应的值自加。例如当 i=0, cs0+为 c1+,其值变为1,当执行 i=11, 2, 11后, c1、 c2、 c3、 c4分别为 4、 3、 3、 2,故选项 A为正确的运行结果。 【知识模块】 函数和数组 24 【正确答案】 C 【试题解析】 数组的定义格式:类型说明符数组名 整型常量表达式 ;可以同时定义多个类型相同的数组,之间以逗号分隔开,数组的类型表明了数组中元素的数据类型,数组中所有元素的类型相同,数组经过定义以后就可使用,编译程序将对其分配一片连续的存

37、储空间进行连续存储。 C语言中只能单个引用数组元素而不能一次引用整个数组。引用格式为:数组名 下标 ,引用元素时,需要注意下标只能为整型常量或整型表达式。 【知识模块】 函数和数组 25 【正确答案】 B 【试题解析】 因为 指针变量 p的初始值指向数组 a,所以执行 for循环语句后,数组 a中的元素的值不变。 【知识模块】 函数和数组 26 【正确答案】 D 【试题解析】 程序中循环部分的主要功能是,在字符串 b中寻找是否含有子串a,如果含有则退出,字符指针 p指向该匹配子串后面的位置,利用 printf函数输出则从该位置开始一直输出到字符串 b的结尾。 【知识模块】 函数和数组 27 【

38、正确答案】 B 【试题解析】 。 fun函数的功能是求出二维数组 a中第 i行第 i个元素与第 N-l-i元素的差,赋给 bi。在 主函数中,把实参二维数组 x和一维数组 y传递给形参 a和 b,最后输出一维数组 y中元素的值。 【知识模块】 函数和数组 28 【正确答案】 C 【试题解析】 语句 x32=0表示将二维数组 x的所有元素赋初值 0,而循环语句 for(i=0; i 3; i+)scanf( d,xi)表示对数组元素 x00、 x10、 x20赋值。所以当运行程序时,输入 246 CR时,数组元素 x00=2、 x10=4、x20=6,因此,输出数组元素 x00=2、 x01=0

39、、 x10=4的值 204。 【知识模块】 函数和数组 29 【正确答案】 D 【试题解析】 由于在程序中定义了二维数组 t3=9, 8, 7,6,5,4, 3,2, 1;由二维数组的存储方式按行存储,即初始化完第一行的所有列再初始化下一行的元素。可知这是一个 3行 3列的二维数组,第一行的元素为 9,8, 7,第二行的元素为 6,5,4,第三行的元素为 3, 2, 1。然后用 for循环输出 t20、 t11、t02,它们的值分别为 3、 5、 7。 【知识模块】 函数和数组 30 【正确答案】 D 【试题解析】 一维数组定义和初始化是允许省略行下标,不允许省略列下标。 【知识模块】 函数和

40、数组 31 【正确答案】 D 【试题解析】 函数 fun( )的作用是求出二维数组 a口 N中每一行中的最大元素,所以在 main( )函数中执行完 fun(x, y)后,数组 y中的元素为二维数组xNN每一行的最大元素。 【知识模块】 函数和数组 32 【正确答案】 C 【试题解析】 两个连续的双引号: ,是一个字符串常量,称为 ”空串 ”。 【知识模块】 函数和数组 33 【正确答案】 A 【试题解析】 程序段中定义指针数组 *strp,含有 4个元素, for循环 strp分别保存了二维数组 str中的 4个字符串的首地址,因此 strl)为二级地址,不能保存字符串的首地址 *strp或

41、者 strp0中存放了字符串 ”aa”的首地址。所以不能正确引用字符串的为选项 A。 【知识模块】 函数和数组 34 【正确答案】 D 【试题解析】 C语言中没有运算符可以处理字符串,要调用 ”string库中 的函数来处理字符串,其中 strlen函数主要测试字符串中实际字符的个数,比实际占用的内存至少要少一个。 Strcat(s1, s2)函数用于连接两个字符串,是把字符串 s2连接到 s1的后面。 【知识模块】 函数和数组 35 【正确答案】 B 【试题解析】 sizeof主要用于测试变量所占的实际内存,而 strlen函数主要测试字符串中实际字符的个数,字符串 ”Hello”占有内存

42、6个字节,而字符串中共有 5个字符。 【知识模块】 函数和数组 36 【正确答案】 A 【试题解析】 这个程序 的执行过程是当 i=0时, j=1, a00=0 a10=t;不置换;当 i=1时, j=2, a10=t=a20=t;不置换;当 i=2时, j=3, a20=ta30=f;置换 a20=ea30=t;此时, a20=ea10=t,再置换 a20=t,a10=e;当 i 3时, j=4, a30=f a430=t不置换;所以 a1的结果为fWo。 【知识模块】 函数和数组 37 【正确答案】 B 【试题解析 】 在主函数中定义了二维字符数组 str,并对它赋初值。定义字符指针 p,

43、并把字符串 str1的地址赋给它。所以这时字符指针 p指向字符串 ”One*Dream!”,然后在两个输出语句中,分别输出这个字符串的长度 10和字符串本身。 【知识模块】 函数和数组 38 【正确答案】 A 【试题解析】 选项 A中定义了指针变量 s,通过赋值语句保存字符串常量的地址,而字符数组绝对不能赋值,而只能初始化或者输入。 【知识模块】 函数和数组 39 【正确答案】 B 【试题解析】 字符串常量是用一对 双括号括起来的一串字符。它用字符数组来存放,不用一对大括号对括起来。 【知识模块】 函数和数组 40 【正确答案】 D 【试题解析】 因为字符数组 s中的数组名 s表示的是一个地址常量。所以语句 ”s+=2; ”不能将指针在当前位置的基础上再向后移动两位。因而程序编译时出错。 【知识模块】 函数和数组

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

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