[计算机类试卷]国家二级(C语言)笔试模拟试卷126及答案与解析.doc

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

1、国家二级( C语言)笔试模拟试卷 126及答案与解析 1 下列关于栈的描述中错误的是 _。 ( A)栈是先进后出的线性表 ( B)栈只能顺序存储 ( C)栈具有记忆作用 ( D)对栈的插入和删除操作中,不需要改变栈底指针 2 结构化程序设计的主要特点是 _。 ( A)模块化 ( B)每个控制结构具有封装性 ( C)每个控制结构具有独立性 ( D)每个控制结构只有一个入口和一个出口 3 设有如下关系表:( A) T=RS ( B) T=R S ( C) T=RS ( D) T=R/S 4 用 C语言编写的代码 _。 ( A)可立即执行 ( B)是一个源程序 ( C)经过编译即可执行 ( D)经过

2、编译解释才能执行 5 在一个 C程序中 _。 ( A)用户标识符中可以出现下划线和中划线 (减号 ) ( B)用户标识符中不可以出现中划线,但可以出现下划线 ( C)用户标识符中可以出现下划线,但不可以放在用户标识符的开头 ( D)用户标识符中可以出现下划线和数字,它们都可以放在用户标识符的开头 6 以下选项中合法的用户标识符是 _。 ( A) long ( B) _2Test ( C) 3Dmax ( D) A. dat 7 以下选项中可作为 C语言合法常量的是 _。 ( A) -80 ( B) -80 ( C) -8e1.0 ( D) -80.0e 8 有以下程序: main() unsi

3、gped int a; int b=-1; a=b; printf(“% u“, a); 程序运行后的输出结果是 _。 ( A) -1 ( B) 65535 ( C) 32767 ( D) -32768 9 下列程序执行后的输出结果 是 _。 # define MA(x) x*(x-1) main() int a=1, b=2; printf(“% dn“, MA(1+a+b); ( A) 6 ( B) 8 ( C) 10 ( D) 12 10 有以下程序: main() int i=1, j=2, k=3; if(i+=1 程序运行后的输出结果是 _。 ( A) 1 2 3 ( B) 2 3

4、 4 ( C) 2 2 3 ( D) 2 3 3 11 以下程序运行后的输出结果是 _。 main() int a,b,c; a=10;b=20;c=(a%b 1)|(a/b 1); printf(“%d %d %dn“,a,b,c); ( A) 10 20 0 ( B) 20 10 0 ( C) 10 10 0 ( D) 20 20 0 12 下列关于单目运算符、 的叙述中正确的是 _。 ( A)它们的运算对象可以是任何变量和常量 ( B)它们的运算对象可以是 char型变量和 int型变量,但不能是 float型变量 ( C)它们的运算对象可以是 int型变量,但不能是 double型变量

5、和 float型变量 ( D)它们的运算对象可以是 char型变量、 int型变量和 float型变量 13 有以下程序: main() inta;char c=10; float f=100.0;double x; a=f/=c*=(x=6.5); printf(“%d %d %3.1f %3.1fn“,a,c,f,x); 程序运行后的输出结果是 _。 ( A) 1 65 1 6.5 ( B) 1 65 1.5 6.5 ( C) 1 65 1.0 6.5 ( D) 2 65 1.5 6.5 14 有以下程序: main() int c=35;printf(“%dn“,e 程序运行后的输出结果

6、是 _。 ( A) 0 ( B) 70 ( C) 35 ( D) 1 15 已知 i、 j、 k为 iht型变量,若从键盘输入: 1,2,3回车,使 i的值为 1、 j的值为 2、 k的值为 3,以下选项中正确的输入语句是 _。 ( A) scanf(“%d %d %d“,若要通过 scanf(“%d,%d“,printf(“%xn“,x); ( A) 88 ( B) 86 ( C) 77 ( D) 21 18 当把以下 4个表达式用作 if语句的控制表达式时,有一个选项与其他 3个选项含义不同,这个选项是 _。 ( A) k%2 ( B) k%2=1 ( C) (k%2)!=0 ( D) !

7、k 2=1 19 设变量 a、 b、 c、 d和 y都已正确并赋值。若有以下 if语句: if(a b) if(c=d)y=0; else y=1; 该语句所表示的含义是 _。 ( A) ( B) ( C) ( D) 20 有以下程序: main() int n=0,m=l,x=2; if(!n) x-=l: if(!m) x-=2; if(!x) x-=3; printf (“ %dn“,x); 执行后的输出结果是 _。 ( A) 2 ( B) 1 ( C) 3 ( D) 6 21 若有以下程序段 (n所赋值的是八进制数 ): int m=32767, n=032767; printf(“%

8、 d, % on“, m, n); 执行后输出结果是 _。 ( A) 32767, 32767 ( B) 32767, 032767 ( C) 32767, 77777 ( D) 32767, 077777 22 以下叙述中正确的是 _。 ( A)调用 printf函数时,必须要有输出项 ( B)调用 putchar函数时,必须在之前包含头文件 stdio. h ( C)在 C语言中,整数可以以十二进制、八进制或十六进制的形式输出 ( D)调用 getchar函数读人字符时,可以从键盘上输入字符所对应的 ASCII码 23 有定义语句: int a=1, b=2, c=3, x;,则以下选项中

9、各程序段执行后, x的值不等于 3的是 _。 ( A) if(c a)x=1; else if(b a)x=2; else x=3; ( B) if(a 3)x=3; else if(a 2)x=2; else x=1; ( C) if(a 3)x=3; if(a 2)x=2; if(a 1)x=1; ( D) if(a b)x=b; if(b c)x=c; if(c a)x=a; 24 若指针 p已正确定义,要使 p指向两个连续的整型动态存储单元,不正确的语句是 _。 ( A) p=2*(int*)malloc(sizeof(int); ( B) p=(int*)mallet(2*sizeo

10、f(int); ( C) p=(int*)malloc(2*2); ( D) p=(int*)calloc(2, sizeof(int); 25 有以下程序段: int n, t=1, s=0; scanf(“% d“, dos=s+t; t=t-2; )while(t!=n); 为使程序不陷入死循环,从键盘输入的数据应该是 _。 ( A)任意正奇数 ( B)任意负偶数 ( C)任意正偶数 ( D)任意负奇数 26 有如下程序; int func(int a, int b) return(a+b); main() int x=2, y=5, z=8, r; r=func(func(x, y),

11、 z); printf(“% dn“, r); 该程序的输出的结果是 _。 ( A) 12 ( B) 13 ( C) 14 ( D) 15 27 有以下程序: main() int a=1, b; for(b=1; b =10; b+) if(a=8)break; if(a % 2=1)a+=5; continue; a-=3; printf(“% dn“, B) ; 程序运行后的输出结果是 _。 ( A) 3 ( B) 4 ( C) 5 ( D) 6 28 有以下程序: main() int a33, *p, i; p= for(i=0; i 9; 1+)pi=i; for (i=0; i

12、3; i+)printf(“% d“, a1i); 程序运行后的输出结果是_。 ( A) 0 1 2 ( B) 1 2 3 ( C) 2 3 4 ( D) 3 4 5 29 以下能正确定义二维数组的是 _。 ( A) int a3; ( B) int a3=2*3; ( C) int a3=; ( D) int a23=1), 2, 3,4; 30 有以下程序: main() char a7=“a00a00“; int i, j; i=sizeof(a); j=strlen(a); printf(“% d % dn“, i, j); 程序运行后的输出结果是 _。 ( A) 2 2 ( B) 7

13、 6 ( C) 7 2 ( D) 6 2 31 以下程序中函数 setup的功能是返回形参指针 s1和 s2所指字符串中较小字符串的首地址: # include stdio. h # include string. h char * scmp(char * s1, char * s2) if(strcmp(s1, s2) 0) return(s1); else return(s2); main() int i; char string20, str320; for(i=0; i 3; i+)gets(stri); strcpy(string, scmp(str0, str1); strcpy(

14、string, scmp(string, str2); printf(“% sn“, string); 若运行时依次输入: abcd、 abba和 abc3个字符串,则输出结果为_。 ( A) abcd ( B) abba ( C) abc ( D) abca 32 s1和 s2已正确定义并分别指向两个字符串。若要求:当 s1所指串大于 s2所 指串时,执行语句 S。则以下选项中正确的是 _。 ( A) if (s1 s2)S; ( B) if(strcmp(s1, s2)S; ( C) if(strcmp(s2, s1) 0)S; ( D) if(strcmp(s1, s2) 0)S; 33

15、 程序中对 fun函数有如下说明: void * fun(); 此说明的含义是 _。 ( A) fun函数无返回值 ( B) fun函数的返回值可以是任意的数据类型 ( C) fun函数的返回值是无值型的指针类型 ( D)指针 fun指向一个函数 ,该函数无返回值 34 有以下程序: # define P 3 yoid F(int x) return(p*x*x); main() printf(“% dn“, F(3+5); 程序运行后的输出结果是 _。 ( A) 192 ( B) 29 ( C) 25 ( D)编译出错 35 以下程序的输出结果是 _。 long fun(int n) lon

16、g s; if(n=1 | n=2)s=2; else s=n-fun(n-1); return s; main() printf(“% 1dn“, fun(3); ( A) 1 ( B) 2 ( C) 3 ( D) 4 36 有以下程序: void swapl(int c0, int c1) int t; t=coo; coo=o1o; c1o=t; void swap2(int * c0, int * c1) int t; t=*c0; *c0=*c1; *c1=t; main() int a2=3, 5, b2=A3, 5); swapl(a, a+1); swap2( printf(“

17、%d%d%d%dn“, a0, a1, b0,b1); 程序运行后的输出结果是 _。 ( A) 3 5 5 3 ( B) 5 3 3 5 ( C) 3 5 3 5 ( D) 5 3 5 3 37 有以下程序: int f(int n) if(n=1)retuxn 1; else return f(n-1)+1; main() int i, j=0; for(i=1; i 3; i+)j+=f(i); printf(“% dn“, j); 程序运行后的输出结果是 _。 ( A) 4 ( B) 3 ( C) 2 ( D) 1 38 若已经定义的函数有返回值,则以下关于该函数调用的叙述中错误的是_。

18、 ( A)函数调用可以作为独立的语句存在 ( B)函数调用可以作为一个函数的实参 ( C)函数调用可以出现在表达式中 ( D)函数调用可以作为一个函数的形参 39 有以下程序: int f(int b4) int i, j, s=0; for(j=0; j 4; j+) i=j; if(i 2)i=3-j; S+=bij; return s; main() int a44=1, 2, 3, 4, 0, 2, 4, 6, 3, 6, 9, 12, 3, 2, 1, 0; printf(“%dn“, f(a); 执行后的输出结果是_。 ( A) 12 ( B) 11 ( C) 18 ( D) 16

19、 40 以下循环体的执行次数是 _。 main() int i, j; for(i=0, j=1; i =j+1; i+=2, j-)printf(“% dn“, i); ( A) 3 ( B) 2 ( C) 1 ( D) 0 41 实现算法所需的存储单元多少和算法的工作量大小分别称为为算法的【 】。 42 数据结构包括数据的逻辑结构、数据的【 】以及对数据的操作运算。 43 个类可以从直接或间接的祖先中继承所有属性和方法。采用这个方法提高了软件的【 】。 44 面向对象的模型中,最基本的概念是对象和【 】。 45 软件维护活动包括以下几类:改正性维护、适应性维护、【 】维护和预防性维护。 4

20、6 下面程序的输出是【 】。 main() int arr10,i,k=0; for(i=0;i 10;i+) arri=i; for(1;i 4;i+) k+=arri+i; printf(“%dn“,k); 47 若 a=10, b=20,则表达式 !(a b) 的值是【 】 48 有以下程序 int fa(int x)return x*x; int fb(int x)retum x*x*x; int f(int(*fl)int(*12)(),intx) return f2(x)-f1(x); main() int i;i=f(fa,fb,2);printf(“%dn“,i); 程序运行后

21、,输出结果是【 】 49 下面程序的输出是【 】 main() enum ememl=3,em2=1,em3; char*aa=“AA,“BB“,“CC“,“DD“ printf(“%s%s%n“,aaem1,aaem2,aaem3); 50 下列程序的输出结果是【 】 int t(intx,inty,int cp,int dp) cp=x*x+y*y; dp=x*x-y*y; main() int, a=4,b=3,c=5,d=6; t(a,b,c,d); printf(“%d %dn“,c,d); 51 函数 de1ete(s,i,n)的作用是从字符串 s中删除从笫 i个字符开始的 n个字

22、符,请填空。 void de1ete(chars,int i,int n) int j,k,length=O; whi1e(slength) 【 】 -i; j=i; if(【 】 ) k=i+n; if(i+n =length) whi1e(k length) sj+=sk+; sj=0; 国家二级( C语言)笔试模拟试卷 126答案与解析 1 【正确答案】 B 【试题解析】 栈是一种特殊的线性表,插入和删除操作只能在线性表的一端进行,不需要改变栈底指针。栈是先进后出的线性表,由此可以看出,栈具有记忆作用。栈还可以用链式存储。 2 【正确答案】 D 【试题解析】 按照结构化设计方法设计的程序

23、具有以下特点: (1)程序易于理解、使用和维护,程序员采用结构化编程方法,便于控制、降低程序的复杂性,因此容易编写程序,便于验证程序的正确性。结构化程序清晰易读,可理解性好,程序员能够进行逐步求精、程序证明和测试,以确保程序的正确性。程序容易阅读并被人理解,便于用户使用和维护。 (2)提高了编程工作的效率,降低了软件开发成本。由于结构化编程方法能够把错误控制到最低限度,因此能够减少调试和查错时间。结构化是由一些为数不多的基本结构模块组成,这些模块甚至可以由机器自动生成,从而极大地 减轻了编程工作量。 (3)结构化程序设计选用的每个控制结构只允许有一个入口和一个出口。 3 【正确答案】 B 【试

24、题解析】 仔细观察 3个表可以看到, R, S, T具有相同的关系模式,且 T包含了 R和 S的所有元组,故 T=R S。 4 【正确答案】 B 【试题解析】 用 C语言编写的代码是一个源程序,不能立即执行,如果没有错误,则经过编译、连接后即可执行。 5 【正确答案】 B 【试题解析】 C语言中标识符的命名规则为: 标识符由数字、字母、下划线组成; 标识符的首字符必须为字母或下划线; 标识符不能为 C语言的保留字。C语言中英文字母区分大小写,即 A与 a表示不同的标识符。 6 【正确答案】 B 【试题解析】 本题选项 A中 long为 C语言的保留字,选项 C中 3Dmax是以数字作为首字符,

25、选项 D中 A. dat中有非法标识符字符 “.”,所以正确答案为 B。 7 【正确答案】 A 【试题解析】 对于 B,以 0开头表示八进制数,八进制数的范围是 0 7,所以 B不对; c后面必须是整数,所以 C、 D也不合法。 8 【正确答案】 B 【试题解析】 int型数据 -1与 unsigned int型数据 65535在内存中的存储内容相同。 9 【正确答案】 B 【试题解析】 MA(1+a+b)展开为: 1+a+h*(1+a+b-1)=1+1+2(1+1+2-1)=2+23=8。 10 【正确答案】 D 【试题解析】 对于 if语句,根据优先级顺序,先判断 (+j=-3|k+=3)

26、,此时,+j=-3成立,就不用计算 “|”后面的表达式,此时 k=3,由于 i+=1成立,自加后 i=2, if语句的条件为真,故输出的结果为: 2, 3, 3。 11 【正确答案】 A 【试 题解析】 a%b=1 1不成立,根据 “|”的性质,不需要看后面的表达式,就可以得出 c=0。 12 【正确答案】 D 【试题解析】 本题考查 +与 -运算符的问题。自增运算符 +与自减运算符 -的运算对象只能是变量,不能是表达式或常量,变量的数据类型可以是 int、 char、float和 double型,其结果是将变量的值加 1或减 1。 13 【正确答案】 B 【试题解析】 本题中变量 a是 in

27、t型, c是 char型, f是 float型, x是 double型。根据变量的数据类型,执行语句 a=f/=c*=(x=6.5)时,首先执行 x.6.5得x=6.5;然后执行 c*=x得 c=cx=106.5=65;执行 f/=c得 f=f/c=100.0/65= 1.5385;最后执行 a=f得 a=1。以 “%3.1f”格式输出变量 f和 x,小数点后面保留一位有效数字,故正确答案为 B。 14 【正确答案】 C 【试题解析】 “ 这种赋值方式比较直观,把第 1个大括号内的数据赋给第 1行的元素,第 2个大括号内的数据赋给第 2行的元素,即按行赋值。 可以将所有数据写在一个大括号内,按

28、数组排列的顺序对各个元素赋初值。 可以对部分元素赋初值,没有初始化的元素值为 0。 如果对全部数组元素赋初值,则定义数组时对第一维的长度可以不指定,但第二维的长度不能省略。 30 【正确答案】 C 【试题解析】 sizeof(a)是求 a在内存中的字节数,由于定义了 a的长度为 7,所以 sizeof(a)=7, strlen(a)是求字符串 a的长度,因为在第一个 a0有一个结束标志符 0,在其之后的所有字符均不记入 a中,所以 strlen(a)=2。 31 【正确答案】 B 【试题解析】 函数 scmp的功能是比较两个符号串的大小,返回值较小的那个符号串。 str0中存放 “abcd“、

29、 str1中存放 “abba“、 str2中存放 “abc“,执行完语句 strcpy(string, scmp(sty0, sir1);后 string中存放 “abba“,执行完语句strcpy(string, scmp(string, str2);后 string中存放 “abba“。 32 【正确答案】 D 【试题解析】 C语言中,用 strcmp(s1, s2)来比较串 s1和 s2的大小,当 s1 s2时, strcmp的值为正数;当 s1=s2时, strcmp的值为 0;当 s1 s2时, strcmp的值为负数。因此 D选项的 if语句正确。 33 【正确答案】 C 【试题解

30、析】 C语言中函数的定义分为有参函数的定义和无参函数的定义。无参函数的定义形式为: 类型标识符函数名 () 说明部分 语句 有参函数的定义有两种形式: 类型标识符函数名 (形式参数列表 ) 形式参数说明 说明部分 语句 或 类型标识符函数名 (类型名 形参 1,类型名 形参 2, ) 说明部分 语句 其中函数名为用户定义的 C语言的合法标识符,其前面的类型标识符用来说明函数值的类型,可以是 C允许的任何类型,如 int、 char、 float、 double和指针类型等。当函数值为整型时类型标识符可以省略,如 果函数没有返回值,类型标识符可以是 void型。当函数的形参多于一个时,各个形参之

31、间用逗号分隔。 34 【正确答案】 D 【试题解析】 F函数没有返回值,但是函数体中又有 return,因此编译出错。 35 【正确答案】 A 【试题解析】 在主函数中调用 fun时,形参 n=3,所以 fun中变量 s=n-fun(n-1)=3-fun(2)=3-2=1,即 fun(3)=1。 36 【正确答案】 A 【试题解析】 swapl(a, a+1)是将 a, a+1的地址进行传递,运行 swapl以后,a0, a1的值不发生改变,而 swap2( i=2:k=2+arr2+2 即 k=6; i=3:k=6+arr3+3 即 k=12; 47 【正确答案】 0 【试题解析】 已知 a

32、=l0, b=20,所以逻辑表达式 a b的值为 true,即为 1,在这个表达式前面有 个 逻辑运算符 !表示反操作,所以整个语句的值应当为 false,即为 0。 48 【正确答案】 4 【试题解析】 在主函数中调用函数 f,函数 f有三个参数,形参 n与 C分别是两个指向函数的指针。在 f中执行 nf2(x),实际上是执行了 fo(2)-fa(2),故执行 i(fa,fb,2)后 i的值为 23-22=4。 49 【正确答案】 DDBBCC 【试题解析】 C语言对枚举的定义规定:在枚举中声明的各个枚举元素,如果没有明确指出某个枚举元素的值,它的上 个元素存在并有明确值的情况下,这个牧举元

33、素的值 为其上一个元素的值 +1。在本题中,没有明确说明枚举元素 em3的值,则 em3=cm2+1=1+1=2,进而可知,在 printf()打印函数中,要打印的数组元素是 aa3、 aa1、 aa2,因此最后的打印结果应当为 “DDBBCC“。 50 【正确答案】 56 【试题解析】 本题中 a, b, c, d是实参, x, y, cp, dp是形参。 C语言规定,实参变量对形参变量的数据传递是 “值传递 ”。即单向传递,只由实参传给形参,而不能由形参传回来给实参。在内存中,实参单元与形参单元是不同的单元在调用函数时, 给形参分配存储单元,并将实参对应的值传递给形参,调用结束后,形参单元被释放,实参单元仍保留并维持原值。因此,程序的输出结果是56。 51 【正确答案】 length+ i length 【试题解析】 第 个循环极有可能是计算串的长度,在 i =length时字符才被删除,被删除的是从第 i个到第 i+n或最后 个间的所有字符。删除前,应判断 i=length。由于已经进行了 -i运算,故实际应填入 i length。

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

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

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