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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

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

1、二级 C 语言笔试-358 及答案解析(总分:105.00,做题时间:90 分钟)一、选择题(总题数:50,分数:64.00)1.在面向对象设计中,对象有很多基本特点,其中“从外面看只能看到对象的外部特性,而对象的内部对外是不可见的。”这一性质指的是对象的A) 分类性 B) 标识惟一性 C) 多态性 D) 封装性(分数:1.00)A.B.C.D.2.C 语言结构体类型变量在程序运行期间( )。A) TC 环境在内存中仅仅开辟一个存放结构体变量地址的单元B) 所有的成员一直驻留在内存中C) 只有最开始的成员驻留在内存中D) 部分成员驻留在内存中(分数:1.00)A.B.C.D.3.有以下程序段i

2、nt m=0,n=1;char c=b;scanf(“%d%c%d“, printf(“%d/n“,c程序运行后的输出结果是( )。A) 0 B) 70 C) 35 D) 1(分数:1.00)A.B.C.D.5.下列程序的输出结果是main()double d=3.2;int x,y;x=1.2;y=(x+3.8)/5.0;printf(“%d/n“,d*y);A) 3 B) 3.2 C) 0 D) 3.07(分数:1.00)A.B.C.D.6.能正确表示“当 x 的取值在1,10和100,110范围内为真,否则为假”的表达式是( )。A) (x=1)scanf(“%f,%f,%f“,if(a

3、b)t=a;a=b;b=t;if(ac)t=a;a=c;c=t;if(bc)t=b;b=c;c=t;)printf(“%f/n%f/n%f/n“,a,b,c);A) 1.00 B) 1.002.00 3.003.00 2.00C) 1 D) 3.0000003 2.0000002 1.000000(分数:1.00)A.B.C.D.8.以下程序的功能是计算 s=1+12+123+1234+12345。main()int t=0,s=0,i;for(i=1;i=5;i+)t=i+;s=s+t;printf(“s=d%/n“,s);则程序运行后的输出结果是A) t B) t*10 C) t*100

4、D) t+10(分数:1.00)A.B.C.D.9.若 x 和 y 都是 int 型变量,x100,y200,且有程序片段:printf(“%d“,(x,y);上面程序片段的输出结果 ( )A) 200B) 100C) 100 200D) 输出格式符不够,输出不确定的值(分数:1.00)A.B.C.D.10.有以下结构体说明和变量定义,如图所示,指针 p、q、r 分别指向一个链表中的三个连续结点。struct nodeint data;struct node*next;*p,*q,*r;(分数:1.00)A.B.C.D.11.以下对枚举类型名的定义中正确的是( )。A) enum a=one,

5、two,three;B) enum aone=9,two=-1three=200;C) enum a=“one“,“two“,“four“;D) enum a“nine“,“two“,“three“;(分数:1.00)A.B.C.D.12.下列数据结构中,能用二分法进行查找的是( )。A) 顺序存储的有序线性表 B) 结性链表C) 二叉链表 D) 有序线性链表(分数:2.00)A.B.C.D.13.若有代数式 (分数:1.00)A.B.C.D.14.下列选项中错误的说明语句是A) char a =t,o,y,o,u,/0; B) char a =“toyou/0“;C) char a =“to

6、you/0“; D) char a =toyou/0;(分数:2.00)A.B.C.D.15.有以下程序:main()char s=“159“,*p;p=s;printf(“%c“,*p+);printf(“%c“,*p+);程序运行后的输出结果是 _。A)15 B)16 C)12 D)59(分数:1.00)A.B.C.D.16.union dtint a;char b;double c;data;以下叙述中错误的是A) data 的每个成员起始地址都相同B) 变量 data 所占内存字节数与成员 c 所占字节数相等C) 程序段:data.a=5;printf(“%f/n“,data.c);输

7、出结果为 5.000000D) data 可以作为函数的实参(分数:2.00)A.B.C.D.17.若变量 c 为 char 类型,能正确判断出 c 为小写字母的表达式是_。A) a=cz B) (ca)|(c=z)C) (ac)and (z=C) D) (c=a)strcpy(p+strlen(q),r); strcat(p,q);printf(“%d%d/n“,sizeof(p),strlen(p);程序运行后的输出结果是_。A) 20 9B) 9 9C) 20 11D) 11 11(分数:2.00)A.B.C.D.23.若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是(

8、 )。A函数的实参和其对应的形参共占同一存储单元 B形参只是形式上的存在,不占用具体存储单元C同名的实参和形参占同一存储单元 D函数的形参和实参分别占用不同的存储单元(分数:1.00)A.B.C.D.24.若有以下的说明和语句,则在执行 for 语句后,*(*(pt+1)+2)表示的数组元素是( )。int t33,*Pt3,k;for(k=0;k3;k+) ptk=A) t20 B) t22 C) t12 D) t21(分数:2.00)A.B.C.D.25.下列程序的输出结果是_。#includestdio.hmain()unionint k;char i2;*s,a;s=printf (

9、“%d %d/n“ , sizeof (p) , sizeof (q);程序运行后输出结果是A) 4 4 B) 3 3 C) 3 4 D) 4 3(分数:1.00)A.B.C.D.29.在长度为 n 的有序线性表中进行二分查找,最坏情况下需要比较的次数是A) O(n) B) O(n2) C) O(log2n) D) O(nlog2n)(分数:2.00)A.B.C.D.30.若有以下定义:float x;int a,b,c2;,则正确的 switch 语句是 ( )A) switch(x) case 1.0:printf(“*/n“); case 2.0:printf(“*/n“);B) swi

10、tch(int(x)case 1:printf(“*/n“);case 2:printf(“*/n“);C) switch(a+b)case 1:printf(“*/n“);case 1+2:printf(“*/n“);D) switch(a+B) case 1:printf(“*/n“);case c:printf(“*/n“);(分数:1.00)A.B.C.D.31.在单链表中,增加头结点的目的是A) 方便运算的实现 B) 使单链表至少有一个结点C) 标识表结点中首结点的位置 D) 说明单链表是线性表的链式存储实现(分数:1.00)A.B.C.D.32.设有定义:char*c;,以下选项中

11、能够使字符型指针 c 正确指向一个字符串的是( )。 A) charstr=“string“;c=str; B) scanf(“%s“,c); C) c=getchar(); D) char str=“string“;strcpy(“C,str“)(分数:2.00)A.B.C.D.33.fgetc 函数的作用是从指定文件读入一个个字符,该文件的打开方式必须是_。A) 只读 B) 追加 C) 读或读写 D) 以上均正确(分数:2.00)A.B.C.D.34.C 语言运算对象必须是整型的运算符是_。A) %= B) / C) = D) =(分数:2.00)A.B.C.D.35.若有下列说明和语句,

12、则对结构体变量 st 中成员 i 的引用方式不正确的是( )。Stmct stuint i;int name;st,*p;p=A) st.i B) *p.i C) (*p).i D) p-i(分数:1.00)A.B.C.D.36.若有以下说明和定义:union dtint a; char b; double c; data; 以下叙述中错误的是( )。A) data 的每个成员起始地址都相同B) 变量 data 所占内存字节数与成员 c 所占字节数相等C) 程序段:data.a=5; printf(“%f/n“, data.c);输出结果为 5.000000D) data 可以作为函数的实参(

13、分数:1.00)A.B.C.D.37.设变量 a、b、c、d 和 y 都已正确定义并赋值。若有以下 if 语句:if(ab)if(c=d)y=0; else y=1; 该语句所表示的含义是(分数:1.00)A.B.C.D.38.有以下程序#includestdio.hmain()FILE*fp;int i,a6=1,2,3,4,5,6;fp=fopen(“d3dat“,“w+b“);fwrite(a,sizeof(int),6,fp);fseek(fp,sizeof(int),3,SEEK_SET);/*该语句使读文件的位置指针从文件头向后移动 3 个 int 型数据*/fread(a,siz

14、eof(int),3,fp);fclose(fp);for(i=0;6;+)printf(“%d,“,ai);程序运行后的输出结果是A) 4,5,6,4,5,6, B) 1,2,3,4,5,6,C) 4,5,6,1,2,3, D) 6,5,4,3,2,1,(分数:2.00)A.B.C.D.39.下列叙述中正确的是_。A) 算法的效率只与问题的规模有关,而与数据的存储结构无关B) 算法的时间复杂度是指执行算法所需要的计算工作量C) 数据的逻辑结构与存储结构是一一对应的D) 算法的时间复杂度与空间复杂度一定相关(分数:2.00)A.B.C.D.40.下列叙述中正确的是( )。A) break 语句

15、只能用于 switch 语句体中B) continue 语句的作用是使程序的执行流程跳出包含它的所有循环C) break 语句只能用在循环体内和 switch 语句体内D) 在循环体内使用 break 语句和 continue 语句的作用相同(分数:2.00)A.B.C.D.41.程序中若有如下说明和定义语句Char fun(char *);main()char *s=“one“, a5=0(*f1)()=fun, ch;以下选项中对函数 fun 的正确调用语句是A) (*f1)(A) ; B) *fl(*s); C) fun(printf(“% d/n“, x/y程序运行后的输出结果是_。A

16、) 3 B) 2 C) -1 D) 0(分数:1.00)A.B.C.D.44.若有说明:int a3=1,2,3,4,5,6,7;则数组 a 第一维的大小是( )。A) 2 B) 3 C) 4 D) 无确定值(分数:1.00)A.B.C.D.45.请选出正确的程序段A) int*p; scanf(“%d“,p); B) int*s,k;*s=100;C) int *s,k;char*p,c;s=printf(“%d %d/n“,strlen(p),strlen(q);以下叙述中正确的是A) 在给 p 和 q 数组置初值时,系统会自动添加字符串结束符,故输出的长度都为 3B) 由于 p 数组中没

17、有字符申结束符,长度不能确定;但 q 数组中字符串长度为 3C) 由于 q 数组中没有字符串结束符,长度不能确定:但 p 数组中字符串长度为 3D) 由于 p 和 q 数组中都没有字符串结束符,故长度都不能确定(分数:1.00)A.B.C.D.48.有以下程序:int *flint *x, int *y)if(*x*y)return x;elsereturn y;main()int a=7,b=8,*p,*q,*r;p= q=r=f(p, q);printf(“%d, %d, %d/n“,*p,*q,*r);执行后输出结果是( )。A) 7,8,8 B) 7,8,7 C) 8,7,7 D) 8

18、,7,8(分数:1.00)A.B.C.D.49.有以下程序#includestdio.hint fun(int x;int y)if(xy)reurn(x);else return(x+y)/2);main()int a=4,b=5,c=6;printf(“%d/n“,fun(2*a,fun(b,c);程序运行后的输出结果是_。A) 3 B) 6 C) 8 D) 12(分数:2.00)A.B.C.D.50.以下能正确定义一维数组的选项是( )。A) int a5=0,1,2,3,4,5); B) char a=0,12,3,4,5);C) char a=A,B,C); D) int a5=“0

19、123“;(分数:1.00)A.B.C.D.二、填空题(总题数:20,分数:41.00)51.对于顺序存储的栈,因为栈的空间是有限的,在 1 运算时,可能发生栈的上溢。(分数:2.00)填空项 1:_52.以下程序中,select 函数的功能是:在 N 行 M 列的二维数组中,选出一个最大值作为函数值返回,并通过形参传回此最大值所在的行下标。请填空。#define N 3#define M 3select(int aNM,int *n)int i,j,row=1,colum=1;for(i=0;iN;i+)for(j=0;jM;j+)if(aijarowcolum)row=i;colum=j;

20、*n=_;return(_);main()int aNM=9,11,23,6,1,15,9,17,20,max,n;max=select(a,printf(“%d“,x);main()fun(11);pfintf(“/n“);(分数:2.00)填空项 1:_56.下列程序的输出结果是_。#includestdiohmain()char b=“Hello you“;b5 =0;printf(“%s/n“,b);(分数:2.00)填空项 1:_57.有以下程序:#include stdio.hint sub(int n)return(n/10 + n% 10); main( )int x,y;se

21、anf(“ %d“ , y = sub (sub(sub (x);printf(“ %d /n“;,y);若运行时输入:1234回车,程序的输出结果是_。(分数:2.00)填空项 1:_58.单独测试一个模块时,有时需要一个 1 程序驱动被测试的模块。(分数:4.00)填空项 1:_59.以下程序的功能是建立一个带有头结点的单向链表,链表结点中的数据通过键盘输入,当输入数据为-1 时,表示输入结束(链表头结点的 data 域不放数据,表空的条件是 ph-next=NULL),请填空。#include stdio.hstruct list int data;struct list *next;s

22、truct list *creatlist( )struct list *p,*q,*ph;int a;ph=(struct list*)malloc(sizeof(struct list);p=q=ph;printf(“Input an integer number;entre-1 to end:/n“);scanf(“%d“,a);while(a!=-1)p=(struct list*)malloc(sizeof(struct list);_=a;q-next=p;_=p;scanf(“%d“,a);p-next=/0;return(ph);main( )stuct list * head

23、;head=creatlist();(分数:4.00)填空项 1:_60.数据结构分为逻辑结构与存储结构,线性链表属于 1。(分数:2.00)填空项 1:_61.以下程序段打开文件后,先利用 fseek 函数将文件位置指针定位在文件末尾,然后调用 ftell 函数返回当前文件位置指针的具体位置,从而确定文件长度,请填空。FILE*myf; long f1;myf=_(“test,t“,“rb“);fseek(myf,(),SEEK_END) ;f1+ftell(myf);fclose(myf);printf(“%1d/n“,f1);(分数:1.00)填空项 1:_62.以下程序输出的最后一个值

24、是_。int ff(int n)static int f=1;f=f*n;retum f;main()int i;for(i=1;i=5;i+) printf(“%d/n“,ff(i)i(分数:2.00)填空项 1:_63.以下程序的功能是利用指针指向 3 个整型变量,并通过指针运算找出 3 个数中的最大值,输出到屏幕上,请填空。main()int x,y,z,max,*px,*py,*pz,*pmax;scanf(“%d%d%d“,px= py= pz=pmax=_;if(*pmax*py) *pmax=*py;if(*pmax*pz) *pmax=*pz;printf(“max=%d/n“

25、,max);(分数:4.00)填空项 1:_64.以下程序的输出结果是_。#include stdiohmain()int i;for(i=a;if;i+,i+)printf(“%c“,i-a+A);printf(“/n“);(分数:2.00)填空项 1:_65.以下程序运行后的输出结果是_。main()int a44=1,2,3,4),5,6,7,8,11,12,13,14,15,16,17,18;int i=0,j=0,s=0;while (i+4)if (i=2 | i=4)continue;j=0;do S+= aij ;j+; while (j4);printf(“%d/n“,s);

26、(分数:1.00)填空项 1:_66.以下程序给指针 p 分配三个 double 型动态内存单元,请填空。#include stdio.h#include stdlib.hmain()double *p;p=(double *)malloc(_);p0=1.5;p1=2.5;P2=3.5;printf(“%f%f%f/n“,p0,p1,p2);(分数:2.00)填空项 1:_67.以下程序用来判断指定文件是否能正常打开,请填空。#includestdio.hmain()FILE*fp;if(fp=fopen(“test.txt“,“r“)_)printf(“未能打开文件!/n“);elsepr

27、intf(“文件打开成功!/n“);(分数:2.00)填空项 1:_68.以下程序运行后的输出结果是_。main()int x=15;while(x10a=10; b:20; c=(a%b1) (a/b1);printf(“%d %d %d/n“,a,b,c);(分数:2.00)填空项 1:_70.下面程序执行后输出的结果是_。int m=13;int fun(int x, int y)int m=3;return(x*y-m);main()int a=7,b=5;printf(“%d/n“,fun(a,B) /m);(分数:2.00)填空项 1:_二级 C 语言笔试-358 答案解析(总分:

28、105.00,做题时间:90 分钟)一、选择题(总题数:50,分数:64.00)1.在面向对象设计中,对象有很多基本特点,其中“从外面看只能看到对象的外部特性,而对象的内部对外是不可见的。”这一性质指的是对象的A) 分类性 B) 标识惟一性 C) 多态性 D) 封装性(分数:1.00)A.B.C.D. 解析:解析 从外面看只能看到对象的外部特性,而对象的内部,即处理能力的实行和内部状态,指的是对象的封装性。2.C 语言结构体类型变量在程序运行期间( )。A) TC 环境在内存中仅仅开辟一个存放结构体变量地址的单元B) 所有的成员一直驻留在内存中C) 只有最开始的成员驻留在内存中D) 部分成员驻

29、留在内存中(分数:1.00)A.B. C.D.解析:解析 结构体类型的变量在程序运行期间要作为一个整体占用连续的内存单元。3.有以下程序段int m=0,n=1;char c=b;scanf(“%d%c%d“, printf(“%d/n“,c程序运行后的输出结果是( )。A) 0 B) 70 C) 35 D) 1(分数:1.00)A.B.C. D.解析:解析 位与运算是将两个运算分量看作两个二进制数,然后对两个二进制数的相应位进行与运算,若同时为 1 则结果相应位为 1,否则结果相应位为 0。因此,当两个运算分量相同时,它们的相应位肯定也相同,即不同为 1 就同为 0。所以得到的结果和运算分量

30、也相同。所以,4 个选项中选项 C) 符合题意。5.下列程序的输出结果是main()double d=3.2;int x,y;x=1.2;y=(x+3.8)/5.0;printf(“%d/n“,d*y);A) 3 B) 3.2 C) 0 D) 3.07(分数:1.00)A.B.C. D.解析:解析 考查复合的赋值表达式。解题要点 本题中,程序先执行语句 x=1.2;,根据赋值运算的类型转换规则,先将 double 型的常量1.2 转换为 int 型,即取整为 1,然后将 1 赋值给变量 x。接下来执行语句 y=(x+3.8)/5.0;根据运算符的优先级,先计算小括号内,再计算除法,最后执行赋值

31、运算。小括号内的运算过程:先将整型变量 x 的值1 转换为 double 型 1.0,然后与 3.8 进行加法运算,得到中间结果 4.8。接着进行除法运算 4.8/5.0,其结果小于 1.0,这里没有必要计算出精确值,因为接着进行赋值运算,赋值号左边的变量 y 的类型为整型,于是对这个小于 1.0 的中间结果进行取整,结果为 0,于是变量 y 的值为 0,d *y 的值也为 0。考点链接 格式输出语句 printf 的使用。6.能正确表示“当 x 的取值在1,10和100,110范围内为真,否则为假”的表达式是( )。A) (x=1)scanf(“%f,%f,%f“,if(ab)t=a;a=b

32、;b=t;if(ac)t=a;a=c;c=t;if(bc)t=b;b=c;c=t;)printf(“%f/n%f/n%f/n“,a,b,c);A) 1.00 B) 1.002.00 3.003.00 2.00C) 1 D) 3.0000003 2.0000002 1.000000(分数:1.00)A.B.C.D. 解析:解析 本题考查 if 语句。第 1 个 if 语句,实现如果 ab,则交换 a、b 值的功能;第 2 个 if 语句,实现如果 ac,则交换 a、c 的值的功能;第 3 个 if 语句,实现如果 bc,则交换 b、c 的值的功能。3 个 if 语句结合起来实现的功能就是将 a、

33、b、c 按从大到小排序。8.以下程序的功能是计算 s=1+12+123+1234+12345。main()int t=0,s=0,i;for(i=1;i=5;i+)t=i+;s=s+t;printf(“s=d%/n“,s);则程序运行后的输出结果是A) t B) t*10 C) t*100 D) t+10(分数:1.00)A.B. C.D.解析:解析 1、12、123、1234、12345 可以写成1=0*10+1、12=1*10+2、123=12*10+3、123=123*10+4、12345=1234*10+5按照这种规律后一项可以等于前一项乘以 10 再加上循环变量。这属于循环里面比较难

34、的题目,需要考生找出其数据的内在规律,并转化为计算机语言,基本上都是累加和累积两种。9.若 x 和 y 都是 int 型变量,x100,y200,且有程序片段:printf(“%d“,(x,y);上面程序片段的输出结果 ( )A) 200B) 100C) 100 200D) 输出格式符不够,输出不确定的值(分数:1.00)A. B.C.D.解析:10.有以下结构体说明和变量定义,如图所示,指针 p、q、r 分别指向一个链表中的三个连续结点。struct nodeint data;struct node*next;*p,*q,*r;(分数:1.00)A.B.C.D. 解析:11.以下对枚举类型名

35、的定义中正确的是( )。A) enum a=one,two,three;B) enum aone=9,two=-1three=200;C) enum a=“one“,“two“,“four“;D) enum a“nine“,“two“,“three“;(分数:1.00)A.B. C.D.解析:解析 枚举类型的定义类似于结构体和共用体,所以选项 A 和 C 不正确。大括号中的枚举元素应该使用合法标识符来定义,而不是字符串常量,所以选项 D 不正确。故应该选择 B。12.下列数据结构中,能用二分法进行查找的是( )。A) 顺序存储的有序线性表 B) 结性链表C) 二叉链表 D) 有序线性链表(分数

36、:2.00)A. B.C.D.解析:解析 二分法查找只适用于顺序存储的有序线性表,对于顺序存储的非有序线性表和线性链表,都只能采用顺序查找。13.若有代数式 (分数:1.00)A.B.C. D.解析:解析 本题主要考查 C 语言的库函数。 abs 求整数的绝对值,fabs 求双字节型的绝对值,pow 函数的原形是 double pow(double X,double Y),计算 x 的 y 次方;exp 函数的原形是 double exp(double X),求 10 的 X 次方;sqrt 函数的原形是 double sqrt(double x),为 x 的平方根。故本题答案为 C)。14.

37、下列选项中错误的说明语句是A) char a =t,o,y,o,u,/0; B) char a =“toyou/0“;C) char a =“toyou/0“; D) char a =toyou/0;(分数:2.00)A.B.C.D. 解析:解析 通过赋初值的方式给一维数组赋字符串,可以用给一般数组赋初值的相同方式给一维字符数组赋字符串,也可以在赋值时直接赋字符串常量。选项 B)和 C)后面的“/0”是多余的,在 C 语言中,系统会自动在字符串的结尾处加上一个字符“/0”作为串的结束标记。15.有以下程序:main()char s=“159“,*p;p=s;printf(“%c“,*p+);p

38、rintf(“%c“,*p+);程序运行后的输出结果是 _。A)15 B)16 C)12 D)59(分数:1.00)A. B.C.D.解析:解析 本题通过“p=s”将指针变量 p 指向字符数组 s,在第一次输出时,由于+和*为同一优先级,“*p+”相于“*(p+)”。 p 指向 s1,输出为 s1的值。16.union dtint a;char b;double c;data;以下叙述中错误的是A) data 的每个成员起始地址都相同B) 变量 data 所占内存字节数与成员 c 所占字节数相等C) 程序段:data.a=5;printf(“%f/n“,data.c);输出结果为 5.0000

39、00D) data 可以作为函数的实参(分数:2.00)A.B.C. D.解析:解析 输出不会是 5.00000 的,因为单精度浮点数和双精度浮点数在内存中的存储形式不一样。17.若变量 c 为 char 类型,能正确判断出 c 为小写字母的表达式是_。A) a=cz B) (ca)|(c=z)C) (ac)and (z=C) D) (c=a)strcpy(p+strlen(q),r); strcat(p,q);printf(“%d%d/n“,sizeof(p),strlen(p);程序运行后的输出结果是_。A) 20 9B) 9 9C) 20 11D) 11 11(分数:2.00)A.B.C

40、. D.解析:23.若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是( )。A函数的实参和其对应的形参共占同一存储单元 B形参只是形式上的存在,不占用具体存储单元C同名的实参和形参占同一存储单元 D函数的形参和实参分别占用不同的存储单元(分数:1.00)A.B.C.D. 解析:解析 在 C 语言中,函数的实参单元与形参单元在内存中分配不同的存储单元。24.若有以下的说明和语句,则在执行 for 语句后,*(*(pt+1)+2)表示的数组元素是( )。int t33,*Pt3,k;for(k=0;k3;k+) ptk=A) t20 B) t22 C) t12 D) t21(分数

41、:2.00)A.B.C. D.解析:解析 本题考查通过指针引用数组元素。*(*(pt+1)+2)等价于*(pt1+2), pt1+2 是 t12的地址,故*(pt1+2)是 t12的值。25.下列程序的输出结果是_。#includestdio.hmain()unionint k;char i2;*s,a;s=printf ( “%d %d/n“ , sizeof (p) , sizeof (q);程序运行后输出结果是A) 4 4 B) 3 3 C) 3 4 D) 4 3(分数:1.00)A.B.C. D.解析:解析 本题考查的是字符数组的初始化。字符数组即可以用初始化列裹来初始化,也可以用一个

42、字符串常量来初始化。但字符串常量系统会自动为其添加结束标记/0,故比实际长度要多一位,所以本题输出为 3 4,应该选择 C。29.在长度为 n 的有序线性表中进行二分查找,最坏情况下需要比较的次数是A) O(n) B) O(n2) C) O(log2n) D) O(nlog2n)(分数:2.00)A.B.C. D.解析:解析 二分查找法也称为折半查找法。它的基本思想是:将 n 个元素分成个数大致相同的两半,取 an/2与欲查找的 x 进行比较,如果 x=an/2,则找到 x,算法终止;如果 xan/2,则要在数组 a的左半部继续搜索 x(这里假设数组元素呈升序排列);如果 xan/2,则要在数

43、组 a 的右半部继续搜索x。每次余下 n/(2i)个元素待比较,当最后剩下一个时,即 n/(2i)=1。故,n=2 i;所以 i=log2n。30.若有以下定义:float x;int a,b,c2;,则正确的 switch 语句是 ( )A) switch(x) case 1.0:printf(“*/n“); case 2.0:printf(“*/n“);B) switch(int(x)case 1:printf(“*/n“);case 2:printf(“*/n“);C) switch(a+b)case 1:printf(“*/n“);case 1+2:printf(“*/n“);D) s

44、witch(a+B) case 1:printf(“*/n“);case c:printf(“*/n“);(分数:1.00)A.B.C. D.解析:31.在单链表中,增加头结点的目的是A) 方便运算的实现 B) 使单链表至少有一个结点C) 标识表结点中首结点的位置 D) 说明单链表是线性表的链式存储实现(分数:1.00)A. B.C.D.解析:解析 头结点不仅标识了表中首结点的位置,而且根据单链表(包含头结点)的结构,只要掌握了表头,就能够访问整个链表,因此增加头结点目的是为了便于运算的实现。32.设有定义:char*c;,以下选项中能够使字符型指针 c 正确指向一个字符串的是( )。 A)

45、charstr=“string“;c=str; B) scanf(“%s“,c); C) c=getchar(); D) char str=“string“;strcpy(“C,str“)(分数:2.00)A. B.C.D.解析:解析 在题目的题干中定义了字符指针变量 c,在选项 A)中,首先定义字符数组 str,然后再把字符数组 str 的首地址赋给字符指针变量 c。所以选项 A)是正确的。在选项 B)中,应改成 scanf(“%s”,。34.C 语言运算对象必须是整型的运算符是_。A) %= B) / C) = D) =(分数:2.00)A. B.C.D.解析:解析 在 C 语言中,模运算(即取余运算)的运算对象必须是整型数据(常量、变量或表达式)。35.若有下列说明和语句,则对结构体变量 st 中成员 i 的引用方式不正确的是( )。Stmct stuint i;int name;st,*p;p=A) st.i B) *p.i C) (*p).i D) p-i(分数:1.00)A.B. C.D.解析:解析 本题主要考查结构指针:p=&st,访问结构体的成员,可以通过结构变量访问,即 st.i,也可以用等价的指针形式即(*p).i 和 p-i。36.若有以下说明和定义:union dt

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