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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

【计算机类职业资格】二级C语言笔试-188及答案解析.doc

1、二级 C 语言笔试-188 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:50,分数:60.00)1.以下叙述中正确的是( )。(分数:1.00)A.构成 C 程序的基本单位是函数B.可以在一个函数中定义另一个函数C.main()函数必须放在其他函数之前D.所有被调用的函数一定要在调用之前进行定义2.设有定义语句;char c1=92,c2=92;,则以下表达式中值为零的是( )。(分数:1.00)A.c1c2B.c1int f(int *(分数:1.00)A.for(i=0;i3;i+)for(j=2;i=i;j-)if( xj+1xj) k=xj;xj=xj+1

2、;xj+1=k; for(i=0;i3;i+)for(j=4;j7-i;j+)if(xjxj+1) k=xj;xj=xj+1;xj+1=k; for(i=0;i8;i+) printf(“%d“,xi);printf(“/n“);程序运行后的输出结果是( )。(分数:1.00)A.75310246B.01234567C.76310462D.135702467.以下程序段中与语句 k=ab?(bc?1:0):0;功能等价的是( )。(分数:1.00)A.if(ab)scanf(“%c,%c,%d,%d“,printf(%c,%c,%c,%c/n“,a,b,c,d);若运行时从键盘上输入 6,5,

3、65,66回车。则输出结果是( )。(分数:1.00)A.6,5,A,BB.6,5,65,66C.6,5,6,5D.6,5,6,611.以下所列的 C 语言常量中,错误的是( )。(分数:1.00)A.0xFFB.1.2e0.5C.2LD./7212.有以下程序:main()int a=3,b=4,c=5,d=2;if(ab)if(bc)printf(“%d“,d+ +1);elseprintf(“%d“,+d +1);printf(“%d/n“,d);程序运行后的输出结果是( )。(分数:1.00)A.2B.3C.43D.4413.有以下定义语句:double a,b; int w; lon

4、g c;若各变量已正确赋值,则下列选项中正确的表达式是( )。(分数:1.00)A.a=a+b=b+B.w%(int)a+b)C.(c+w)%(int)aD.w=a=b14.有以下程序:#define f(x) x*xmain()int i;i=f(4+4)/f(2+2);printf(“%d/n“,i);执行后输出结果是( )。(分数:1.00)A.28B.22C.16D.415.有以下程序:void fun(int *a,int i,int i)int t;if(ij)t=ai;ai=aj;ai=t;i+; j-;fun(a,i,j);main()int x=2,6,1,8),i;fun(

5、x,0,3),for(i=0;i4;i+) printf(“%2d“,xi);printf(“/n“);程序运行后的输出结果是( )。(分数:1.00)A.1268B.8621C.8162D.861216.关系表中的每一横行称为一个( )。(分数:1.00)A.元组B.码C.属性D.字段17.设有定义语句:int x6=2,4,6,8,5,7), *p=x, i;要求依次输出 x 数组 6 个元素中的值,不能完成此操作的语句是( )。(分数:1.00)A.for(i=0;i;i+) printf(“%2d“,*(p+);B.for(i=0;i6;i+) printf(“%2d“,*(p+i);

6、C.for(i=0;i6;i+) printf(“%2d“,*p+);D.for(i=0;i6;i+) printf(“%2d“,(*p)+);18.有以下程序:main()int a3=1,2,3),4,5,0),(*p(分数:1.00)A.3,i;19.在深度为 5 的满二叉树中,结点的个数为( )。(分数:1.00)A.32B.31C.16D.1520.已定义以下函数:fun (int *p)return *P; 该函数的返回值是( )。(分数:1.00)A.不确定的值B.形参 p 中存放的值C.形参 p 所指存储单元中的值D.形参 p 的地址值21.有以下程序:main()int p7

7、=11,13,14,15,16,17,18);i=0,k=0;while(i7 i+;printf(“%d/n“,k);执行后输出结果是( )。(分数:1.00)A.58B.56C.45D.2422.有以下程序:main()chara=“abcdefg“,b10=“abcdefg“;printf(“%d %d/n“,sizeof((分数:1.00)A.,sizeof(B.);23.下列关系运算中,能使经运算后得到的新关系中元组个数少于原来关系中元组个数的是( )。(分数:1.00)A.选择B.投影C.连接D.并24.下面程序的输出结果是( )。#include“stdio.h“int sub(

8、int m)static a=4;a+=m;return a;void main()int i=2,j=1,k;k=sub(i);k=sub(j);printf(“%d“,k);(分数:1.00)A.6B.7C.8D.925.下面这个程序段的时间复杂度是( )。for (i=1; in; i+)y=y+3;for (j=0;j=(2*n);j+)x+;(分数:1.00)A.O(10g2n)B.O(n)C.O(nlog2n)D.O(n2)26.以下不能定义为用户标识符的是( )。(分数:1.00)A.scanfB.VoidC.3comD.int27.有以下函数定义:void fun(int n

9、double x)若以下选项中的变量都已正确定义并赋值,则对函数 fun 的正确调用语句是( )。(分数:1.00)A.fun(int y,double m);B.k=fun(10,12.5);C.fun(x,n);D.void fun(n,x);28.有以下定义:int a4 3=1,2,3,4,5,6,7,8,9.10,11,12;int(*ptr)3=a,*p=a0;则下列能够正确表示数组元素 a12的表达式是( )。(分数:1.00)A.*(*ptr+1+2)B.*(*(p+5)C.(*ptr+1)+2D.*(*(a+1)+2)29.已定义 ch 为字符型变量,以下赋值语句中错误的是(

10、 )。(分数:1.00)A.ch=/B.ch=62+3;C.ch=NULL;D.ch=/xaa;30.下列关于单目运算符+、-的叙述中正确的是( )。(分数:1.00)A.它们的运算对象可以是任何变量和常量B.它们的运算对象可以是 char 型变量和 int 型变量,但不能是 float 型变量C.它们的运算对象可以是 int 型变量,但不能是 double 型变量和 float 型变量D.它们的运算对象可以是 char 型变量、int 型变量和 float 型变量31.在面向对象方法中,如果“鸡”是一类对象,“公鸡”、“母鸡”等都继承了“鸡”类的性质,因而是“鸡”的( )。(分数:1.00)

11、A.子类B.实例C.对象D.父类32.以下 4 个选项中,不能看作一条语句的是( )。(分数:1.00)A.;B.a=0,b=0,c=0;C.if(a0);D.if(b=0)m=1;n=2;33.以下能正确定义一维数组的选项是( )。(分数:1.00)A.int num; B.#define N 100int numNC.int num0100;D.int N=100int numN;34.下列选项中正确的语句是( )。(分数:1.00)_35.若有以下程序段(n 所赋的是八进制数):int m=32767,n=032767;printf(“%d,%o/n,m,n);执行后输出结果是( )。(

12、分数:1.00)A.32767,32767B.32767,032767C.32767,77777D.32767,07777736.有以下程序:void sum(int *(分数:1.00)A.p=for(i=0;i9;i+) pi=i+1;printf(“%d/n“,a12);程序运行后的输出结果是( )。(分数:1.00)A.3B.6C.9D.239.在数据结构中,从逻辑上可以把数据结构分成( )。(分数:1.00)A.动态结构和静态结构B.线性结构和非线性结构C.集合结构和非集合结构D.树形结构和图状结构,40.以下程序段中,能够通过调用函数 fun(),使 main()函数中的指针变量

13、p 指向一个合法的整型单元的是( )。(分数:1.00)A.main() int*p; fun(p); int fun(int*p) int s; p=B.mainint*pfun(iht fun(int*p)int s; *p=C.main() int*p; fun( int fun(int*p) *p=(int*)malloc(2);D.main()int*p;fun(p);int fun(int*p)p=(int*)malloc(sizeo(int);41.有以下程序:main()char str=“xyz“, *ps=str;while(*ps) ps+;for(ps-;ps-str=

14、O;ps-)puts(ps);执行后的输出结果是( )。(分数:2.00)A.yzxyzB.zyzC.zyzxyzD.xxyxyz42.有以下程序:main()int a=7,b=8,*p,*q,*r;p= q=r=p; p=q; q=r;printf(“%d,%d,%d,%d/n“,*p,*q,a,b);程序运行后的输出结果是( )。(分数:2.00)A.8,7,8,7B.7,8,7,8C.8,7,7,8D.7,8,8,743.若有如下程序:main()int a=1,b=1;for(;a=10;a+)if(b=9) break;if(b%3=1) b+=3;continue;b+;prin

15、tf(“%d,%d“,b,(分数:2.00)A.;k=(n=b(分数:2.00)A.|(m=aB.;pri45.程序流程图(PFD)中的箭头代表的是( )。(分数:2.00)A.组成关系B.控制流C.调用关系D.数据流46.利用 E-R 模型进行数据库的概念设计,可以分成 3 步:首先设计局部 E-R 模型,然后把各个局部 E-R模型综合成一个全局的模型,最后对全局 E-R 模型进行( ),得到最终的 E-R 模型。(分数:2.00)A.简化B.结构化C.最小化D.优化47.有以下程序:main()unsigned int a;int b=-1;a=b;printf(“%u“,(分数:2.00

16、)A.;struct node *next;*p,*q,*r;(分数:2.00)A.B.C.D.49.在结构化设计方法中生成的结构图(SC)中,带有圆圈的小箭头表示( )。(分数:2.00)A.模块B.数据的流向C.模块间的信息传递D.模块之间的调用关系50.有以下程序:void fun (char *a,char *b)a=b;(*(分数:2.00)A.+;a=25;b=025;c=0x25;printf(“%d %d %d/n“,a,b,c);(分数:2.00)填空项 1:_58.下列程序的输出结果是 【8】 。main()char b=“Hello you“;b5=0;printf(“%

17、s/n“,b);(分数:2.00)填空项 1:_59.若有如下定义:int x=2,y=3,z=4;则表达式!(x=y)|x+zprintf(“%d/n“,MAL(i,j);(分数:2.00)填空项 1:_61.设 a、b、c 为整数,且 a=2、b=3、c=4,则执行完语句 a*=18+(b+)-(+c);后,a 的值是 【11】 。(分数:2.00)填空项 1:_62.若有以下程序:main()char a;a=H-A+0;printf(“%c/n“,a);执行后的输出结果是 【12】 。(分数:2.00)填空项 1:_63.以下程序的输出结果是 【13】 。#includestdio.h

18、main()struct struint a;float b;char d4;printf(“%d/n“,sizeof(struct stru);(分数:2.00)填空项 1:_64.下面程序的功能是将一个字符串 str 的内容颠倒过来,请填空。main()int i,j, 【14】 ;char str=“1234567“);for(i=0,j=strlen(str) 【15】 ;ij;i+,j-)k=stri;stri=strj;strj=k;printf(“%s/n“,str);(分数:4.00)填空项 1:_65.函数 compare 的功能是比较两个字符串是否相等,若相等则函数返回 1

19、,否则返回 o,请填空。compare(char s,char t)int i=0while(si=tireturn( 【17】 ?1:0);(分数:4.00)填空项 1:_66.下面程序的功能是调用 sub 函数计算数组 a 中字符串的长度,请填空。sub(char s)int n;for(n=0; 【18】 n+);return 【19】 ;main()char*a;int k;gets(a);【20】 printf(“%d“,k);(分数:6.00)填空项 1:_二级 C 语言笔试-188 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:50,分数:60.00)1

20、.以下叙述中正确的是( )。(分数:1.00)A.构成 C 程序的基本单位是函数 B.可以在一个函数中定义另一个函数C.main()函数必须放在其他函数之前D.所有被调用的函数一定要在调用之前进行定义解析:解析 一个 C 语言程序是由许多函数组成的,因此 C 程序的基本单位是函数,选项 A 的叙述是正确的。根据函数的定义语法规定,在 C 语言程序中,不能嵌套定义,即不能在函数中再定义函数,故排除选项 B。main()函数在 C 语言程序中是必须的,但 main()函数可以放在程序中的任意位置,故排除选项C。对于用户定义的函数应遵循“先定义,后使用”的规则。凡是未在调用前定义的函数,C 编译程序

21、都默认它的返回值类型为 int 类型。对于返回值为其他类型的函数,若把函数的定义放在调用之后,应该在调用之前对函数进行说明,因此被调用的函数不一定要在调用之前进行定义,选项 D 不正确。2.设有定义语句;char c1=92,c2=92;,则以下表达式中值为零的是( )。(分数:1.00)A.c1c2 B.c1int f(int *(分数:1.00)A.for(i=0;i3;i+)for(j=2;i=i;j-)if( xj+1xj) k=xj;xj=xj+1;xj+1=k; for(i=0;i3;i+)for(j=4;j7-i;j+)if(xjxj+1) k=xj;xj=xj+1;xj+1=k

22、; for(i=0;i8;i+) printf(“%d“,xi);printf(“/n“);程序运行后的输出结果是( )。(分数:1.00)A.75310246 B.01234567C.76310462D.13570246解析:解析 主函数中定义了一个整型数组 x,并初始化。接着执行了一个二重 for 循环,该二重循环的作用是将数组的前 4 个元素按从大到小排序,接着用了一个二重循环(也是冒泡算法)将数组的后 4 个元素按从小到大的顺序排序,故最后依次输出数组的元素值为 75310246,所以,4 个选项中选项 A 符合题意。7.以下程序段中与语句 k=ab?(bc?1:0):0;功能等价的是

23、( )。(分数:1.00)A.if(ab)scanf(“%c,%c,%d,%d“,printf(%c,%c,%c,%c/n“,a,b,c,d);若运行时从键盘上输入 6,5,65,66回车。则输出结果是( )。(分数:1.00)A.6,5,A,B B.6,5,65,66C.6,5,6,5D.6,5,6,6解析:解析 主函数中首先定义了 4 个字符变量 a、b、c、d,然后通过 scanf()函数输入a、b、c、d。a 和 b 是按字符格式输入,c 和 d 是按带符号整型格式输入,并要求 a、b、c、d 都按字符输出。故 a 和 b 原样输出为 6、5,c 和 d 将把 ASCII 码值分别为

24、65 和 66 的字符输出,A 的 ASCII 码值为65,B 的 ASCII 码值为 66,故最后的输出为 6,5,A,B。所以,4 个选项中选项 A 符合题意。11.以下所列的 C 语言常量中,错误的是( )。(分数:1.00)A.0xFFB.1.2e0.5 C.2LD./72解析:解析 在 C 语言中常量可以用十进制数、八进制数、十六进制数来表示:也可以用转义字符、长整型、科学计数法等来表示。选项 A 为十六进制表示法正确,故选项 A 正确。选项 B 为科学计数法,但在选项 B 中的科学计数的表示形式是错误的,指数不能为小数,故选项 B 的表示法是错误的。选项 C 为长整型表示法正确,故

25、 C 正确。选项 D 为转义字符表示正确,故选项 D 的表示法是正确的。所以,4 个选项中选项 B 符合题意。12.有以下程序:main()int a=3,b=4,c=5,d=2;if(ab)if(bc)printf(“%d“,d+ +1);elseprintf(“%d“,+d +1);printf(“%d/n“,d);程序运行后的输出结果是( )。(分数:1.00)A.2 B.3C.43D.44解析:解析 首先看程序中 if-else 的匹配,由于 C 语言中规定 else 总是与最近的 if 搭配,因此程序中 else 与第二个 if 搭配,即该 if-else 语句为第一个 if 语句的

26、执行部分,接着判断第一个 if 后面括号里的表达式的值 ab 为假(34 为假),因此不执行后面 if-else 语句,程序将执行下面的输出语句输出 d,而 d 一直未被改变故为原来的值 2,所以,4 个选项中选项 A 符合题意。13.有以下定义语句:double a,b; int w; long c;若各变量已正确赋值,则下列选项中正确的表达式是( )。(分数:1.00)A.a=a+b=b+B.w%(int)a+b)C.(c+w)%(int)a D.w=a=b解析:解析 选项 A 不是合法的赋值语句,将最右边的第一个赋值表达式加括号即为 a=a+(b=b+)才正确,故选项 A 不正确。选项

27、B 中运算符%的对象必须是整型,而在选项 B 中(int)a+b 为 double 型,故选项 B 不正确。a,b 都为 double 型,应当避免使用 a=b 这样的关系表达式,因为通常存放在内存中的实型数据是有误差的,因此不可能精确相等,这将导致关系表达式 a=b 总为 0。所以,4 个选项中选项 C 符合题意。14.有以下程序:#define f(x) x*xmain()int i;i=f(4+4)/f(2+2);printf(“%d/n“,i);执行后输出结果是( )。(分数:1.00)A.28 B.22C.16D.4解析:解析 本题中首先将所有的宏替换掉,则表达式为 i=4+4*4+

28、4/2+2*2+2,故最后输出的 i 值为28。所以,4 个选项中选项 A 符合题意。15.有以下程序:void fun(int *a,int i,int i)int t;if(ij)t=ai;ai=aj;ai=t;i+; j-;fun(a,i,j);main()int x=2,6,1,8),i;fun(x,0,3),for(i=0;i4;i+) printf(“%2d“,xi);printf(“/n“);程序运行后的输出结果是( )。(分数:1.00)A.1268B.8621C.8162 D.8612解析:解析 函数 fun()中用了一个 if 语句,当数组下标 i 小于数组下标 j 时,交

29、换数组元素 ai和aj的值,并使 i 值加 1,j 值减 1。其功能就是把数组 a 中从下标 i 到 j 的元素首尾互换。主函数中定义一个数组 x,该数组有 4 个元素,接着调用 fun(a,O,3),其中将 a 数组的第一个元素的下标 0 和最后一个元素的下标 3 传给了函数 fun(),故执行完该函数后,数组 a 中的元素首尾互换,因此最后依次输出的数组 a 中值为 8、1、6 和 2,所以,4 个选项中选项 C 符合题意。16.关系表中的每一横行称为一个( )。(分数:1.00)A.元组 B.码C.属性D.字段解析:解析 在关系模型中,把数据看成一个二维表,每一个二维表称为一个关系。关系

30、表中的每一横行称为一个元组。17.设有定义语句:int x6=2,4,6,8,5,7), *p=x, i;要求依次输出 x 数组 6 个元素中的值,不能完成此操作的语句是( )。(分数:1.00)A.for(i=0;i;i+) printf(“%2d“,*(p+);B.for(i=0;i6;i+) printf(“%2d“,*(p+i);C.for(i=0;i6;i+) printf(“%2d“,*p+);D.for(i=0;i6;i+) printf(“%2d“,(*p)+); 解析:解析 本题中首先定义了一个了维数组并初始化,接着定义了一个指针变量 p 指向数组 x。因此可以通过指针 p

31、的下移,即每次加 1 引用数组 x 中的元素,来指向数组中的每个元素,这样循环 6 次即可引用数组的每个元素。选项 A 和 C,*和+的优先级相同且都具有右结合性,p+是先使用 p 的值再对 p 加1,即先输出*p 的值,再将指针下移一位。选项 B 是取*(p+i)所对应的存储单元中的数据输出,随着 i 的递增输出 x 数组的 6 个元素。选项 D 中表达式为(*p)+,该表达式是先取*p 的值然后将其值加 1,而没有将指针下移一位,故选项 D 不正确。所以,4 个选项中选项 D 符合题意。18.有以下程序:main()int a3=1,2,3),4,5,0),(*p(分数:1.00)A.3,

32、i;解析:解析 本题定义了一个指向由 3 个元素组成的一维数组的指针变量 pa,通过赋值让它指向具有 2行 3 列的数组 a,此时用指针变量 pa,表示数组元素 aij的形式是 paij。for 循环执行了 3 次;第一次 i 值为 0,执行 pa10=pa10-1,执行后 a10的值变为 3;第二次 i 值为 1,执行 pa11=pa1)1-1,执行后 a11的值为 4;第三次 i 值为 2,执行 pa12=1,执行后 a12的值变为 1。故 printf 语句输入的值为 2+4+1=7。所以,A 选项为所选。19.在深度为 5 的满二叉树中,结点的个数为( )。(分数:1.00)A.32B

33、.31 C.16D.15解析:解析 根据二叉树的定义,深度为 m 的二叉树最多有 2m-1 个结点。由此可知答案为 B 项。注意,满二叉树中叶子结点的个数为 2m-1个。20.已定义以下函数:fun (int *p)return *P; 该函数的返回值是( )。(分数:1.00)A.不确定的值B.形参 p 中存放的值C.形参 p 所指存储单元中的值 D.形参 p 的地址值解析:解析 函数的返回值应该为 return 后面表达式的值,*p 指的是形参 p 所指存储单元中的值,所以,4 个选项中选项 C 符合题意。21.有以下程序:main()int p7=11,13,14,15,16,17,18

34、);i=0,k=0;while(i7 i+;printf(“%d/n“,k);执行后输出结果是( )。(分数:1.00)A.58B.56C.45D.24 解析:解析 在主函数中首先定义了一个数组 p 并初始化,在 while 后面括号里的表达式中,i 初值为0,当 pi为偶数时,pi%2 等于 0;当 i=2 时,pi=14 为偶数,此时 while 后面括号里的表达式的值为假,退出循环,此时 k=p0+p1,即 k=11+13。所以最后输出 k 为 24。22.有以下程序:main()chara=“abcdefg“,b10=“abcdefg“;printf(“%d %d/n“,sizeof(

35、(分数:1.00)A.,sizeof(B.);解析:解析 本题中定义两个字符型数组并都用字符串常量赋初值,其中 a 省略了长度,定义了 b 的长度为 10。所以 a 的长度为赋值给它的字符串的字符个数 7 加上一个结束转义字符,即 a 的长度 7+1 为 8。定义时 b 的长度定义为 10,故 b 的长度为 10,因此最后通过函数 sizeof()求得的数组 a 和数组 b 的长度分别为 8 和 10,所以,4 个选项中选项 C 符合题意。23.下列关系运算中,能使经运算后得到的新关系中元组个数少于原来关系中元组个数的是( )。(分数:1.00)A.选择 B.投影C.连接D.并解析:解析 选择

36、运算是在指定的关系中选取所有满足给定条件的元组,构成一个新的关系,而这个新的关系是原关系的一个子集。因此,一个关系经选择运算后得到的新关系中,元组个数少于原来关系中元组个数。24.下面程序的输出结果是( )。#include“stdio.h“int sub(int m)static a=4;a+=m;return a;void main()int i=2,j=1,k;k=sub(i);k=sub(j);printf(“%d“,k);(分数:1.00)A.6B.7 C.8D.9解析:解析 在函数 sub()的函数体中定义了一个静态存储变量 a,a 的值在函数调用完毕返回主函数后仍存在。第一次调用

37、 sub(i), a=a+m=4+2=6,返回值为 6。第二次调用 sub(j),a=a+m=6+1=7,返回值为7,最后输出 k 的值为 7。25.下面这个程序段的时间复杂度是( )。for (i=1; in; i+)y=y+3;for (j=0;j=(2*n);j+)x+;(分数:1.00)A.O(10g2n)B.O(n)C.O(nlog2n)D.O(n2) 解析:解析 语句的频度指的是该语句重复执行的次数。一个算法中所有语句的频度之和构成了该算法的运行时间。在本例算法中,语句的频度是 n-1,语句的频度是(n-1)(2n+1)-2n 2-n-1。则该程序段的时间复杂度是 T(n)=n-1

38、+2n2-n-1=O(n2)。26.以下不能定义为用户标识符的是( )。(分数:1.00)A.scanfB.VoidC.3comD.int 解析:解析 在 C 语言中,合法的标识符由字母、数字和下划线组成,并且第一个字符必须为字母或下划线。选项 D 中 int 为 C 语言中的保留字,不能作为用户的标识符:选项 A、B、C 都为合法的标识符。所以,4 个选项中选项 D 符合题意。27.有以下函数定义:void fun(int n double x)若以下选项中的变量都已正确定义并赋值,则对函数 fun 的正确调用语句是( )。(分数:1.00)A.fun(int y,double m);B.k

39、=fun(10,12.5);C.fun(x,n); D.void fun(n,x);解析:解析 选项 A 中应将 y 和 m 前面的函数类型说明符去掉,故选项 A 不正确。fun 函数没有返回值,不能对 k 赋值,所以选项 B 不正确。选项 D 在调用函数时,不用声明其返回类型,故选项 D 不正确。当函数不返回函数值时,函数的调用可作为一条独立的语句,故选项 C 符合题意。28.有以下定义:int a4 3=1,2,3,4,5,6,7,8,9.10,11,12;int(*ptr)3=a,*p=a0;则下列能够正确表示数组元素 a12的表达式是( )。(分数:1.00)A.*(*ptr+1+2)

40、B.*(*(p+5)C.(*ptr+1)+2 D.*(*(a+1)+2)解析:解析 本题定义了一个二维数组 a,一个含有 3 个元素的指针数组 ptr 和一个指针变量 p,并使指针数组和指针变量 p 指向数组 a。29.已定义 ch 为字符型变量,以下赋值语句中错误的是( )。(分数:1.00)A.ch=/ B.ch=62+3;C.ch=NULL;D.ch=/xaa;解析:解析 选项 A 中/为转义字符应该用/来表示,故选项 A 错误。字符变量中的值就是该字符的 ASCII 码值,因此字符变量可以作为整型变量宋处理,可以用整型常量给字符变量赋值,选项 B 正确。选项 C 是将一个空值赋值给字符

41、变量,正确。选项 D 将一个用十六进制数表示的转义字符赋值给字符变量,正确。30.下列关于单目运算符+、-的叙述中正确的是( )。(分数:1.00)A.它们的运算对象可以是任何变量和常量B.它们的运算对象可以是 char 型变量和 int 型变量,但不能是 float 型变量C.它们的运算对象可以是 int 型变量,但不能是 double 型变量和 float 型变量D.它们的运算对象可以是 char 型变量、int 型变量和 float 型变量 解析:解析 +和-这两种运算符是单目运算符,其运算对象可以是整型、字符型、float 型和 double型等基本数据类型。所以,D 选项为所选。31

42、.在面向对象方法中,如果“鸡”是一类对象,“公鸡”、“母鸡”等都继承了“鸡”类的性质,因而是“鸡”的( )。(分数:1.00)A.子类 B.实例C.对象D.父类解析:解析 面向对象方法中,继承是表示类之间的相似性的机制。如果类 X 继承类 Y,则 X 为 Y 的子类,Y 为 X 的父类(超类)。如果“鸡”是一类对象,“公鸡”、“母鸡”等都继承了“鸡”类的性质,因而是“鸡”的子类。32.以下 4 个选项中,不能看作一条语句的是( )。(分数:1.00)A.;B.a=0,b=0,c=0;C.if(a0);D.if(b=0)m=1;n=2; 解析:解析 C 语言的语句都用“;”结束。如果只有一个分号

43、,称为“空语句”。用一对花括号把若干语句括起来构成一个语句组,称为“复合语句”,在语法上视为一条语句。因此选项 A 是一条语句。选项B 是逗号表达式加分号构成的语句。选项 C 是一条 if 语句,该语句的 if 子句是一条空语句。选项 D 中“if(b=0)m=1;n=2;”是两个表达式语句。所以,4 个选项中选项 D 符合题意。33.以下能正确定义一维数组的选项是( )。(分数:1.00)A.int num; B.#define N 100int numN C.int num0100;D.int N=100int numN;解析:解析 选项 A 定义数组时省略了长度,而 C 语言中规定,只有

44、在定义并同时进行初始化时,数组的长度才可以省略,数组的长度为初始化时候的成员个数,故选项 A 错误。在 C 语言中规定,数组的长度必须是一个整数或整型常量表达式,故选项 C 不正确。定义时数组的长度不能使用变量表示,故选项 D 不正确,所以,4 个选项中选项 B 符合题意。34.下列选项中正确的语句是( )。(分数:1.00)_解析:解析 用字符串常量给数组赋值的形式有“char s8=“Beijng/35.若有以下程序段(n 所赋的是八进制数):int m=32767,n=032767;printf(“%d,%o/n,m,n);执行后输出结果是( )。(分数:1.00)A.32767,327

45、67 B.32767,032767C.32767,77777D.32767,077777解析:解析 程序在定义时,以十进制形式为 m 赋初值,以八进制的形式为 n 赋初值。输出的时候 m 以十进制形式输出,n 以八进制形式输出,因此输出的结果为 32767 和 32767。所以,A 选项为所选。36.有以下程序:void sum(int *(分数:1.00)A.p=for(i=0;i9;i+) pi=i+1;printf(“%d/n“,a12);程序运行后的输出结果是( )。(分数:1.00)A.3B.6 C.9D.2解析:解析 主函数中首先定义一个 3 行 3 列的二维数组,定义了一个整型变

46、量指向它,直接通过 for循环给数组的每一个元素赋值,使得 a00=1、a01=2、a02=3、a10=4、a11=5、a12=6、a20=7、a21=8、a22=9。所以,4 个选项中选项 B 符合题意。39.在数据结构中,从逻辑上可以把数据结构分成( )。(分数:1.00)A.动态结构和静态结构B.线性结构和非线性结构 C.集合结构和非集合结构D.树形结构和图状结构,解析:解析 逻辑结构即数据元素之间的逻辑关系,是从逻辑关系上描述数据,与数据的存储无关。因此根据数据元素与数据元素之间的关系,逻辑结构被分为两大类:线性结构和非线性结构。40.以下程序段中,能够通过调用函数 fun(),使 main()函数中的指针变量 p 指向一个合法的整型单元的是( )。(分数:1.00)A.main() int*p; fun(p); int fun(int*p) int s; p=B.mainint*pfun(iht fun(int*p)int s; *p=C.main() int*p; fun( int fun(int*p) *p=(int*)malloc(2); D.main()int*p;fun(p);int fun(int*p)p=(int*)malloc(sizeo(int);解析:解析 在选项 A 中,main()函数中定义了一个指针变量 p,调用 fun()函数时把 p 传给形

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