【计算机类职业资格】国家二级C语言机试(函数和数组)模拟试卷17及答案解析.doc

上传人:lawfemale396 文档编号:1332059 上传时间:2019-10-17 格式:DOC 页数:8 大小:53.50KB
下载 相关 举报
【计算机类职业资格】国家二级C语言机试(函数和数组)模拟试卷17及答案解析.doc_第1页
第1页 / 共8页
【计算机类职业资格】国家二级C语言机试(函数和数组)模拟试卷17及答案解析.doc_第2页
第2页 / 共8页
【计算机类职业资格】国家二级C语言机试(函数和数组)模拟试卷17及答案解析.doc_第3页
第3页 / 共8页
【计算机类职业资格】国家二级C语言机试(函数和数组)模拟试卷17及答案解析.doc_第4页
第4页 / 共8页
【计算机类职业资格】国家二级C语言机试(函数和数组)模拟试卷17及答案解析.doc_第5页
第5页 / 共8页
点击查看更多>>
资源描述

1、国家二级 C语言机试(函数和数组)模拟试卷 17及答案解析(总分:50.00,做题时间:90 分钟)一、选择题(总题数:25,分数:50.00)1.以下程序的输出结果是( )。 #include #include main() char a10=abc,b10=012,c10=xyz; strcpy(a+1,b+2); puts(strcat(a,c+1);(分数:2.00)A.12yzB.a2yzC.abcyzD.abyz2.关于子函数调用的叙述中正确的是( )。(分数:2.00)A.实用的 C语言源程序总是由一个或多个函数组成B.不同函数的形式参数不能使用相同名称的标识符C.在 C语言的函

2、数内部,可以定义局部嵌套函数D.用户自己定义的函数只能调用库函数3.设 int fun(int *p)return *p;,则此函数返回值是( )。(分数:2.00)A.NULLB.一个整数C.形参 p中存放的值D.形参 p的地址值4.关于函数调用的叙述中错误的是( )。(分数:2.00)A.C程序必须由一个或一个以上的函数组成B.函数形参的值也可以传回给对应的实参C.若函数有返回值,必须通过 return语句返回D.函数调用可以作为一个独立的语句存在5.关于 void fun()的叙述中正确的是( )。(分数:2.00)A.fun函数无返回值B.fun函数的返回值是 NULLC.fun函数的

3、返回值是无值型的指针类型D.指针 fun指向一个函数,该函数无返回值6.关于静态变量的叙述中错误的是( )。(分数:2.00)A.C程序函数的形参不可以说明为 static型变量B.C程序函数中定义的赋有初值的静态变量,每调用一次函数,赋一次初值C.C程序函数中定义的自动变量,系统不自动赋确定的初值D.在 C程序的同一函数中,各复合语句内可以定义变量,其作用域仅限本复合语句内7.以下程序的输出结果是( )。#includestdiohint fun(int x,int y)if(x=y)return x;return(x+y)2);main()int a=4,b=5,c=6;printf(dn

4、,fun(2*a,fun(b,e);(分数:2.00)A.12B.6C.3D.18.以下程序的输出结果是( )。 #include double f(double x); double f(double x) return x*x+1; main() double a=0;int i; for(i=0;i30;i+=10)a+f(double)i); prinff(50fn,a);(分数:2.00)A.1401B.53C.503D.4049.若执行调用语句:n=fun(3);,则函数 fun总共被调用的次数是( )。int fun(int k) if(k1)return 0;else if(k

5、=1)return 1; else return fun(k 一 1)+1;(分数:2.00)A.1B.2C.3D.410.以下程序的输出结果是( )。(strcat 函数用以连接两个字符串) #include #include main() char a 20=ABCD0EFG0,b=IJK; strcat(a,b);printf(sn,a);(分数:2.00)A.OFGOIJKB.ABCDIJKC.UKD.EFG11.以下程序的输出结果是( )。fun(intx) main()int p; if(x=0x=1)return(3); printf(dn,fun(7);p=x 一 fun(x一

6、 2); return p;(分数:2.00)A.4B.3C.0D.212.关于全局变量作用域的叙述中正确的是( )。(分数:2.00)A.所有文件的所有范围B.所在程序的全部范围C.所在函数的全部范围D.由具体定义位置和 extern说明来决定范围13.关于变量的定义和说明的叙述中正确的是( )。(分数:2.00)A.对于变量而言,“定义”和“说明”这两个词实际上是同一个意思B.在复合语句中不能定义变量C.全局变量的存储类别可以是静态类D.函数的形式参数不属于局部变量14.以下程序的输出结果是( )。int f(int m) main()int n=0;static int n=0; pri

7、ntf(d,f(+n);n+=m;return n; printf(dn,f(+n);(分数:2.00)A.3,2B.1,2C.2,3D.3,115.int a=4;int f(int n) main()int t=0;static int a=5; int s=a,i=0;if(n2)int a=6;t+=a+; for(;i2;i+)s+=f(i);elseint a=7;t+=a+; printf(dn,s);retum t+a+; (分数:2.00)A.28B.30C.32D.3416.若 char *line5;,则以下叙述中正确的是( )。(分数:2.00)A.定义 line是一个

8、数组,每个数组元素是一个基类型为 char的指针变量B.定义 line是一个指向字符型函数的指针C.定义 line是一个指针数组,语句中的,一 c号称为间址运算符D.定义 line是一个指针变量,该变量可以指向一个长度为 5的字符型数组17.若有定义语句:float x5=10,20,30,40,50,*p=x;则错误引用 x数组元素的是( )。(分数:2.00)A.*PB.x5C.*(p+1)D.*x18.合法定义一维数组的是( )。(分数:2.00)A.int a5=0,1,2,3,4,5;B.char a一1,2,3,4,5;C.char a=A,B,C;D.int a5=012319.

9、不合法的数组定义是( )。(分数:2.00)A.int a43=1,2,3,1,2,3,1,2,3,1,2,3;B.int a3=0,1,1,2,3;C.int a3=1,2,3,4;D.int a4=1,2,3,1,2,3,1,2,3,1,2,3;20.设 int x23;则以下关于二维数组 x的叙述错误的是( )。(分数:2.00)A.数组 x可以看作是由 x0和 x1两个元素组成的一维数组B.可以用 x0=0;的形式为数组所有元素赋初值 0C.元素 x0可看作是由 3个整型元素组成的一维数组D.x0和 x1是数组名,分别代表一个地址常量21.关于字符数组定义中存在语法错误的是( )。(分

10、数:2.00)A.char ss20=right;B.char*ss6;ss1=right?;C.char*ss=right?;D.char ss620;ss1=right?;22.关于字符数组的定义中有语法错误的是( )。(分数:2.00)A.char str310;str1=guest;B.char str10=guest;C.char*str3;str1=guest;D.char*str=guest;23.下列能正确进行字符串赋值的是( )。(分数:2.00)A.char s5=ABCDE);B.char s5=A,B,C,D,E;C.char*s;s=ABCDE;D.char*s;pr

11、intf(s,s);24.若有以下程序段 char str412=an,bbb,ccccc,d),*strp4;int i;for(i=0;i4;i+)strpi=stri;不能正确引用字符串的选项是( )。(分数:2.00)A.strpB.str0C.strp3D.*strp25.关于字符串的叙述中正确的是( )。(分数:2.00)A.char ca35=Aa,BBb,CCc);是不合语法的B.字符串数组,是指数组中的每个元素都是一个存放字符串的一维数组C.char ca5=A,BB,CCC);是不合语法的D.char*ca3=A,BB,CCC;是不合语法的国家二级 C语言机试(函数和数组)

12、模拟试卷 17答案解析(总分:50.00,做题时间:90 分钟)一、选择题(总题数:25,分数:50.00)1.以下程序的输出结果是( )。 #include #include main() char a10=abc,b10=012,c10=xyz; strcpy(a+1,b+2); puts(strcat(a,c+1);(分数:2.00)A.12yzB.a2yz C.abcyzD.abyz解析:解析:程序执行 C语言库函数“strcpy(a+1,b+2)”后,字符数组 a的值为“a2”,再进行字符串的连接“strcat(a,c+1)”,此时字符数组 a的值为“a2yz”。2.关于子函数调用的

13、叙述中正确的是( )。(分数:2.00)A.实用的 C语言源程序总是由一个或多个函数组成B.不同函数的形式参数不能使用相同名称的标识符C.在 C语言的函数内部,可以定义局部嵌套函数D.用户自己定义的函数只能调用库函数 解析:解析:C 语言源程序可以由一个或多个源文件组成,每个源文件包含一个或多个函数,这些函数可以是自定义函数,也可以是库函数,各个函数之间没有主从关系。3.设 int fun(int *p)return *p;,则此函数返回值是( )。(分数:2.00)A.NULLB.一个整数 C.形参 p中存放的值D.形参 p的地址值解析:解析:由题目中的定义可知,返回值为整型指针变量 p所指

14、向的数据。4.关于函数调用的叙述中错误的是( )。(分数:2.00)A.C程序必须由一个或一个以上的函数组成B.函数形参的值也可以传回给对应的实参 C.若函数有返回值,必须通过 return语句返回D.函数调用可以作为一个独立的语句存在解析:解析:一个 C程序中可以包含任意多个不同名的函数,但只有一个主函数,即 main()函数。一个C程序总是从主函数开始执行。函数的值通过 return语句返回,return 语句中的表达式的值就是所求的函数值。在 C语言中。数据只能从实参单向传递给形参,称为“按值”传递。也就是说,用户不可能在函数中改变对应实参的值(指针作为实参的除外)。5.关于 void

15、fun()的叙述中正确的是( )。(分数:2.00)A.fun函数无返回值 B.fun函数的返回值是 NULLC.fun函数的返回值是无值型的指针类型D.指针 fun指向一个函数,该函数无返回值解析:解析:本题主要考查函数的声明,void fun()即表示 fun函数没有输入参数,函数返回 void表示函数无返回值。6.关于静态变量的叙述中错误的是( )。(分数:2.00)A.C程序函数的形参不可以说明为 static型变量B.C程序函数中定义的赋有初值的静态变量,每调用一次函数,赋一次初值 C.C程序函数中定义的自动变量,系统不自动赋确定的初值D.在 C程序的同一函数中,各复合语句内可以定义

16、变量,其作用域仅限本复合语句内解析:解析:在函数定义的静态变量,只需要赋值一次,即可保存初始值,不需要每次调用时都赋初始值。7.以下程序的输出结果是( )。#includestdiohint fun(int x,int y)if(x=y)return x;return(x+y)2);main()int a=4,b=5,c=6;printf(dn,fun(2*a,fun(b,e);(分数:2.00)A.12B.6 C.3D.1解析:解析:首先看里面的 fun(b,c),传参 5,6,得到返回值为 5(112=5 类型相同相除得同类型的),再计算外面的 fun(8,5)输出就是 6;故答案为 B项

17、。8.以下程序的输出结果是( )。 #include double f(double x); double f(double x) return x*x+1; main() double a=0;int i; for(i=0;i30;i+=10)a+f(double)i); prinff(50fn,a);(分数:2.00)A.1401B.53C.503 D.404解析:解析:题目中函数 f的作用是对形参 x求平方再加 1,所以在主函数中,循环第一次执行后变量 a的值等于 1,第二次执行后,变量 a的值等于 102,第三次执行后,变量 a的值等于 503。9.若执行调用语句:n=fun(3);,

18、则函数 fun总共被调用的次数是( )。int fun(int k) if(k1)return 0;else if(k=1)return 1; else return fun(k 一 1)+1;(分数:2.00)A.1B.2C.3 D.4解析:解析:考查了函数的递归调用,当执行调用语句 n=fun(3)时,返回 n=fun(2)+1,再执行 fun(2),返回 n=fun(1)+1+1,而 fun(1)等于 1,所以最后 n的值等于 3。10.以下程序的输出结果是( )。(strcat 函数用以连接两个字符串) #include #include main() char a 20=ABCD0E

19、FG0,b=IJK; strcat(a,b);printf(sn,a);(分数:2.00)A.OFGOIJKB.ABCDIJK C.UKD.EFG解析:解析:在字符串中字符0表示字符串的结束标志是系统自动加上的,所以字符串 a和 b相连接的结果为 ABCDIJK。11.以下程序的输出结果是( )。fun(intx) main()int p; if(x=0x=1)return(3); printf(dn,fun(7);p=x 一 fun(x一 2); return p;(分数:2.00)A.4B.3C.0D.2 解析:解析:本题考查递归调用。因为在函数 fun(x)中,如果参数 x等于 0或等于

20、 1时,返回值为“3”。否则p=xfun(x 一 2)这是一个递归函数,所以在主函数调用 fun(7)的时候,其过程为:fun(7)=7一 fun(5)=7一(5 一 fun(3)=7一(5 一(3 一 fun(1)=7一(5 一(33)=75=2,所以最后的输出结果为2。12.关于全局变量作用域的叙述中正确的是( )。(分数:2.00)A.所有文件的所有范围B.所在程序的全部范围C.所在函数的全部范围D.由具体定义位置和 extern说明来决定范围 解析:解析:在 C语言中,全局变量的作用范围最大,其有效范围从定义变量的位置开始到本源文件结束。如果需要在其他源文件中使用该全局变量,则可以在其

21、他源文件中使用 extern关键字来声明该全局变量,这样该全局变量的作用域就被扩展到以 extern声明了该全局变量的位置开始到此源文件结束。13.关于变量的定义和说明的叙述中正确的是( )。(分数:2.00)A.对于变量而言,“定义”和“说明”这两个词实际上是同一个意思B.在复合语句中不能定义变量C.全局变量的存储类别可以是静态类 D.函数的形式参数不属于局部变量解析:解析:C 语言的关键字 static说明符说明全局变量时,此变量可称作静态全局变量。静态全局变量只限于本编译单位使用,不能被其他编译单位所引用。在一个函数内部定义的变量(包括形参)是局部变量,它只在本函数范围内有效。不同函数中

22、可以使用相同名字的局部变量,它们代表不同的对象,互不影响。在函数内部复合语句中也可以定义变量,这些变量都是局部变量,只在本复合语句中有效。14.以下程序的输出结果是( )。int f(int m) main()int n=0;static int n=0; printf(d,f(+n);n+=m;return n; printf(dn,f(+n);(分数:2.00)A.3,2B.1,2 C.2,3D.3,1解析:解析:由于变量 n为静态局部变量,所以在主函数中第一次调用函数 f后,变量 n的值等于 1。当第二次调用函数 f时,在函数 f的内部静态局部变量 n的值仍然保留等于 1,所以返回函数值

23、等于 2。15.int a=4;int f(int n) main()int t=0;static int a=5; int s=a,i=0;if(n2)int a=6;t+=a+; for(;i2;i+)s+=f(i);elseint a=7;t+=a+; printf(dn,s);retum t+a+; (分数:2.00)A.28 B.30C.32D.34解析:解析:本题考查变量作用域。程序中首先定义了全局整型变量 a=4。在 int f(int n)函数中定义了局部静态整型变量并进行了初始化即 static int a=5,在 int f(int n)函数中对 n是否是偶数进行判断,如果

24、 n是奇数,则函数的返回值为 11,局部静态整型变量 a=6;如果 n是偶数,则函数的返回值为 12,局部静态整型变量 a=6。所以在 main()函数中循环首先执行 s+=f(0)语句,而 f(0)返回值 12,所以第一次循环结束 s的值等于 4+12=16;第二次开始执行 f(1)时,在 f(1)中执行“if(n2)int a=6;t+=a+;”和“return t+a+;”这两条语句。这时 t=6,a=6(静态局部变量第一次循环后其值加1不释放,执行二次循环量,其值仍有效),所以 f(1)的返回值等于 12。再在主函数中执行 s+=f(1)语句,即 16+12=28。16.若 char

25、*line5;,则以下叙述中正确的是( )。(分数:2.00)A.定义 line是一个数组,每个数组元素是一个基类型为 char的指针变量 B.定义 line是一个指向字符型函数的指针C.定义 line是一个指针数组,语句中的,一 c号称为间址运算符D.定义 line是一个指针变量,该变量可以指向一个长度为 5的字符型数组解析:解析:本题考查指针数组的定义。本题中 line是一个指针数组用来存放指针变量,有 5个元素。每个元素都是一个指针变量。17.若有定义语句:float x5=10,20,30,40,50,*p=x;则错误引用 x数组元素的是( )。(分数:2.00)A.*PB.x5 C.

26、*(p+1)D.*x解析:解析:x 是一个一维 float类型的数组,长度为 5,下标范围是 04,指针 p指向数组 x。选项 A中*p 是取数组首元素 x0的值;选项 B下标超出范围;选项 C中*(p+1)表示 x1的地址,因此*(p+1)是取 x1元素值;选项 D中,数组名 x本身代表数组的首地址,因此*x 表示取元素 x0的值。18.合法定义一维数组的是( )。(分数:2.00)A.int a5=0,1,2,3,4,5;B.char a一1,2,3,4,5; C.char a=A,B,C;D.int a5=0123解析:解析:本题考查一维数组的定义,C 语言中一维数组的定义必须使用说明长

27、度,长度可以省略。选项 A定义的数组长度为 5,元素个数为 6,超过数组长度,错误;选项 B正确,编译器会根据初始化元素的个数自动计算数组的长度。选项 C中没有使用“”,不能定义一维数组;选项 D中数组元素的初始化必须使用大括号。19.不合法的数组定义是( )。(分数:2.00)A.int a43=1,2,3,1,2,3,1,2,3,1,2,3;B.int a3=0,1,1,2,3;C.int a3=1,2,3,4;D.int a4=1,2,3,1,2,3,1,2,3,1,2,3; 解析:解析:二维数组定义和初始化是允许省略行下标,不允许省略列下标,因此 int a4的定义有误。20.设 in

28、t x23;则以下关于二维数组 x的叙述错误的是( )。(分数:2.00)A.数组 x可以看作是由 x0和 x1两个元素组成的一维数组B.可以用 x0=0;的形式为数组所有元素赋初值 0 C.元素 x0可看作是由 3个整型元素组成的一维数组D.x0和 x1是数组名,分别代表一个地址常量解析:解析:C 语言中二维数组的元素在内存中占一系列连续的存储单元。数组元素在内存中的排列顺序是先存放第 0行的元素,再存放第 1行的元素称这种存放顺序为按行存放。可以把一个二维数组看成是一个一维数组,每个数组元素又是包含有若干个元素的一维数组。另外在给二维数组赋初值时可以不用含花括号对。例如,int a43=1

29、,2,4,5;在编译时,系统将按 a数组元素在内存中排列的顺序,将花括号内的数据一一对应地赋给各个元素,若数据不足,系统将给后面的元素自动补初值 0。以上将给a数组第一行的元素和第二行的第一个元素依次赋予 1、2、4、5,其他元素的初值都为 0。21.关于字符数组定义中存在语法错误的是( )。(分数:2.00)A.char ss20=right;B.char*ss6;ss1=right?;C.char*ss=right?;D.char ss620;ss1=right?; 解析:解析:本题考查字符数组,选项 D中定义了二维数组 ss,可以用于存储字符串,但是字符串的存储不能通过赋值,仅可以初始化

30、或者输入得到,而选项 C和 A不同,选项 B为指针数组,对于指针变量可以保存常量字符串的地址。22.关于字符数组的定义中有语法错误的是( )。(分数:2.00)A.char str310;str1=guest; B.char str10=guest;C.char*str3;str1=guest;D.char*str=guest;解析:解析:本题考查字符数组的定义和使用。选项 A定义了一个二维字符数组,第二句是直接给字符数组赋值,错误。C 语言中不能直接给字符数组赋值;选项,B、C 和 D都是正确的。23.下列能正确进行字符串赋值的是( )。(分数:2.00)A.char s5=ABCDE);B

31、.char s5=A,B,C,D,E;C.char*s;s=ABCDE; D.char*s;printf(s,s);解析:解析:字符串存储要有结束符“0”且要占用一个空间其大小是一个字符,选项 A、B 的空间不够:printf用来输出字符,不能输入字符串。24.若有以下程序段 char str412=an,bbb,ccccc,d),*strp4;int i;for(i=0;i4;i+)strpi=stri;不能正确引用字符串的选项是( )。(分数:2.00)A.strp B.str0C.strp3D.*strp解析:解析:*strp 是含有 4个元素的指针数组,分别保存了二维数组 str中的

32、4个字符串的首地址,因此 strp为二级地址,不能保存字符串的首地址,*strp 或者 strp0中存放了字符串“aa”的首地址。所以不能正确引用字符串的为选项 A。25.关于字符串的叙述中正确的是( )。(分数:2.00)A.char ca35=Aa,BBb,CCc);是不合语法的B.字符串数组,是指数组中的每个元素都是一个存放字符串的一维数组 C.char ca5=A,BB,CCC);是不合语法的D.char*ca3=A,BB,CCC;是不合语法的解析:解析:字符串数组每个元素为一个字符串,选项 B的说法正确。选项 A和 C对于 ca的定义是正确的。选项 D定义一个指针数组,可以保存多个字符串的首地址。

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

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

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