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

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

1、国家二级 C语言机试(函数和数组)模拟试卷 4及答案与解析 一、选择题 1 若各选项中所用变量已正确定义,函数 fun中通过 return语句返回一个函数值,以下选项中错误的程序是 ( A) main( )x=fun(2 , 10); floatfun(inta , intb) ( B) floatfun(inta, intb)main( )x=fun(i , j); ) ( C) floatfun(int, int); main( )x : fun(2, 10); )float fun(inta,intb) ( D) main( )floatfun(inti, intj); x=fun(i

2、, j); )floatfun(inta , intb) 2 有以下程序 #include string-h main( ) charp20: a, b, C, d), q=abc, r=abcde; strcat(p, r); strcpy(p+strlen(q), q); printf( dn, strlen(p); 程序运行后的输出结果是 ( A) 9 ( B) 11 ( C) 6 ( D) 7 3 若有以下定义和语句 charsl10=abcd!, *s2=n123; printf( d dn, strlen(s1), strlen(s2); 则输出结果是 ( A) 105 ( B)

3、107 ( C) 55 ( D) 58 4 以下关于 retum语句的叙述中正确的是 ( A)一个自定义函数中必须有一条 return语句 ( B)一个自定义函数中可以根据不同情况设置多条 return语句 ( C)定 义成 yoid类型的函数中可以有带返回值的 return语句 ( D)没有 retum语句的自定义函数在执行结束时不能返回到调用处 5 以下叙述中错误的是 ( A)函数调用可以作为一个独立的语句存在 ( B)函数形参的值也可以传回给对应的实参 ( C)若函数有返回值,必须通过 return语句返回 ( D) C程序必须由一个或一个以上的函数组成 6 以下叙述中正确的是 ( A)

4、函数调用时,不必区分函数名称的大小写 ( B)调用函数时,函数名必须与被调用的函数名完全一致 ( C)函数名允许用数字开头 ( D)在 函数体中只能出现一次 return语句 7 以下选项中叙述错误的是 ( A)在 C程序的同一函数中,各复合语句内可以定义变量,其作用域仅限本复合语句内 ( B) C程序函数中定义的赋有初值的静态变量,每调用一次函数,赋一次初值 ( C) C程序函数中定义的自动变量,系统不自动赋确定的初值 ( D) C程序函数的形参不可以说明为 static型变量 8 有以下程序 #include stdio h intfun(intx, inty) iflx=y)retum(

5、x); elseretum(x+y)/2); main( ) inta=4, b=5, c=6; printf( dm, fun(2*a, fun(b, c); 程序运行后的输出结果是 ( A) 3 ( B) 6 ( C) 8 ( D) 12 9 若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是 ( A)形参只是形式上的存在,不占用具体存储单元 ( B)函数的形参和实参分别占用不同的存储单元 ( C)同名的实参和形参占同一存储单元 ( D)函数的实参和其对应的形参共占同一存储单元 10 若有以下程序 yoidflintx) if(x =10) printf( d-, x 10

6、); fix/10); ) elseprintf1 d, x); ) main( ) intZ=123456; f(z); ) 则程序的输出结果是 ( A) 6-5-4-3-2-1 ( B) 6-5-4-3-2-1- ( C) 1-2-3-4-5-6 ( D) 1-2-3-4-5-6 11 有以下程序 #include stdio h intfun(intn) inta; if(n=1)return1; a=n+fun(n-1); return(a); ) main( ) pfintf( dn, fun(5); 程序的输出结果是 ( A) 14 ( B) 10 ( C) 15 ( D) 9 1

7、2 设有如下函数定义 intfun(intk) if(k 1)return0: elseif(k=1)return1; elsereturnfun(k-1)+1; 若执行调用语句: n=fun(3);则函数 fun总共被调用的次数是 ( A) 2 ( B) 4 ( C) 3 ( D) 5 13 有以下程序 intfun(intn) ifln=1)return1; else retum(n+fun(n-1); main( ) intx; scanf( d, x); x=fun(x); printf( dn, x); 执行程序时,给变量 x输入 10,程序的输出结果是 ( A) 54 ( B) 6

8、5 ( C) 45 ( D) 55 14 以下叙述中正确的是 ( A)只有全局变量才有自己的作用域,函数中的局部变量没有作用域 ( B)只要是用户定义的标识符,都有一个有效的作用域 ( C)只有在函数内部定义的变量 才是局部变量 ( D)局部变量不能被说明为 static 15 有以下程序 #include stdio h inta=1, b=2; yoidfunl(inta, intb) printf( d d, a, b); yoidfun2( ) a=3; b=4; main( ) funl(5, 6); fun20; printf( d dn, a, b); 程序运行后的输出结果是 (

9、 A) 3456 ( B) 1256 ( C) 5612 ( D) 5634 16 有以下程序 #include stdio h fun(inta, intb) intstaticm=0, i=2; i=i+m+l: m=i+a+b; returnm; main( ) intk=4, m=1, p; p=fun(k, m); printf( d, , p); p=fun(k, m); printf( dha7p); 程序运行后的输出结果是 ( A) 8, 17 ( B) 7, 16 ( C) 8, 8 ( D) 7, 17 17 在 C语言中,只有在使用时才占用内存单元的变量,其存储类型是 (

10、 A) extern和 register ( B) auto和 static ( C) static和 register ( D) auto和 register 18 有以下程序 #include stdio h intfun( ) staticintx=1; x+=1: returnx; main( ) inti, s=1; for(i=1; i =5; i+)s+=fun( ); printf( dn, s); 程序运行后的输出结果是 ( A) 11 ( B) 21 ( C) 6 ( D) 120 19 有以下程序 #include stdio h intfun( ) staticintx

11、=l; x*=2: returnx; main( ) inti,s=1; for(i=1; i =2; i+)s=fun( ); printff dn, s); 程序运行后的输出结果是 ( A) 4 ( B) 1 ( C) 0 ( D) 8 20 有以下程序 yoidfun(inta, intn) inti, t; for(i=0; i n/2; i+) t=ai; ai=an-1-i; an-l-i=t; main( ) intk10=1, 2, 3, 4, 5, 6, 7, 8, 9, 10, i; fun(k, 5); for(i=2; i 8; i+)printf( d, ki); p

12、rintf(n); 程序的运行结果是 ( A) 876543 ( B) 321678 ( C) 1098765 ( D) 345678 21 有以下程序 #include stdio h yoidfun(inta, intb) mtt; t=a; a=b; b=t; main( ) intc10=1,2, 3, 4, 5, 6, 7, 8, 9, O), i; for(i=0; i 10; i+=2) fun(ci, ci+1); for(i=0; i 10; i+) printff d, , ci); printf(n); 程序的运行结果是 ( A) 2, 1, 4, 3, 6, 5, 8,

13、 7, 0, 9, ( B) 0,9, 8, 7, 6, 5, 4, 3, 2, 1, ( C) 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, ( D) 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 22 若要 求定义具有 10个 int型元素的一维数组 a,则以下定义语句中错误的是 ( A) #definen5inta2*n; ( B) inta5+5; ( C) #defineN10intaN; ( D) intn=10, an; 23 有下列程序: #include stdio h yoidfun(int*a intn)/*fun函数的功能是将 a所指数组元素从

14、大到小排序 */ intt, ij; for(i=0; i n-1;j+) for(j=i+1j nj+) if(ai aj)t=ai; ai=ajl; aj=t; main( ) intc10=1, 2, 3, 4, 5, 6, 7, 8, 9, 0), i; fun(c+4, 6); for(i=0; i 10; i+)pfintf( d, , ci); printf(n); 程序的运行结果是 ( A) 1,2, 3, 4, 9, 8, 7, 6, 5, 0, ( B) 0,9, 8, 7, 6, 5, 1, 2, 3, 4, ( C) 0,9, 8, 7, 6, 5, 4, 3, 2,

15、1, ( D) 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 24 以下叙述 中正确的是 ( A)语句 inta=0;是不合法的,遗漏了数组的大小 ( B)语句 chara2=A, B);是合法的,定义了一个包含两个字符的数组 ( C)语句 inta8: 0;是合法的 ( D)语句 chara3; a=AB;是合法的,因为数组有三个字符空间的容量,可以保存两个字符 25 若有以下程序 main( ) inti, j=0; chara=Howareyou!; for(i=0; ai; i+) if(ai!=) aD+=ai; aj=0; printf( sn, a); 则程序的输出结

16、果是 ( A) Howareyou ( B) Hay! ( C) Howareyou! ( D) Howareyou! 26 有以下程序 #include main( ) intb33=0, 1, 2, 0, 1, 2, 0, 1, 2), i,j, t=1; for(i=0; i =i; j+) t+=bibDi; printf( dn, t); ) 程序运行后的输出结果是 ( A) 3 ( B) 1 ( C) 9 ( D) 4 27 有以下程序 #include stdio h intfun(int(*s)4, intn, intk) intm, i; m=s0k; for(i=1; i

17、n; i+)if(sikl m)m=sik; returnm: main( ) inta44=1, 2, 3, 4), 11, 12, 13, 14, 21, 22, 23, 24), 3l, 32,33, 34); printf( dn, fun(a, 4, 0); 程序的运行结果 是 ( A) 31 ( B) 34 ( C) 4 ( D) 32 28 有下列程序: main( ) inta44=1, 4, 3, 2, 8,6, 5, 7, 3,7, 2, 5, 4, 8, 6, 1, i,k, t; for(i=0; i 3; i+) for(k=i+l; k 4; k+)if(aii a

18、kk)t: aii; aii=akk; akk=t; for(i=0; i 4; i+)printf( d, , a0i); 程序运行后的输 出结果是 ( A) 6, 2, 1, 1, ( B) 1, 1, 2, 6, ( C) 2, 3, 4, 6, ( D) 6, 4, 3, 2 29 以下叙述中正确的是 ( A)语句 inta43=1,2, 4, 5;是错误的初始化形式 ( B)语句 inta3=1,2, 4, 5);是错误的初始化形式 ( C)在逻辑上,可以把二维数组看成是一个具有行和列的表格或矩阵 ( D)语句 inta43=1, 2), 4, 5);是错误的初始化形式 30 以下语

19、句中存在语法错误的是 ( A) charss20=right?; ( B) char*ss6; ss1=right?; ( C) char*ss=right?); ( D) charss620; ss1=right?; 31 以下选项中,能正确进行字符串赋值的是 ( A) chars5=A, B, C, D, E); ( B) char*s=abcDE: ( C) chars45=tabcDE; ( D) char*s; gets(s); 32 以下叙述中正确的是 ( A)下面的语句用赋初值方式来定义字符串,其中, 0是必须的 charstrl=s,t, r, 1, 0); ( B)有定义语句

20、: charstr1=str1,数组 str1将包含 4个元素 ( C)字符串常量 str1的类型是:字符串数据类型 ( D)字符数组的每个元素可存放个字符,并且最后一个元素必须是 0字符 33 以下叙述中正确的是 ( A)不能用字符串常量对字符数组名进行整体赋值操作 ( B)字符串常量 Hello会被隐含处理成一个无名字符型数 组,它有 5个元素 ( C) charstr7=string!;在语法上是合法的,运行也是安全的 ( D) char*str; str=Hello;与 charstr; str=Hello;效果是一样的 34 设有定义语句: char*aa2=abcd,abcD;则以

21、下叙述正确的是 ( A) aa数组的两个元素只能存放含有 4个字符的一维数组的首地址 ( B) aa数组的值分别是字符串 abcd和 abcD ( C) aa是指针变量,它指向含有两个元素的字符 型数组 ( D) aa0存放了字符串 abcd的首地址 35 设有定义: chars81; inti=0;以下不能将一行 (不超过 80个字符 )带有空格的字符串正确读入的语句或语句组是 while(si+=getchar( )!=n); si=0; ( A) scanf( s, s); ( B) gets(s); ( C) doscanf( c, si); )while(si+!=n); si=0;

22、 36 有以下程序 #include stdio h yoidmain( ) chars=012xy08s34f4w2; inti, n=0; for(i=0; si!=0; i+) if(si =0 si =9)n+; printf( dn, n); 程序运行后的输出结果是 ( A) 0 ( B) 7 ( C) 3 ( D) 8 37 有以下程序 main( ) charch=uVwxyz, *pc; pc=ch; printf( cn, *(pc+5); 程 序运行后的输出结果是 ( A) 0 ( B)元素 ch5的地址 ( C) Z ( D)字符 y的地址 38 以下关于字符串的叙述中正

23、确的是 ( A)两个字符串中的字符个数相同时才能进行字符串大小的比较 ( B)可以用关系运算符对字符串的大小进行比较 ( C)空串比空格打头的字符串小 ( D) C语言中有字符串类型的常量和变量 39 有下列程序: fun(charP10) intn=0, i; for(i=0; i 7; i+) if(pi0: =T)n+; retumn; main( ) charstr10=Mon, Tue, Wed, Thu, Fri, Sat, Sun); printf( dn fun(str); 程序执行后的输出结果是 ( A) 1 ( B) 3 ( C) 0 ( D) 2 国家二级 C语言机试(函

24、数和数组)模拟试卷 4答案与解析 一、选择题 1 【正确答案】 A 【试题解析】 C语言规定,函数必须先定义,后调用 (函数的返回值类型为 int或char时除外 )。在选项 A中,调用的子函数在 调用后面定义,所以不正确。在选项B、 C中,被调用函数在主函数之前定义,再在主函数中调用,所以是正确的;在选项 D中,在主函数中先对子函数 floatfun(inti, inti)进行了声明,然后进行调用。 【知识模块】 函数和数组 2 【正确答案】 C 【试题解析】 字符串连接函数 scrcat(*p, r)的功能是把字符数组 p和 r连接起来,此时字符数组 p的有效字符长度为 9,冉执行 str

25、cpy(p+strlen(q), q)字符串复制函数,把字符数组 q复制到字符数组 p从 p3开始到 p5数组位置中,由于字符数组 q中的内容为字符串 ”abc”复制时把字符串结束标志 null也复制到字符数组 p中,这时字符函数 strlen(p)返同字符数组 p的有效字符长度为 6。 【知识模块】 函数和数组 3 【正确答案】 C 【试题解析】 本题要注意的是转义字符的问题,在字符串 s2中,有两个转义字符,分别是回车换行符和反斜线。所以其字符串长度等于 5。 【知识模块】 函数和数组 4 【正确答案】 B 【试题解析】 retum语句土要用于返回函数的值。在一个自定义 函数中,可以根据不

26、同的情况设置多条 retum语句返回函数的值。 【知识模块】 函数和数组 5 【正确答案】 B 【试题解析】 一个 C程序中可以包含任意多个不同名的函数,但只能有一个主函数。一个 C程序总是从主函数开始执行。函数的值通过 retum语句返回, retum语句中的表达式的值就是所求的函数值。在 C语言中,数据只能从实参单向传递给形参,称为 ”按值 ”传递。也即是说,当简单变量作为实参时,用户不可能在函数中改变对应实参的值。 【知识模块】 函数和数组 6 【正确答案】 B 【试 题解析】 在标准 C中,函数的定义形式为:函数返回值的类型名函数名 (类型名形式参数 1,类型名形式参数 2) 说明部分

27、语句部分 需要说明的是函数名和形式参数都是由用户命名的标识符,在同一程序中,函数名必须惟一,形式参数名只要在同一函数中惟一即可,与其他函数中的变量可以同名。 retum语句的作用是返回函数的值,在函数中可以出现多个或者没有。 【知识模块】 函数和数组 7 【正确答案】 B 【试题解析】 在函数定义的静态变量,只需要赋值 1次,即可保存初始值,不需要每次调用时都赋初始值。 【知识 模块】 函数和数组 8 【正确答案】 B 【试题解析】 fun(b, C即 fun(5, 6), 51=6,所以返回 (5+6)/2=5; funn(2*a, 5)即 fun(8, 5), 81=5,所以返回 (8+5

28、)/2=6。 【知识模块】 函数和数组 9 【正确答案】 B 【试题解析】 在 C语言中,函数的实参单元与形参单元在内存中分配不同的存储单元。在调用函数时,给形参分配临时存储单元,并将实参对应的值传递给形参,在被调用函数中对形参存储单元中的值进行运算,最后通过 retum语句把函数值返回调用函 数。当调用结束后,形参单元被释放,实参单元仍保留并维持原值。 【知识模块】 函数和数组 10 【正确答案】 A 【试题解析】 函数 f的主要功能为逆置输出整数 x的每一位数据,如果 z的值为123456,逆置输出的结果为 6 5 4 3 2 1。 【知识模块】 函数和数组 11 【正确答案】 C 【试题

29、解析】 函数 fun为递归定义的函数,当调用fun(5)5+fun(4)5+4+fun(3)5+4+3+fun(2)5+4+3+2+fun(1) ,因此最后的结果为 15。 【 知识模块】 函数和数组 12 【正确答案】 C 【试题解析】 这道题目考查了函数的递归调用,当执行调用语句 n=fun(3)时,返回 n=fun(2)+1,再执行 fun(2),返回 n=fun(1)+1+1,而 fun(1)等于 1,所以最后 n的值等于 3。而函数 fun总共被调用了 3次。即 fun(3), fun(2), fun(1)。 【知识模块】 函数和数组 13 【正确答案】 D 【试题解析】 在 C语言

30、中函数可以递归调用,即直接或间接地自己调用自己。本题在函数 intfun(intn)的定义中又 出现了对函数 fun的调用,所以函数 fun是递归函数。因而在主函数中调用 x=fun(x)时,当输入 10赋给变量 x时,递归调用的过程为:fun(10)=10+fun(9)=10+9+fun(8)=10+9+8+fun(7)=10+9+8+7+fun(6)=10+9+8+7+6+fun(6)=10+9+8+7+6+5+fun(4)=10+9+8+7+6+5+4+fun(3)=10+9+8+7+6+5+4+3+fun(2)=10+9+8+7+6+5+4+3+2+fun(1)=10+9+8+7+6+

31、5+4+3+2+1=55 【知识模块】 函数和数组 14 【正确答案】 B 【试题解析】 在函数内定义的变量是局部变量,而在函数之外定义的变量称为外部变量,也是全局变量。全局变量可以为源文件中其他函数所共用,其作用域为从定义变量的位置开始到源文件结束。因此只要用户定义的标识符,全部都有作用域。局部变量可以说明为 auto、 register以及 static。 【知识模块】 函数和数组 15 【正确答案】 D 【试题解析】 函数 fun1( )的作用是输出局部变量 a和 b的值,在主 函数中执行fun1(5, 6)的结果是输出 5,6:函数 fun2( )的作用是给变量 a和 b分别赋值 3,

32、4;执行 fun2( )的作用是输出 3, 4。 【知识模块】 函数和数组 16 【正确答案】 A 【试题解析】 本题考查了静态变量以及局部变量的同名问题。主函数中调用 fun函数两次,第一次调用 fun(4, 1),形参 a和 b接收以后, i值为 3, m的值为 8,调用结束返回 8存放到 p中并且输出 p的值为 8,除了静态变量 m和 i,变量 a,b撤销。第二次调用 fun(4, 1),接收实参值以后, i为 3+8+1,而 m为 12+4+1,即输出函数值 17。 【知识模块】 函数和数组 17 【正确答案】 D 【试题解析】 在 C语言中,动态变量 (auto)存储在内存中的动态存

33、储区,在程序运行中,只有当调用变量所在的函数时,系统才临时给变量分配内存单元;全局变量 (extem)一经定义,系统为其分配固定的内存单元;静态变量 (static),编译系统为其分配固定的存储空间;寄存器变量 (register)不保存在内存上,而是直接存储在 CPu的寄存器中。 【知识模块】 函数和数组 18 【正确答案】 B 【试题解析】 这道试题主要考查了局部静态变量的应用。在函数 fun( )中定义了局部静态变量整型 x,其初值等于 1,在主函数中循环执行 5次,第一次变量 s的值等于 3,变量 x的值等于 2,第二次变量 s的值等于 6,变量 x的值等于 3,第三次变量 s的值等于

34、 10,变量 x的值等于 4,第四次变量 s的值等于 15,变量 x的值等于 5,第五次变量 s的值等于 21,变量 x的值等于 6。 【知识模块】 函数和数组 19 【正确答案】 A 【试题解析】 在子函数 fun( )中定义局部静态变量 x,其初值等于 l,然后再 把其值扩大 1倍后返回。在主函数中执行 for循环语句 2次,调用函数 fun( )两次,所以变量 s的值等于 4。这里要强调的一点是当函数 fun( )执行完毕后,局部静态变量 x的值不会丢失,仍然有效。 【知识模块】 函数和数组 20 【正确答案】 B 【试题解析】 函数 fun(inta, intn)的功能是实现整型数组

35、a元素的逆置操作。在主函数中当执行 fun(k, 5)时,对 k10中的子数组 k5=1, 2, 3, 4, 5的首尾元素进行逆置,此时 k10=5, 4, 3, 2, l, 6, 7, 8, 9, 10。所在循环语句中输出从第 2 7个数组元素时,其值分别为 321678。 【知识模块】 函数和数组 21 【正确答案】 C 【试题解析】 C语言规定,实参变量对形参变量的数据传递是 ”值传递 ”,即单向传递,只由实参传给形参,而不能由形参传回来给实参。在调用函数时,给形参分配存储单元,并将实参对应的值传递给形参,调用结束后,形参单元被释放,实参单元仍保留并维持原值。由此可知,在本题中,函数 f

36、un(inta, intb)的功能是实现形参整形变量 a和 b值的互换。当在主函数中调用 fun(ci, ci+1)时,把实参变量 ci和 ci+1的值赋给形参变量 a和 b,执行完函数 fun(ci, ci+1)时,形参变量 a和 b的值发生了互换,实参变量 ci和 ci+1的值并没有发生互换,所以输出的值为 l, 2, 3, 4, 5, 6, 7, 8, 9, 0。 【知识模块】 函数和数组 22 【正确答案】 D 【试题解析】 在 C语言中,定义一维数组的语句形式为:类型名数组名 整型常量表达式 。在选项 D中, n是一个整型的变量。 【知识模块】 函数和数组 23 【正确答案】 A 【

37、试题解析】 fun( )函数的功能是对数组 a的元素从大到小进行排序。所以存主函数执行 fun(c+4, 6)语句时,将从数组 c的第 5个元素开始的后 6个元素进行从大到小排序。排序之后,数组 c的内容变为 1, 2,3, 4, 9,8, 7, 6, 5, 0。 【知识模块】 函数和数组 24 【正确答案】 C 【试题解析】 当系统为所定义的数组在内存中开辟一串连续的存储单元时,这些存储单元中并没有确定的值,可以在定义语句中为所定义数组的各个元素赋初值。数组初始化赋值是指在数组定义时给数组元素赋予初 值。初始化赋值的一般形式为:类型说明符数组名 常量表达式 =值,值 ,值 ;需要注意的是当所

38、赋初值多于所定义数组的元素个数时,在编译时将给出出错信息,在指定初值时,第一个初值必定赋给卜标为 0的元素,然后按这些数值的排列顺序赋初值,只能给元素逐个赋值,不能给数组整体赋值。如果给全部元素赋值,则在数组说明中,可以不给出数组元素的个数。 【知识模块】 函数和数组 25 【正确答案】 C 【试题解析】 主函数中利用 for循环访问字符串的每一个字符,判断当前字符是否为空格,如果是空格则删除。因此删除 字符串 Howareyou! ”中空格以后,字符串为 Howareyou!。 【知识模块】 函数和数组 26 【正确答案】 D 【试题解析】 这道题主要考查的是二维数组的有关知识。在两层 fo

39、r循环语句中,每次执行变量 t的累加时,二维数组元素 b的第二下标的值与第一下标相同的值,所以程序执行的过程为 t=1+b11+b22=1+1+2=4。 【知识模块】 函数和数组 27 【正确答案】 A 【试题解析】 函数 fun(int(+s)4, intn,intk)的功能是返 回二维数组第 k列的最大元素。在主函数中由于二维数组 a44已经初始化,所以 fun(a,4, 0)的值是二维数组 a第 1列中的最人元素 31。 【知识模块】 函数和数组 28 【正确答案】 D 【试题解析】 利用二重 for循环对二维数组 a44的主对角线上的元素 1, 6,2,1实现按列从大到小排序,所以数组

40、 a44的值变为 6,4,3,2, ), 8,2,5, 7),3, 7, 1, 5), 4, 8, 6, 1),最后输出数组 a44第一行上的元素,所以输出结果为 6,4,3,2。 【知识模块】 函数和数组 29 【正确答案】 C 【试题解析】 在理解二维数组的时候,可以把一个二维数组看成是一个一维数组,每个数组元素又是包含有若干个元素的一维数组,也就是具有行列的结构,二维数组初始化也是在类型说明时给各下标变量赋以初值。二维数组可按行分段赋值,也可按行连续赋值。 【知识模块】 函数和数组 30 【正确答案】 A 【试题解析】 选项 A中定义了二维数组 ss,可以用于存储字符串,但是字符串的存储

41、不能通过赋值,仅可以初始化或者输入得到,而选项 C和 A不同, 选项 C为指针数组,对于指针变量可以保存常量字符串的地址。 【知识模块】 函数和数组 31 【正确答案】 B 【试题解析】 对于选项 A字符串中无法存放字符串结束标志 0,选项 C每行仅仅存放 5个字符,同样的不能存放字符串结束标志,选项 D中指针变量 s没有实际的内存空间,无法存放输入的字符串。因此正确的选项为 B,相当于 char+s;s=ABCDE,把字符串常量的首地址存放到指针变量中存储。 【知识模块】 函数和数组 32 【正确答案】 B 【试题解析】 选项 B中除了字符串 中实际字符之外,还要存储字符串结束标志,应为 5

42、个元素。在 C语言中没有字符串数据类型,因此选项 C不正确,选项D字符数组不一定必须存放字符串,因此没有规定最后一个元素为字符串结束标志。 【知识模块】 函数和数组 33 【正确答案】 A 【试题解析】 字符数组仅仅可以采用定义时初始化以及输入得到数据,在程序其他部分不允许对其进行赋值。字符串常量中除了实际字符之外还有结束标志,选项 B错误,而选项 C中,没有空间存放字符串结束标志,因此运行是不安全的。选项 D中第一个 str为指针,可以赋值,而后面的为数组 ,在程序中赋值出错。 【知识模块】 函数和数组 34 【正确答案】 D 【试题解析】 题目中 char*aa2,定义了指针数组 aa,有

43、两个元素, aa0存放 ”abcd地址,而 aa1存放 ABCD地址。 【知识模块】 函数和数组 35 【正确答案】 B 【试题解析】 本题考查标准输入输出函数和循环语句。 gets(s)函数的作用是将输入的字符读入字符串 s,直到遇到回车。而 scanf( )函数接收字符串时的结束标志为回车或者空格。 【知识模块】 函数和 数组 36 【正确答案】 C 【试题解析】 在主函数中的 for循环语句中,当 si的值不等于 O 9之间的数字时,结束循环语句的执行。由字符数组 s的初值可以得到 for循环语句执行了三次,所以变量 n的值等于 3。 【知识模块】 函数和数组 37 【正确答案】 C 【

44、试题解析】 在程序中语句 pc=ch;的功能是字符指针 pc指向字符串数组 ch的地址,而 *(ps+5)表示字符串数组 ch中第 6个字符 z。 【知识模块】 函数和数组 38 【正确答案】 C 【试题解析】 C语言本身并没有设置一种类型来定义字符串变量,却允许使用 ”字符串常量 ”。字符串常量是由双引号括起来的一串字符。任意两个字符串的大小比较要调用字符串比较函数 strcmp(s1, s2)来进行,其比较的方法是依次对 s1和s2中对应位置上的字符两两进行比较,当出现第一对不相同的字符时,即由这两个字符决定所在串的大小 (比较字符大小的依据是其 ASC 码值 )。 【知识模块】 函数和数组 39 【正确答案】 D 【试题解析】 本题在主函数中定义了一个字符二维数组 str10,并用“Mon”, ”Tue”, ”Wed” , ”Thu”, ”Fri”, ”Sat”, ”Sun”初始化。函数fun(charp10)的功能是统计出 p10中 pi0等于字符 T的个数。所以 fun(str)的功能是统计一周七天中英文名称首字 *为 ”T”的个数。因为字符串 ”Tue”和 ”Thu”的首字符是 ”T”,所以 n=2。 【知识模块】 函数和数组

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

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

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