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

上传人:figureissue185 文档编号:1324500 上传时间:2019-10-17 格式:DOC 页数:27 大小:93KB
下载 相关 举报
【计算机类职业资格】二级C++笔试-25及答案解析.doc_第1页
第1页 / 共27页
【计算机类职业资格】二级C++笔试-25及答案解析.doc_第2页
第2页 / 共27页
【计算机类职业资格】二级C++笔试-25及答案解析.doc_第3页
第3页 / 共27页
【计算机类职业资格】二级C++笔试-25及答案解析.doc_第4页
第4页 / 共27页
【计算机类职业资格】二级C++笔试-25及答案解析.doc_第5页
第5页 / 共27页
点击查看更多>>
资源描述

1、二级 C+笔试-25 及答案解析(总分:110.00,做题时间:90 分钟)一、选择题(总题数:40,分数:80.00)1.若有下列定义int x10,*pt=x;则对 x 数组元素的正确引用是( )。(分数:2.00)A.*x10B.*(x+3)C.*(pt+10)D.pt+32.下列排序方法中,最坏情况下比较次数最少的是( )。(分数:2.00)A.冒泡排序B.简单选择排序C.直接插入排序D.堆排序3.有下列程序:#includestdio.hvoid main()int a=1,b=2,c=3,d=0;if(a=1b+=2)if(b!=2|c-!=3)printf(“%d,%d,%d/n

2、“,a,b,c);else printf(“%d,%d,%d/n“,a,b,c);else printf(“%d,%d,%d/n“,a,b,c);程序运行后的输出结果是( )。(分数:2.00)A.1,2,3B.1,3,2C.1,3,3D.3,2,14.下列程序段中的变量已正确定义:for(i=0;i4;i+,i+)for(k=1;k3;k+);printf(“*“);程序段的输出结果是( )。(分数:2.00)A.*B.*C.*D.*5.下列选项中,能用作数据常量的是( )。(分数:2.00)A.0115B.0118C.1.5e1.5D.115L6.设有宏定义“#define IsDIV(k

3、,n) (kG n=1? 1:0)”且变量 m 已正确定义并赋值,则宏调用“IsDIV(m,5)IsDIV(m,7)”为真时所要表达的是( )。(分数:2.00)A.判断 m 是否能被 5 或者 7 整除B.判断 m 是否能被 5 和 7 整除C.判断 m 被 5 或者 7 整除是否余 1D.判断 m 被 5 和 7 整除是否都余 17.某二叉树有 5 个度为 2 的结点,则该二叉树中的叶子结点数是( )。(分数:2.00)A.10B.8C.6D.48.有下列程序:#includestdio.hvoid main()char *s=“ABC“;doprintf(“%d“,*s%10);s+;w

4、hile(*s);注意:字母 A 的 ASC码值为 65。程序运行后的输出结果是( )。(分数:2.00)A.5670B.656667C.567D.ABC9.设有定义“int x=2;”,下列表达式中,值不为 6 的是( )。(分数:2.00)A.x*=x+1B.x+,2*xC.x*=(1+x)D.2*x,x+=210.将 E-R 图转换为关系模式时,实体和联系都可以表示为( )。(分数:2.00)A.属性B.键C.关系D.域11.有下列程序:#includestdio.hint fun(int x,iny y)( if(x=y)return(x);else return(x+y)/2);vo

5、id main()int a=4,b=5,c=6;printf(“%d/n“,fun(2 *a,fun(b,c);程序运行后的输出结果是( )。(分数:2.00)A.3B.6C.8D.1212.设函数中有整型变量 n,为保证其在未赋初值的情况下初值为 0,应选择存储类别是( )。(分数:2.00)A.autoB.registerC.staticD.auto 或 register13.有下列程序:#includestdio.hvoid main()int a=5,b=1,t;t=(a2)|b;printf(“%d/n“,t);程序运行后的输出结果是( )。(分数:2.00)A.21B.11C.6

6、D.114.下列是 if 语句的基本形式:if(表达式)语句其中“表达式”( )。(分数:2.00)A.必须是逻辑表达式B.必须是关系表达式C.必须是逻辑表达式或关系表达式D.可以是任意合法的表达式15.有下列程序:#includestdio.h#define PT 3.5;#define S(x)PT*x*x;void main()( int a=1;b=2;printf(“%4.1f/n“,S(a+b);程序运行后的输出结果是( )。(分数:2.00)A.14.0B.31.5C.7.5D.程序有错无输出结果16.软件按功能可以分为应用软件、系统软件和支撑软件(或工具软件)。下列属于应用软件

7、的是( )。(分数:2.00)A.编译程序B.操作系统C.教务管理系统D.汇编程序17.有下列程序:#includestdio.hvoid fun(int *a,int *b)int *c;c=a;a=b;b=c;void main()int x=3,y=5,*p=x,*q=y;fun(p,q);printf(“%d,%d,“,*p,*q);fun(x,y);printf(“%d,%d/n“,*p,*q)程序运行后的输出结果是( )。(分数:2.00)A.3,5,5,3B.3,5,3,5C.5,3,3,5D.5,3,5,318.有下列程序:#includestdio.hvoid main()i

8、nt a1,a2 char c1,c2;scanf(“%d%c%d%c“,a1,c1,a2,c2);printf(“%d%C%d%c“,a1,c1,a2,c2);若想通过键盘输入,使得 a1 的值为 12,a2 的值为 34,c1 的值为字符 a,c2 的值为字符 b,程序输出结果是 12,a,34,b,则正确输入格式是(以下 代表空格,CR代表回车)( )。(分数:2.00)A.B.C.D.19.有下列程序:#includestdio.hvoid main()FILE *f;f=fopen(“filea.txt“,“w“);fprintf(f,“abc“);fclose(f);若文本文件 f

9、ilea.txt 中原有内容 hello,则运行以上程序后,文件 filea.txt 中的内容为( )。(分数:2.00)A.heIioabcB.abcloC.abcD.abchello20.有下列程序:#includestdio.hstruet ordint x,y;dt2=1,2,3,4;void main()struct ord *p=dt;printf(“%d,“,+px);printf(“%d,“,+py);程序的运行结果是( )。(分数:2.00)A.1,2B.2,3C.3,4D.4,121.有下列程序:#includestdio.hvoid main()int x;scanf(“

10、%d“,x);if(x=3);elseif(x!=10)printf(“%d/n“,x);程序运行时,输入的值在哪个范围才会有输出结果( )。(分数:2.00)A.不等于 10 的整数B.大于 3 且不等 10 的整数C.大于 3 或等于 10 的整数D.小于 3 的整数22.设有定义“char s8;int i=0;”,下列不能将一行(不超过 80 个字符)带有空格的字符串正确读入的语句或语句组是( )。(分数:2.00)A.gets(s);B.while(si+=getchar()!=/n);si=/0;C.scanf(“%s“,s);D.doscanf(“%c“,si);while(si

11、+!=/n);si=/023.有下列程序:#includestdio.hvoid main()char *a=“abcd“,“ef“,“gh“,“ijk“);int i;for(i=0;i4;i+)printf(“%c“,*ai);程序运行后的输出结果是( )。(分数:2.00)A.aegiB.dfhkC.abcdD.abcdefghijk24.若函数中有定义语句“int k;”,则( )。(分数:2.00)A.系统将自动给 k 赋初值 0B.这时 k 中的值无定义C.系统将自动给 k 赋初值-1D.这时 k 中无任何值25.下列选项中正确的语句是( )。(分数:2.00)A.char s;s

12、=“BOOK!“;B.char *s;s=“BOOK!“;C.char s10;s=“BOOK“;D.char *s;s=“BOOK!“;26.有下列程序:#includestdio.hint f(int x,int y)return(y=x)*x);void main()int a=3,b=4,c=5,d;d=f(f(a,b),f(a,c);printf(“%d/n“,d);程序运行后的输出结果是( )。(分数:2.00)A.10B.9C.8D.727.有两个关系 R、S 如下所示:(分数:2.00)A.B.C.D.28.设变量已正确定义,下列不能统计出一行中输入字符个数(不包含回加符)的程

13、序段是( )。(分数:2.00)A.n=0;while(ch=getchar()!=/n)n+;B.n=0;while(getchar()!=/n)n+;C.for(n=0;getchar()!=/n;n+);D.n=0;for(ch=getchar();ch!=/n;n+);29.下列函数按每行 8 个输出数组中的数据。void fun(int *w,int n)int i;for(i=0;in;i+)_printf(“%d“,wi);printf(“/n“)下画线处应填入的语句是( )。(分数:2.00)A.if(i/8=O)printf(“n“);B.if(i/8=0)continue;

14、C.if(i%8=O)printf(“/n“);D.if(i%8=0)continue;30.有下列程序:#includestdio.hint b=2;int fun(int *k)b=*k+b;return(b);void main()int a10=1,2,3,4,5,6,7,8,i;for(i=2;i4;i+)b=fun(ai)+b;printf(“%d“,b);printf(“/n“);程序运行后的输出结果是( )。(分数:2.00)A.10 12B.8 10C.10 28D.10 1631.有下列程序:#includestdio.hvoid f(int *p,int *q);void

15、 main()int m=1,n=2,*r=m;f(r,n);printf(“%d,%d“,m,n);void f(int *p,int *q)p=p+1;*q=*q+1;程序运行后的输出结果是( )。(分数:2.00)A.1,3B.2,3C.1,4D.1,232.耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是( )。(分数:2.00)A.提高耦合性降低内聚性有利于提高模块的独立性B.降低耦合性提高内聚性有利于提高模块的独立性C.耦合性是指一个模块内部各个元素间彼此结合的紧密程度D.内聚性是指模块间互相连接的紧密程度33.程序段“int x=12;double y=3.1415

16、93;printf(“%d%8.6f“,x,y);”的输出结果是( )。(分数:2.00)A.123.141593B.12 3.141593C.12,3.141593D.123.141593034.数据库应用系统中的核心问题是( )。(分数:2.00)A.数据库设计B.数据库系统设计C.数据库维护D.数据库管理员培训35.有下列程序:#includestdio.hvoid fun(char *s)while(*s)if(*s%2=0)printf(“%c“,*s);s+;void main()char a=“good“;fun(a);printf(“/n“);注意:字母 a 的 ASC码值为

17、97,程序运行后的输出结果是( )。(分数:2.00)A.dB.goC.godD.good36.若有定义语句“double x,y,*px,*py;执行了 px=x;py=y;”后,正确的输入语句是( )。(分数:2.00)A.scanf(“%f%f“,x,y);B.scanf(“%f%f“x,y);C.scanf(“%1f%1e“,px,py);D.scanf(“%1f%1f“x,y);37.下列选项合法的标识符是( )。(分数:2.00)A.1_1B.1-1C._11D.1_38.下列叙述中正确的是( )。(分数:2.00)A.栈是“先进先出”的线性表B.队列是“先进后出”的线性表C.循环

18、队列是非线性结构D.有序线性表既可以采用顺序存储结构,也可以采用链式存储结构39.下列叙述中错误的是( )。(分数:2.00)A.软件测试的目的是发现错误并改正错误B.对被调试的程序进行“错误定位”是程序调试的必要步骤C.程序调试通常也称为 DebugD.软件测试应严格执行测试计划,排除测试的随意性40.支持子程序调用的数据结构是( )。(分数:2.00)A.栈B.树C.队列D.二叉树二、填空题(总题数:15,分数:30.00)41.假设用一长度为 50 的数组(数组元素的下标从 0 到 49)作为栈的存储空间,栈底指针 bottom 指向栈底元素,栈顶指针 top 指向栈顶元素,如果 bot

19、tom=49,top=30(数组下标),则栈中具有 1 个元素。(分数:2.00)填空项 1:_42.软件测试可以分为白盒测试和黑盒测试。基本路径测试属于 1 测试。(分数:2.00)填空项 1:_43.符合结构化原则的 3 种基本控制结构是选择结构、循环结构和 1。(分数:2.00)填空项 1:_44.数据库系统的核心是 1。(分数:2.00)填空项 1:_45.在 E-R 图中,图形包括矩形框、菱形框、椭圆框。其中表示实体联系的是 1 框。(分数:2.00)填空项 1:_46.表达式“(int)(double)(5/2)+2.5)”的值是 1。(分数:2.00)填空项 1:_47.若变量

20、x、y 已定义为 int 类型目 X 的值为 99,y 的值为 9,请将输出语句 printf( 1,x/y);补充完整,其输出的计算结果形式为 x/y=11。(分数:2.00)填空项 1:_48.有下列程序#includestdio.hvoid main()( char c1,c2;scanf(“%c“c1);while(c165|c190)scanf(“%c“,c1);c2=c1+32;printf(“%c,%c/n“,c1,c2);程序运行输入 65 回车后,能否输出结果、结束运行(请回答能或不能)_。(分数:2.00)填空项 1:_49.下列程序运行后的输出结果是_。#includes

21、tdio.hvoid main()( int k=1,s=0;doif(k%2)!=0)continue;s+=k;k+;while(k10);printf(“s=%d/n“,s);(分数:2.00)填空项 1:_50.下列程序运行时,若输入 1abcdef2df回车,输出结果为_。#includestdio.hvoid main()char a=0,ch;while(ch=getchar()!=/n)if(a%2!=0(ch=ach=z)ch=ch-a+A;a+;putchar(ch);printf(“/n“);(分数:2.00)填空项 1:_51.有下列程序,程序执行后,输出结果是_。#i

22、ncludestdio.hvoid fun(int *a)a0=aEi;void main()int a10=10,9,8,7,6,5,4,3,2,1,i;for(i=2;i=0;i-)fun(ai);for(i=0;i10;i+)printf(“%d“,ai);printf(“/n“)(分数:2.00)填空项 1:_52.请将下列程序中的函数声明语句补充完整。#includestdio.hint _;void main()int x,y(*p)();scanf(“%d%d“,x,y);p=max;printf(“%d/n“,(*p)(x,y);int max(int a,int b)retu

23、rn(ab?a:b);(分数:2.00)填空项 1:_53.下列程序用来判断指定文件是否能正常打开,请填空。#includestdio.hmain()(FILE *fp;if(fp=fopen(“test.txt“,“r“)!=_)printf(“文件打开成功!/n“);elseprintf(“未能打开文件!/n“);(分数:2.00)填空项 1:_54.下列程序的运行结果为_。#includestdio.h#includestdio.hstruct Aint a;char b10;double c;void f(struct A *t);void main()struct A a=1001,

24、“ZhangDa“,1098.0;f(a);printf(“%d,%s,%6.1f/n“,a.a,a.b,a.c);void f(struct A *t)strcpy(tb,“ChangRong“);(分数:2.00)填空项 1:_55.下列程序把 3 个 NODETYPE 型的变量链接成一个简单的链表,并在 while 循环中输出链表结点数据域中的数据。请填空。#includestdio.hstruct nodeint data;struct node *next;typedfe node NODETYPE;void main()NODETYPE a,b,c *h,*p; a.data=10

25、; b.data=20; c.data=30;h=a;a.next=b;b.next=c;c.next=/0;p=h;while(p)printf(“%d,“,pdata);_;)printf(“/n“);(分数:2.00)填空项 1:_二级 C+笔试-25 答案解析(总分:110.00,做题时间:90 分钟)一、选择题(总题数:40,分数:80.00)1.若有下列定义int x10,*pt=x;则对 x 数组元素的正确引用是( )。(分数:2.00)A.*x10B.*(x+3) C.*(pt+10)D.pt+3解析:解析 在 C 语言中,数组名是一个存放地址值的指针变量名,其地址值是数组第一

26、个元素的地址,也是数组所占一串连续存储单元的起始地址。因为数组的下标是从 O 开始的,所以选项 B 中,x+3 表示数组 x10中的第四个元素的地址,在其前面加上星号,表示是数组 x10中的第四个元素中的值。所以正确答案为选项 B。选项 A、C 的地址范围超出级数 x10中元素的地址范围,选项 D 表示的是地址值。2.下列排序方法中,最坏情况下比较次数最少的是( )。(分数:2.00)A.冒泡排序B.简单选择排序C.直接插入排序D.堆排序 解析:解析 本题考查排序的比较次数,冒泡排序、简单选择排序和直接插入排序在最坏的情况下比较次数为 n(n-1)/2。而堆排序法在最坏的情况下需要比较的次数为

27、 O(nlog2n)。3.有下列程序:#includestdio.hvoid main()int a=1,b=2,c=3,d=0;if(a=1b+=2)if(b!=2|c-!=3)printf(“%d,%d,%d/n“,a,b,c);else printf(“%d,%d,%d/n“,a,b,c);else printf(“%d,%d,%d/n“,a,b,c);程序运行后的输出结果是( )。(分数:2.00)A.1,2,3B.1,3,2C.1,3,3 D.3,2,1解析:解析 在程序中,当执行第一条 if 语句时,进行逻辑语句的判断,因为变量 b 的初值为 2,所以其值加 1 后为 3 与 2

28、不相等,所以 if 语句中的逻辑表达式的值为假,则程序执行最后一条 else printf语句,输出变量为 a,b,c,当前数值为 1,3,3。所以正确答案为选项 C。4.下列程序段中的变量已正确定义:for(i=0;i4;i+,i+)for(k=1;k3;k+);printf(“*“);程序段的输出结果是( )。(分数:2.00)A.*B.*C.*D.* 解析:解析 本题中第二个 fnr 循环语句的后面有一个分号,所以两个 for 循环语句的执行语句为空。当两个 for 循环语句执行完后,再执行 printf 语句输出一个星号。所以正确答案为选项 D。5.下列选项中,能用作数据常量的是( )

29、。(分数:2.00)A.0115B.0118C.1.5e1.5D.115L 解析:解析 选项 A 的第一个字母是。而不是数字 0,所以不构成数值常量;选项 B 中,8 不是八进制数字,八进制数为 0 到 7;选项 C 中字母“e”后面的指数是小数而非整数,不合法,不是一个合法的指数形式的数值常量;在选项 D 中,可以在整型常量的后面加一个字母 L,表示这个常量在内存中占 4 字节。6.设有宏定义“#define IsDIV(k,n) (kG n=1? 1:0)”且变量 m 已正确定义并赋值,则宏调用“IsDIV(m,5)IsDIV(m,7)”为真时所要表达的是( )。(分数:2.00)A.判断

30、 m 是否能被 5 或者 7 整除B.判断 m 是否能被 5 和 7 整除C.判断 m 被 5 或者 7 整除是否余 1D.判断 m 被 5 和 7 整除是否都余 1 解析:解析 本题考查宏定义,宏定义 IsDIV(k,n)的意思是如果 k 对 n 求模的余数为 1,其值等于 1,否则其值等于 0。本题中宏调用表达式是两个宏调用之间的逻辑与运算,所以选项 D 正确。7.某二叉树有 5 个度为 2 的结点,则该二叉树中的叶子结点数是( )。(分数:2.00)A.10B.8C.6 D.4解析:解析 根据二叉树的性质判定,在任意二叉树中,度为 0 的叶子结点总是比度为 2 的结点多一个。8.有下列程

31、序:#includestdio.hvoid main()char *s=“ABC“;doprintf(“%d“,*s%10);s+;while(*s);注意:字母 A 的 ASC码值为 65。程序运行后的输出结果是( )。(分数:2.00)A.5670B.656667C.567 D.ABC解析:解析 本题考查 dowhile 语句,至少执行一次循环体,依次输出 ABC,这三个字母的 ASC值对10 求模的余数,字母 A 的 ASC值对 10 求模的余数为 5,字母 B 的 ASC值对 10 求模的余数为 6,字母C 的 ASC值对 10 次模的余数为 7。所以正确答案为选项 C。9.设有定义“

32、int x=2;”,下列表达式中,值不为 6 的是( )。(分数:2.00)A.x*=x+1B.x+,2*xC.x*=(1+x)D.2*x,x+=2 解析:解析 本题考查了复合运算符“*=”和逗号表达武如何正确求值。逗号表达武的作用是用逗号将表达式连起来,其有效值为最后一个表达的值,其运算的结合性从左到右进行运算。选项 D 是一个逗号表达式,其值为 4。10.将 E-R 图转换为关系模式时,实体和联系都可以表示为( )。(分数:2.00)A.属性B.键C.关系 D.域解析:解析 在 C 语言中,将 E-R 图转换为关系模式时,实体和联系都可以表示为关系。11.有下列程序:#includestd

33、io.hint fun(int x,iny y)( if(x=y)return(x);else return(x+y)/2);void main()int a=4,b=5,c=6;printf(“%d/n“,fun(2 *a,fun(b,c);程序运行后的输出结果是( )。(分数:2.00)A.3B.6 C.8D.12解析:解析 在程序中子函数 fun(int x,int y)的功能是如果 x 的值等于 y 的值,则返回 x 的值,否则返回这两个数的算术平均值,在主函数中首先计算 fun(5,6),其值等于 5,然后再计算 fun(8,5),其值等于 6。所以正确答案为选项 B。12.设函数中

34、有整型变量 n,为保证其在未赋初值的情况下初值为 0,应选择存储类别是( )。(分数:2.00)A.autoB.registerC.static D.auto 或 register解析:解析 在 C 语言中,未赋初值的静态局部变量,编译程序自给它赋初值 0。所以选择 C。13.有下列程序:#includestdio.hvoid main()int a=5,b=1,t;t=(a2)|b;printf(“%d/n“,t);程序运行后的输出结果是( )。(分数:2.00)A.21 B.11C.6D.1解析:解析 本题考查移位运算符在程序中对 5 逻辑左移 2 位,其值扩大 4 倍等于 20,然后再进

35、行按位运算,其值等于 21。14.下列是 if 语句的基本形式:if(表达式)语句其中“表达式”( )。(分数:2.00)A.必须是逻辑表达式B.必须是关系表达式C.必须是逻辑表达式或关系表达式D.可以是任意合法的表达式 解析:解析 在 C 语言中 if 关键字后的一对圆括号中的表达式可以是 C 语言中任意合法的表达式。15.有下列程序:#includestdio.h#define PT 3.5;#define S(x)PT*x*x;void main()( int a=1;b=2;printf(“%4.1f/n“,S(a+b);程序运行后的输出结果是( )。(分数:2.00)A.14.0B.

36、31.5C.7.5D.程序有错无输出结果 解析:解析 这个程序有错误不能通过编译。#define 宏定义后不可有分号;用分号隔开后,int 只定义了 a。b 要重新定义。16.软件按功能可以分为应用软件、系统软件和支撑软件(或工具软件)。下列属于应用软件的是( )。(分数:2.00)A.编译程序B.操作系统C.教务管理系统 D.汇编程序解析:解析 编译程序和汇编程序属于开发工具;操作系统属于系统软件;而教务管理系统属于应用软件。17.有下列程序:#includestdio.hvoid fun(int *a,int *b)int *c;c=a;a=b;b=c;void main()int x=3

37、,y=5,*p=x,*q=y;fun(p,q);printf(“%d,%d,“,*p,*q);fun(x,y);printf(“%d,%d/n“,*p,*q)程序运行后的输出结果是( )。(分数:2.00)A.3,5,5,3B.3,5,3,5 C.5,3,3,5D.5,3,5,3解析:解析 本题子函数 fun(int *a,*b)的功能是交换形参 a,b 的值。主函数中调用子函数 fun(p,q)和fun(x,y)后,实参 p,q 和a,y 的值之间并没有发生交换,所以程序输出的结果为3,5,3,5。18.有下列程序:#includestdio.hvoid main()int a1,a2 ch

38、ar c1,c2;scanf(“%d%c%d%c“,a1,c1,a2,c2);printf(“%d%C%d%c“,a1,c1,a2,c2);若想通过键盘输入,使得 a1 的值为 12,a2 的值为 34,c1 的值为字符 a,c2 的值为字符 b,程序输出结果是 12,a,34,b,则正确输入格式是(以下 代表空格,CR代表回车)( )。(分数:2.00)A. B.C.D.解析:解析 从程序的输入格式控制方法判断,输入时各变量之间没有分隔符,当输入相应的变量对应的值时,相应的变量能够得到对应的值,可以输出要求的结果。19.有下列程序:#includestdio.hvoid main()FILE

39、 *f;f=fopen(“filea.txt“,“w“);fprintf(f,“abc“);fclose(f);若文本文件 filea.txt 中原有内容 hello,则运行以上程序后,文件 filea.txt 中的内容为( )。(分数:2.00)A.heIioabcB.abcloC.abc D.abchello解析:解析 把字符串 abc 以只写的方式写入到文件 filea.txt 中,覆盖掉原有的字符串 hello。20.有下列程序:#includestdio.hstruet ordint x,y;dt2=1,2,3,4;void main()struct ord *p=dt;printf

40、(“%d,“,+px);printf(“%d,“,+py);程序的运行结果是( )。(分数:2.00)A.1,2B.2,3 C.3,4D.4,1解析:解析 在本题中结构体成员访问运算符的优先级高于+算术运算符,所以表达式+px 的计算过程是首先取出结构体 dt0的成员变量 x 的值 1,然后再对其值加 1,得到 2 输出。表达式+py的计算过程是首先取出结构体 dt0的成员变量 y 的值 2,然后再对其值加 1,得到 3 输出。21.有下列程序:#includestdio.hvoid main()int x;scanf(“%d“,x);if(x=3);elseif(x!=10)printf(“

41、%d/n“,x);程序运行时,输入的值在哪个范围才会有输出结果( )。(分数:2.00)A.不等于 10 的整数B.大于 3 且不等 10 的整数 C.大于 3 或等于 10 的整数D.小于 3 的整数解析:解析 在本题的程序中输入的数值小于等于 3 时,不进行任何处理。如果输入的数值大于 3 并且其值不等于 10 时,则打印输入的数值。所以本题的正确答案为选项 B。22.设有定义“char s8;int i=0;”,下列不能将一行(不超过 80 个字符)带有空格的字符串正确读入的语句或语句组是( )。(分数:2.00)A.gets(s);B.while(si+=getchar()!=/n);

42、si=/0;C.scanf(“%s“,s); D.doscanf(“%c“,si);while(si+!=/n);si=/0解析:解析 在 scanf 输入函数中,格式字符 s 的作用是输入一个字符串,直到遇到空格结束。所以选项 C 不能输入包含空格的字符串。正确答案应该为选项 C。23.有下列程序:#includestdio.hvoid main()char *a=“abcd“,“ef“,“gh“,“ijk“);int i;for(i=0;i4;i+)printf(“%c“,*ai);程序运行后的输出结果是( )。(分数:2.00)A.aegi B.dfhkC.abcdD.abcdefghi

43、jk解析:解析 *a表示一个字符串数组,for 循环的作用是输出字符串数组中每一次字符串的第一个字符。所以正确答案为选项 A。24.若函数中有定义语句“int k;”,则( )。(分数:2.00)A.系统将自动给 k 赋初值 0B.这时 k 中的值无定义 C.系统将自动给 k 赋初值-1D.这时 k 中无任何值解析:解析 根据题目,若以这种方式定义变量 k 时,编译程序仅为 k 开辟存储单元,并未在存储单元中存放任何初始值,所以变量中的值无意义,称变量值“无定义”。所以正确答案为选项 B。25.下列选项中正确的语句是( )。(分数:2.00)A.char s;s=“BOOK!“;B.char

44、*s;s=“BOOK!“;C.char s10;s=“BOOK“;D.char *s;s=“BOOK!“; 解析:解析 在选项 D 中,字符指针 s 指向字符串常量 BOOK!。故选项 D 正确。26.有下列程序:#includestdio.hint f(int x,int y)return(y=x)*x);void main()int a=3,b=4,c=5,d;d=f(f(a,b),f(a,c);printf(“%d/n“,d);程序运行后的输出结果是( )。(分数:2.00)A.10B.9 C.8D.7解析:解析 在 C 语言中,子函数 f(int x,int)的功能是计算 y 减去 x

45、 的差与 x 之积。所以在主函数中,调用 f(a,b)的值等于 3,调用 f(a,c)的值等于 6,然后再调用 f(3,6)的值等于 9,所以正确答案为选项 B。27.有两个关系 R、S 如下所示:(分数:2.00)A.B. C.D.解析:解析 本题考查关系的运算,一个关系 R 通过投影运算后仍为一个关系 R,R是由 R 中投影运算所指出的引起域的列所组成的关系。选择运算主要是对关系 R 中选择由满足逻辑条件的元组所组成的一个新关系,所以题中关系 S 是由 R 投影所得。28.设变量已正确定义,下列不能统计出一行中输入字符个数(不包含回加符)的程序段是( )。(分数:2.00)A.n=0;wh

46、ile(ch=getchar()!=/n)n+;B.n=0;while(getchar()!=/n)n+;C.for(n=0;getchar()!=/n;n+);D.n=0;for(ch=getchar();ch!=/n;n+); 解析:解析 本题中,第一条语句对变量 n 赋初值时为 0,在 for 循环中,从 getchar 函数得到一个输入的字符,然后判断这个字符是否为回车换行符,如果不是则变量 n 加 1,而在程序运行时,每次输入时是一个字符串,而不是一个字符,因而 for 循环语句得不到正确的执行,所以不能够统计出一行中字符的个数。所以正确答案为选项 D。29.下列函数按每行 8 个输

47、出数组中的数据。void fun(int *w,int n)int i;for(i=0;in;i+)_printf(“%d“,wi);printf(“/n“)下画线处应填入的语句是( )。(分数:2.00)A.if(i/8=O)printf(“n“);B.if(i/8=0)continue;C.if(i%8=O)printf(“/n“);D.if(i%8=0)continue; 解析:解析 在程序中,fun 函数的功能是每行输出 8 个数组中的数据,在 for 循环中,每次循环时,都对数组下标值 8 求模得到余数。如果余数等于 0,则退出 for 循环,进行下一次循环:如果余数不等于0,则输出数组的元素 wi。30.有下列程序:#includestdio.hint b=2;int fun(int *k)b=*k+b;retur

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

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

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