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

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

1、二级 C 语言笔试 64 及答案解析(总分:100.00,做题时间:90 分钟)一、B选择题/B(总题数:50,分数:60.00)1.阅读下列程序,当运行程序时,输入 asd af aa z67,则输出为( )。 #include sldio.h int fun (char *str) int i,j=0; for(i=0;stri! =/0;i+) if(stri! =“) strj+=stri; strj=/0; main() char str81; int n; printf(“Input a string:“); gets(str); fun(str); printf(“%s/n“,s

2、tr); (分数:1.00)A.asdafaaz67B.asd af aa z67C.asdD.z672.假定 int 类型变量占用两个字节,若有定义:int x10=0,2,4;则数组 x 在内存中所占字节数是( )。(分数:1.00)A.3B.6C.10D.203.有以下程序: #include stdio.h #include string.h main() char a=a,b,c,d,e,f,g,h,/0; int i,j; i=sizeof(a); j=strlen(a); printf(“%d,%d/n“,i,j); 程序运行后的输出结果是( )。(分数:1.00)A.9,9B.

3、8,9C.1,8D.9,84.下列叙述中正确的是( )。(分数:1.00)A.数据库是一个独立的系统,不需要操作系统的支持B.数据库设计是指设计数据库管理系统C.数据库技术的根本目标是要解决数据共享的问题D.数据库系统中,数据的物理结构必须与逻辑结构一致5.下面的概念中,不属于面向对象方法的是( )。(分数:1.00)A.对象B.继承C.类D.过程调用6.有如下程序段: int *p,a=10,b=1; p= a= *p+b;执行该程序段后,a 的值为( )。(分数:1.00)A.12B.11C.10D.编译出错7.下列是合法的用户自定义标识符的是( )。(分数:1.00)A._w1B.3_x

4、yC.intD.LINE-38.在软件开发中,下面的任务不属于设计阶段的是( )。(分数:1.00)A.数据结构设计B.给出系统模块结构C.定义模块算法D.定义需求并建立系统模块9.下列模式中,能够给出数据库物理存储结构与物理存取方法的是( )。(分数:1.00)A.内模式B.外模式C.概念模式D.逻辑模式10.请选出下面正确的程序段( )。(分数:1.00)A.int *s; scanf(“%d“,; B.int *s,k; *s=100; C.int *s,k; char *p, c; s= p= *p=a; D.int *s,k; char *p, c; s= p= s=p; *s=1;

5、 11.以下程序调用 scanf 函数给变量 a 输入数值的方法是错误的,其错误原因是( )。 #include stdio.h main() int *p,*q,a,b; p= printf(“input a:“); scanf(“%d“,*p); (分数:1.00)A.*p 表示的是指针变量 p 的地址B.*p 表示的是变量 a 的值,而不是变量 a 的地址C.*p 表示的是指针变量 p 的值D.*p 只能用来说明 p 是一个指针变量12.有如下说明: int a10=1,2,3,4,5,6,7,8,9,10,*p=a;则数值为 9 的表达式是( )。(分数:1.00)A.*p+9B.*(

6、p+8)C.*p+=9D.p+813.表达式 ab|(cB.fwrite(fp,size,count,buffe;C.fwrite(fp,count,size,buffe;D.fwrite(buffer,size,count,f;15.若有如下语句: int x=3; do printf(“%d/n“,x-=2); wbile(! ( -x);则上面程序段( )。(分数:1.00)A.输出的是 1B.输出的是 1 和-2C.输出的是 3 和 0D.是死循环16.假设下面四个选项中所有的数都是 8 进制数或 16 进制数,均是不正确的选项是 ( )。(分数:1.00)A.016 0x8f 018

7、B.0abc 017 0xaC.010 -0x11 0x16D.0al2 7ff -12317.设 x,y 和 z 都是 int 型变量,且 x=3,y=4,z=5,则下面表达式中,值为 0 的表达式是 ( )。(分数:1.00)A.x double r2; float r3; union uuchar u15;long u22;ua; mya;(分数:1.00)A.30B.29C.24D.2220.以下数据结构中不属于线性数据结构的是( )。(分数:1.00)A.队列B.线性表C.二叉树D.栈21.有如下定义: struct person char name9;int age; struct

8、 person class10=“John“,17,“paul“,19,“Mary“,18,“Adam“,16; 根据上述定义,能输出字母 M 的语句是( )。(分数:1.00)A.printf(“%c/n“,class3.nam;B.printf(“%c/n“,class3.name1);C.printf(“%c/n“,class2.name1);D.printf(“%c/n“,class2.name0);22.以下选项中,与 k=n+完全等价的表达式是( )。(分数:1.00)A.k=n,n=n+1B.n=n+1,k=nC.k= +nD.k+=n+123.对表达式 for(表达式 1;表达

9、式 3)可理解为( )。(分数:1.00)A.for(表达式 1;0;表达式 3)B.for(表达式 1;1;表达式 3)C.for(表达式 1;表达式 1;表达式 3)D.for(表达式 1;表达式 3;表达式 3)24.在结构化方法中,用数据流图(DFD)作为描述工具的软件开发阶段是( )。(分数:1.00)A.可行性分析B.需求分析C.详细设计D.程序编码25.以下程序执行后 x 的值是( )。 #include stdio.h main() int x,y=252,i=386,*m= x=(z= =m); printf(“%d“,x); (分数:1.00)A.252B.1C.0D.运行

10、时出错,x 无定值26.若变量已正确说明为 int 类型,要通过语句 scanf(“%d %d %d“,给 a 赋值 3,b 赋值 5,c赋值 8,下面不正确的输入形式是( )。(分数:1.00)A.3回车 5回车 8回车B.3,5,8回车C.3回车 58回车D.35回车 8回车27.以下程序的运行结果是( )。 #include stdio.h #define MIN(x,y) (x)(y)? (x):(y) main() int i=10,j=15,k; k=10*MIN(i,j); printf(“%d/n“,k); (分数:1.00)A.10B.15C.100D.15028.没有程序段

11、: int k=10; while(k=0) k=k-1;则下面描述中正确的是( )。(分数:1.00)A.while 循环执行 10 次B.循环是无限循环C.循环体语句一次也不执行D.循环体语句执行一次29.判断 char 型变量 cl 是否为大写字母的正确表达式是( )。(分数:1.00)A.=cl=ZB.(cl=) k=a; a=b; b=k; main() int a=3,b=6, *x= fun(x,y); printf(“%d%d“,a,b);(分数:1.00)A.6 3B.3 6C.编译出错D.0 031.有以下函数: fun(char *p) return p; 该函数的返回值

12、是( )。(分数:1.00)A.无确切值B.形参 p 中存放的地址值C.一个临时存储单元的地址D.形参 p 自身的地址值32.下面的描述中,符合结构化程序设计风格的是( )。(分数:1.00)A.使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻辑B.模块只有一个入口,可以有多个出口C.注重提高程序的执行效率D.不使用 goto 语句33.C 语言中,文件组成的基本单位为( )。(分数:1.00)A.记录B.数据行C.数据块D.字符序列34.设有以下说明语句: typedef struct int n; char ch8; PER;则下面叙述中正确的是( )。(分数:1.00)A.P

13、ER 是结构体变量名B.PER 是结构体类型名C.typedef struct 是结构体类型D.struct 是结构体类型名35.已知学生记录描述为: struct student int no; char name20,sex; struct int year,month,day; birth; ; struct student s; 设变量 s 中的“生日”是“1984 年 11 月 12 日”,对“birth”正确赋值的程序段是( )。(分数:1.00)A.year=1984;month=11;day=12;B.year=1984;month=11;day=12;C.birtyear=1

14、984;birtmonth=11;birtday=12;D.birtyear=1984;birtmonth=11;birtday=12;36.下面程序的功能是将从键盘输入的两个数由小到大排序输出,当输入一对相等数时结束循环。请选择填空。 #include stdio.h main() int a,b,t; scanf(“%d%d“, while(_) if(ab) t=a;a=b;b=t; printf(“%d,%d/n“,a,b); scanf(“%d%d“, (分数:1.00)A.! a=bB.a! =bC.a= =bD.a=b37.若有说明:int a4=0,0;则下面不正确的叙述是(

15、)。(分数:1.00)A.数组 a 的每个元素都可得到初值 0B.二维数组 a 的第一维大小为 1C.当初值的个数能被第二维的常量表达式的值除尽时,所得商数就是第一维的大小D.只有元素 a00和 a01可得到初值,其余元素均得不到确定的初值38.下列程序的输出结果是( )。 #include stdio.h struct abc int a, b, c, s; main() struct abc s2=1,2,3,4,5,6; int t; t=s0.a+s1.b; printf(“%d/n“,t); (分数:1.00)A.5B.6C.7D.839.有以下程序: #include stdio.

16、h void fun(int a,int b,int c) a=456,b=567,c=678; main() int x=10,y=20,z=30; fun(x,y,z); printf(“%d,%d,%d/n“,x,y,z); 此程序的输出结果是( )。(分数:1.00)A.30,20,10B.10,20,30C.456,567,678D.678,567,45640.有如下程序: #include stdio.h int func(int a,int b) return(a+b): main() int x=2,y=5,z=8,r; r=func(func(x,y),z); printf(

17、“%d/n“,r); 该程序的输出结果是( )。(分数:1.00)A.12B.13C.14D.1541.数据库系统的核心是( )。(分数:2.00)A.数据模型B.数据库管理系统C.软件工具D.数据库42.若有定义:char *st=“how are you“;下列程序段中正确的是( )。(分数:2.00)A.char a11, *p; strcpy(p=a+1,B.char a11; strcpy(+a, s;C.char a11; strcpy(a, s;D.char a, *p; strcpy(p=43.以下程序的输出结果是( )。 #include stdio.h main() int

18、 a,i;a=0; for(i=1;i5;i+) switch(i) case 0: case 3:a+=2; case 1: case 2:a+=3; default:a+=5; printf(“%d/n“,a); (分数:2.00)A.31B.13C.10D.2044.在一棵二叉树上第 5 层的结点数最多是( )。(分数:2.00)A.8B.16C.32D.1545.以下程序的输出结果是( )。 #include stdio.h main() int a=21,b=11; printf(“%d/n“,-a+b,-b+a); (分数:2.00)A.30B.31C.32D.3346.下面叙述正

19、确的是( )。(分数:2.00)A.算法的执行效率与数据的存储结构无关B.算法的空间复杂度是指算法程序中指令(或语句)的条数C.算法的有穷性是指算法必须能在执行有限个步骤之后终止D.以上三种描述都不对47.下列用于 printf 函数的控制字符常量中,代表“竖向跳格”的转义字符常量是( )。(分数:2.00)A./bB./tC./vD./f48.设变量 n 为 float 类型,m 为 int 类型,则以下能实现将 n 中的数值保留小数点后两位,第三位进行四舍五入运算的表达式是( )。(分数:2.00)A.n=(n*100+0.5)/100.0B.m=n*100+0.5,n=m/100.0C.

20、n=n*100+0.5/100.0D.n=(n/100+0.5)*100.049.对以下说明语句的正确理解是( )。 int a10=6,7,8,9,10;(分数:2.00)A.将 5 个初值依次赋给 a1至 a5B.将 5 个初值依次赋给 a0至 a4C.将 5 个初值依次赋给 a6至 a10D.因为数组长度与初值的个数不相同,所以此语句不正确50.以下对 C 语言函数的有关描述中,正确的是( )。(分数:2.00)A.在 C 语言中调用函数时,只能把实参的值传给形参,形参的值不能传送给实参B.C 函数既可以嵌套定义又可以递归调用C.函数必须有返回值,否则不能使用函数D.函数必须有返回值,返

21、回值类型不定二、B填空题/B(总题数:18,分数:40.00)51.长度为 n 的顺序存储线性表中,当在任何位置上插入一个元素概率都相等时,插入一个元素所需移动元素的平均个数为U 【1】 /U。(分数:2.00)填空项 1:_52.用树型结构表示实体类型及实体间联系的数据模型称为U 【2】 /U。(分数:2.00)填空项 1:_53.类是一个支持集成的抽象数据类型,而对象是类的U 【3】 /U。(分数:2.00)填空项 1:_54.数据流图的类型有U 【4】 /U和事务型。(分数:2.00)填空项 1:_55.当数据的物理结构(存储结构、存取方式等)改变时,不影响数据库的逻辑结构,从而不致引起

22、应用程序的变化,这是指数据的U 【5】 /U。(分数:2.00)填空项 1:_56.使用结构体处理数据的场合是U 【6】 /U。(分数:2.00)填空项 1:_57.有定义 char a,b;若想通过 case 1: case2: return 1; return (fib(g-1)+fib(g-2); main() long k; k=fib(5); printf(“k=%d/n“,k); (分数:2.00)填空项 1:_59.strcmp 函数的功能是U 【9】 /U。(分数:2.00)填空项 1:_60.以下程序段中,错误的行号是U 【10】 /U。 #include stdio.h m

23、ain() char str14;str=“I love China!“; printf(“%s“,str); (分数:2.00)填空项 1:_61.将以下程序段写成三目运算表达式:U 【11】 /U。 if(ab) max=a; else max=b;(分数:2.00)填空项 1:_62.设 x 和 y 均为 int 型变量,且 x=1,y=2,则表达式 double(1+x/y)的值为U 【12】 /U。(分数:2.00)填空项 1:_63.下面程序的功能是输出数组 s 中最大元素的下标,请填空。 #include stdio.h main() int k, p,s=1, -9,7,2,

24、-10,3; for(p =0,k =p; p6; p+) if(spsk) U【13】 /U printf(“%d/n“, k); (分数:2.00)填空项 1:_64.设有以下定义和语句,则*(*(p+2)+1)的值为U 【14】 /U。 int a32=10,20,30,40,50,60,(*p)2; p=a;(分数:2.00)填空项 1:_65.下面函数要求计算两个整数 x,y 之和,并通过形参返回该值,请填空。 add(int x, int y, U【15】 /U z) U 【16】 /U=x+y;(分数:4.00)填空项 1:_66.下面程序的运行结果是U 【17】 /U。 #in

25、clude stdio.h #define N 10 #define s(x) x*x #define f(x) (x*x) main() int i1,i2; i1=1000/s(N); i2=1000/f(N); printf(“%d %d/n“,i1,i2); (分数:2.00)填空项 1:_67.以下程序的输出结果是U 【18】 /U。 #include stdio.h unsigned fun6(unslgned num) unsigned k=1; dok * =mum%10;num/=10; while (num); return k; main() unsigned n=26;

26、 printf(“%d/n“,fan6(n); (分数:2.00)填空项 1:_68.以下程序的功能是:删去一维数组中所有相同的数,使相同的数只剩一个。数组中的数已按由小到大的顺序排列,函数 fun 返回删除后数组中数据的个数。 例如,若一维数组中的数据是: 2 2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 10 10 10 删除后,数组中的内容应该是:2 3 4 5 6 7 8 9 10。请填空。 #include stdio.h #define N 80 int fun(int a, int n) int i,j=1; for(i=1;in;i+) if(aj-1 U【19】

27、 /U ai) aj+=ai; U 【20】 /U; main() int aN=2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10,i,n=19; printf(“The original data :/n“); for(i=0;in;i+) printf(“%3d“,ai); n=fun(a,n); printf(“/nThe data after deleted :/n“); for(i=0; in; i+) printf(“%3d“,ai); printf(“/n/n“); (分数:4.00)填空项 1:_二级 C 语言笔试 64 答案解析(总分:100.

28、00,做题时间:90 分钟)一、B选择题/B(总题数:50,分数:60.00)1.阅读下列程序,当运行程序时,输入 asd af aa z67,则输出为( )。 #include sldio.h int fun (char *str) int i,j=0; for(i=0;stri! =/0;i+) if(stri! =“) strj+=stri; strj=/0; main() char str81; int n; printf(“Input a string:“); gets(str); fun(str); printf(“%s/n“,str); (分数:1.00)A.asdafaaz67

29、 B.asd af aa z67C.asdD.z67解析:解析 本题题意是删除字符串中所有空格。由于 C 语言中没有直接删除字符的操作,所以删除字符的操作都是采用“留下”字符的算法来实现。从串头 str0到串尾逐一比较,判断其是否为空格,若不是空格,则将其保存在 strj中,最后加串结束符“/0”。2.假定 int 类型变量占用两个字节,若有定义:int x10=0,2,4;则数组 x 在内存中所占字节数是( )。(分数:1.00)A.3B.6C.10D.20 解析:解析 x 数组共有 10 个元素,在花括号内只提供 3 个初值,这表示只给前面的 3 个元素赋值,后7 个元素的值为 0,所以,

30、一共有 20 个字节。3.有以下程序: #include stdio.h #include string.h main() char a=a,b,c,d,e,f,g,h,/0; int i,j; i=sizeof(a); j=strlen(a); printf(“%d,%d/n“,i,j); 程序运行后的输出结果是( )。(分数:1.00)A.9,9B.8,9C.1,8D.9,8 解析:解析 sizeof 是求字节运算符,在字符数组 a 中,“/0”也作为字节保存,是 a 数组的一个成员,所以 sizeof(a)的值应为 9;strlen 是测试字符串长度的函数,函数的值为字符串中的实际长度,

31、不包括“/0”在内,所以 strlen(a)的值为 8。4.下列叙述中正确的是( )。(分数:1.00)A.数据库是一个独立的系统,不需要操作系统的支持B.数据库设计是指设计数据库管理系统C.数据库技术的根本目标是要解决数据共享的问题 D.数据库系统中,数据的物理结构必须与逻辑结构一致解析:解析 数据库不是一个独立的系统,需要操作系统的支持,A)错误。设计数据库的目的是设计出满足实际应用需求的实际关系模型,B)错误。数据库技术的主要目的是有效地管理和存取大量的数据资源,包括:提高数据的共享性,使多个用户能够同时访问数据库中的数据;减小数据的冗余,以提高数据的一致性和完整性;提供数据与应用程序的

32、独立性,从而减少应用程序的开发和维护代价,C)正确。5.下面的概念中,不属于面向对象方法的是( )。(分数:1.00)A.对象B.继承C.类D.过程调用 解析:解析 面向对象方法是一种运用对象、类、封装、继承、多态和消息等概念来构造、测试、重构软件的方法。面向对象方法从对象出发,发展出对象、类、消息、继承等概念。6.有如下程序段: int *p,a=10,b=1; p= a= *p+b;执行该程序段后,a 的值为( )。(分数:1.00)A.12B.11 C.10D.编译出错解析:解析 p=a=*p+b 表达式的含义是指针变量 p所指内存的值 10 与 b 的和赋给 a。7.下列是合法的用户自

33、定义标识符的是( )。(分数:1.00)A._w1 B.3_xyC.intD.LINE-3解析:解析 C 语言规定用户标识符由英文字母、数字和下划线组成,且第一个字符必须是字母或下划线,由此可见选项 B),D)是错的;此外,C 语言不允许用户将关键字作为标识符,而选项 C)中的 int 是C 语言的关键字。8.在软件开发中,下面的任务不属于设计阶段的是( )。(分数:1.00)A.数据结构设计B.给出系统模块结构C.定义模块算法D.定义需求并建立系统模块 解析:解析 软件设计一般分为总体设计和详细设计两个阶段。总体设计的任务是确定软件的总体结构、子系统和模块的划分,确定模块间的接口和评价模块划

34、分质量,并进行数据分析;详细设计的任务是确定每一模块实现的定义,包括数据结构、算法和接口。9.下列模式中,能够给出数据库物理存储结构与物理存取方法的是( )。(分数:1.00)A.内模式 B.外模式C.概念模式D.逻辑模式解析:解析 数据库管理系统的三级模式结构由外模式、模式和内模式组成。外模式,或子模式,或用户模式,是指数据库用户所看到的数据结构,是用户看到的数据视图。模式,或逻辑模式,是数据库中对全体数据的逻辑结构和特性的描述,是所有用户所见到的数据视图的总和。外模式是模式的一部分。内模式,或存储模式,或物理模式,是指数据在数据库系统内的存储介质上的表示,即对数据的物理结构和存取方式的描述

35、。10.请选出下面正确的程序段( )。(分数:1.00)A.int *s; scanf(“%d“,; B.int *s,k; *s=100; C.int *s,k; char *p, c; s= p= *p=a; D.int *s,k; char *p, c; s= p= s=p; *s=1; 解析:解析 本题的选项 A)和 B)犯了一个同样的错误,即指针变量 s 定义后并没有指向具体的变量。也就是说,s 中没有确定的地址值,它的值是不可预见的,所指向的单元也是不可预见的,因此不能进行赋值操作。另外,在选项 D)中,s 是 int 型指针变量,p 是 char 型指针变量,指向的内存单元所占用

36、的字节数是不同的,因而不能将字符指针变量 p 的值赋给整型指针变量 s。11.以下程序调用 scanf 函数给变量 a 输入数值的方法是错误的,其错误原因是( )。 #include stdio.h main() int *p,*q,a,b; p= printf(“input a:“); scanf(“%d“,*p); (分数:1.00)A.*p 表示的是指针变量 p 的地址B.*p 表示的是变量 a 的值,而不是变量 a 的地址 C.*p 表示的是指针变量 p 的值D.*p 只能用来说明 p 是一个指针变量解析:解析 本题经过定义语句和赋值后,p 表示的是变量 a 的地址,*p 表示的是变量

37、 a 的值。12.有如下说明: int a10=1,2,3,4,5,6,7,8,9,10,*p=a;则数值为 9 的表达式是( )。(分数:1.00)A.*p+9B.*(p+8) C.*p+=9D.p+8解析:解析 数组元素 a0可以用表达式。(p+0),即*p 来引用;数组元素 a1可以用表达式*(p+1)来引用,在这里,p+1 的值就是数组元素 a1的地址,*(p+1)就代表存储单元 a1,这里的一对圆括号不可少。同样,数组元素 a9可以用表达式。(p+9)引用。因此,当指针变量 p 指向 a 数组的起始地址时,若 0i10,则数组元素 ai可以用*(p+i)来表示。13.表达式 ab|(

38、cB.fwrite(fp,size,count,buffe;C.fwrite(fp,count,size,buffe;D.fwrite(buffer,size,count,f; 解析:解析 fwrite 的形式是 fwrite(buffer,size,count,fp),buffer 是准备输出的数据块的起始地址,size 是每个数据块的字节数,count 用来指定每写一次或输出的数据块,fp 为文件指针。15.若有如下语句: int x=3; do printf(“%d/n“,x-=2); wbile(! ( -x);则上面程序段( )。(分数:1.00)A.输出的是 1B.输出的是 1 和

39、-2 C.输出的是 3 和 0D.是死循环解析:解析 do - while 语句的一般格式为: do 循环体语句 while(表达式); 先执行循环体语句一次,再判断表达式的值,若值为真,则继续执行循环,否则终止循环。本题中,先执行printf(“%d/n“,x- =2),值为 x=x-2,即为 1。然后判断表达式的值,!(-x)为真,x=0,继续循环。再次执行循环体语句后,x=-2,此时表达式!(-x)的值为 0,结束循环。16.假设下面四个选项中所有的数都是 8 进制数或 16 进制数,均是不正确的选项是 ( )。(分数:1.00)A.016 0x8f 018B.0abc 017 0xaC

40、.010 -0x11 0x16D.0al2 7ff -123 解析:解析 在 8 进制中,不可能包括 8 以亡的数字,它的范围只在 07 之间,以 0 开头。同样,十六进制是以 0x 开头,数字在 09 和 af 之间。17.设 x,y 和 z 都是 int 型变量,且 x=3,y=4,z=5,则下面表达式中,值为 0 的表达式是 ( )。(分数:1.00)A.x double r2; float r3; union uuchar u15;long u22;ua; mya;(分数:1.00)A.30B.29C.24D.22 解析:解析 struct aa 的字节数等于结构体中除共用体的成员所占

41、存储单元之和+共用体的长度,所以计算结果为 2+8+4+8=22。20.以下数据结构中不属于线性数据结构的是( )。(分数:1.00)A.队列B.线性表C.二叉树 D.栈解析:解析 线性表、栈和队列等数据结构所表达和处理的数据以线性结构为组织形式。栈是一种特殊的线性表,它只能在固定的一端进行插入和删除操作,又称后进先出表;队列是插入在一端进行,删除在另一端进行的线性表,又称先进先出表。21.有如下定义: struct person char name9;int age; struct person class10=“John“,17,“paul“,19,“Mary“,18,“Adam“,16;

42、 根据上述定义,能输出字母 M 的语句是( )。(分数:1.00)A.printf(“%c/n“,class3.nam;B.printf(“%c/n“,class3.name1);C.printf(“%c/n“,class2.name1);D.printf(“%c/n“,class2.name0); 解析:解析 本题的关键是弄清楚给结构体数组赋初值的问题。初始值将按数组的各个元素在内存中的存放次序逐个地赋给各元素。结构体数组的各个元素在内存中的存放次序是: class0.name,class0.age,class1.name,class1.age,,由此可知,包含字符“M”的字符串“Mary”

43、赋值给了元素class2.name,则与字符“M”相对应的表达式是 class2.name0。22.以下选项中,与 k=n+完全等价的表达式是( )。(分数:1.00)A.k=n,n=n+1 B.n=n+1,k=nC.k= +nD.k+=n+1解析:解析 k=n+的意思是先将 n 的值赋给 k,然后 n 的值再加 1,选项 A)符合题意;选项 B)和 C)是先使 n 的值加 1,然后再赋值给 k;选项 D)等价于 k=k+(n+1)。23.对表达式 for(表达式 1;表达式 3)可理解为( )。(分数:1.00)A.for(表达式 1;0;表达式 3)B.for(表达式 1;1;表达式 3)

44、 C.for(表达式 1;表达式 1;表达式 3)D.for(表达式 1;表达式 3;表达式 3)解析:解析 本题中,省略了 for 语句的第二个表达式,表示第二个表达式始终为真,即为 1。24.在结构化方法中,用数据流图(DFD)作为描述工具的软件开发阶段是( )。(分数:1.00)A.可行性分析B.需求分析 C.详细设计D.程序编码解析:解析 软件开发阶段包括需求分析、总体设计、详细设计、编码和测试五个阶段,其中需求分析阶段常用的工具是数据流图和数据字典。25.以下程序执行后 x 的值是( )。 #include stdio.h main() int x,y=252,i=386,*m= x

45、=(z= =m); printf(“%d“,x); (分数:1.00)A.252B.1C.0 D.运行时出错,x 无定值解析:解析 指针变量 m 和 z 分别指向整型变量 y,i,所以这两个指针变量中存储的地址是不同的,变量 x 接受的是一个关系运算结果 0(因为 m 和 z 两个地址是不同的),所以 x 为 0。26.若变量已正确说明为 int 类型,要通过语句 scanf(“%d %d %d“,给 a 赋值 3,b 赋值 5,c赋值 8,下面不正确的输入形式是( )。(分数:1.00)A.3回车 5回车 8回车B.3,5,8回车 C.3回车 58回车D.35回车 8回车解析:解析 本题中,

46、“%d%d%d”表示按整数输入数据,输入数据时,在两个数据之间以一个或多个空格间隔,也可以用回车键或 Tab 键。选项 B)中不应该使用逗号。27.以下程序的运行结果是( )。 #include stdio.h #define MIN(x,y) (x)(y)? (x):(y) main() int i=10,j=15,k; k=10*MIN(i,j); printf(“%d/n“,k); (分数:1.00)A.10B.15 C.100D.150解析:解析 该题考查函数的宏定义及三目运算符。表达式 10*MIN(i,j)利用宏展开后为: 10*ij? i:j,即 10015? 10:15,其值为 15,然后将 15 赋给 k。28.没有程序段: int k=10; while(k=0) k=k-1;则下面描述中正确的是( )。(分数:1.00)A.while 循环

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

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

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