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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

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

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