【计算机类职业资格】二级C语言分类模拟题571及答案解析.doc

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

1、二级 C语言分类模拟题 571及答案解析(总分:46.50,做题时间:90 分钟)一、选择题(总题数:30,分数:46.50)1.详细设计的结果基本决定了最终程序的_。(分数:1.00)A.代码的规模B.运行速度C.质量D.可维护性2.设有二元关系 R和三元关系 S,下列运算合法的是_。(分数:2.50)A.RSB.RSC.R-SD.RS3.在一个 C源程序文件中,定义一个只允许本源文件中所有函数使用的全局变量的存储类别是_。(分数:2.00)A.externB.staticC.registerD.auto4.若有定义: int w35; 则以下不能正确表示该数组元素的表达式是_。(分数:1.

2、00)A.*(w+1)4B.*(*w+3)C.*(*(w+1)D.*(w00+1)5.以下选项中,合法的 C语言赋值语句是_。(分数:1.00)A.a=b=34B.a=34, b=34C.-i;D.m=(int)(x+y);6.以下程序的输出结果是_。 #include stdio.h main() printf(“% f“, 2.5+1*7% 2/4); (分数:1.00)A.2.500000B.2.750000C.3.375000D.3.0000007.有以下函数: int fun(char * s) char *t=s; while(* t + +); return(t-s); 该函数的

3、功能是_。(分数:2.50)A.计算 s所指字符串的长度B.比较两个字符串的大小C.计算 s所指字符串占用内存字节的个数D.将 s所指字符串复制到字符串 t中8.在软件开发中,需求分析阶段产生的主要文档是_。(分数:1.00)A.软件集成测试计划B.软件详细设计说明书C.用户手册D.软件需求规格说明书9.层次型、网状型和关系型数据库划分原则是_。(分数:1.00)A.记录长度B.文件的大小C.联系的复杂程度D.数据之间的联系方式10.对长度为 n的线性表进行顺序查找,在最坏的情况下需要比较的次数为 _ 。(分数:2.00)A.125B.n/2CnD.n+111.有以下程序: #include

4、stdio.h main() struct cmplxint x; int y; cnum2=1,3,2,7; printf(“% d/n“, cnum0.y/cnum0.x*cnum1.x); 则正确的输出结果为_。(分数:2.50)A.0B.1C.3D.612.有以下程序: #includestdio.h int fun() static int x=1; x*=2; return x; main() int i, s=1; for(i=1; i=3; i+) s*=fun(); printf(“%d/n“, s); 程序运行后的输出结果是_。(分数:1.00)A.30B.10C.0D.6

5、413.有以下程序: main() int n=0; do n+;printf(“%d/n“,n);while(n=3); 程序的输出结果是_。 A B C (分数:2.50)A.B.C.D.14.设 x、y、z 和 k都是 int型变量,则执行表达式:x=(y=4,Z=16,k=32)后,x 的值为_。(分数:1.00)A.4B.16C.32D.5215.以下程序的输出结果是_。 #include stdio.h main() int i; for(i=1; i=5; i+) if(i% 2) putchar(“); else continue; putchar (“); putchar (

6、“#“); (分数:2.50)A. #B. #C. #D. #16.有以下程序 #include stdio.h main() int k=5; while(-k) printf(“%d“,k-=3); printf(“/n“); 执行后的输出结果是_。(分数:1.00)A.死循环B.2C.4D.117.在长度为 n的有序线性表中进行二分查找,最坏情况下需要比较的次数是_。 A.O(n) B.O(n2) C.O(log2n) D.O(nlog2n)(分数:1.00)A.B.C.D.18.在 C语言中,变量的隐含存储类别是(分数:2.00)A.autoB.staticC.extemD.无存储类别

7、19.设有输入语句“scanf(“a=%d,b=%d,c=%d“,”,则 p+6表示_。(分数:1.00)A.数组元素 b6的值B.数组元素 b6的地址C.数组元素 b7的地址D.数组元素 b0的值加上 621.有两个关系 R和 T如下: R A B C a 1 2 b 2 2 c 3 2 d 3 2 T A B C c 3 2 d 3 2 则由关系 R得到关系 T的操作是_。(分数:1.00)A.选择B.投影C交D并22.有以下程序: #includestdio.h void fun1(char*p) char*q; q=p; while(*q!=“/0“) (*q)+; q+; main(

8、) char a=“Program“,*p; p= fun1(p); printf(“%s/n“,a); 程序执行后的输出结果是_。(分数:1.00)A.PrphsbnB.ProhsbnC.ProgsbnD.Program23.有以下程序 #includestdio.h main() int a44=1, 4, 3, 2, 8, 6, 5, 7, 3, 7, 2, 5, 4, 8, 6, 1; int i, j, k, t; for(i=0; i4; i+) for(j=0; j3; j+) for(k=j+1; k4; k+) if(ajiaki t=aji; aji=aki; aki=t;

9、 /*按列排序*/ for(i=0; i4; i+) printf(“%d,“, aii); 程序运行后的输出结果是_。(分数:2.00)A.8, 7, 3, 1,B.1, 6, 5, 7,C.4, 7, 5, 2,D.1, 6, 2, 1,24.以下叙述中错误的是_。(分数:1.00)A.非零的数值型常量有正值和负值的区分B.常量是在程序运行过程中值不能被改变的量C.定义符号常量必须用类型名来设定常量的类型D.用符号名表示的常量叫符号常量25.以下程序的执行结果是_。 #include stdio.h union un int i; char c2; main() union un x; x

10、.c0=10; x.c1=1; printf(“/n% d“, x.i); (分数:2.50)A.266B.11C.265D.13826.有以下程序 #includestdio.h int fun(int x,int n) static int sum=0,i; for(i=0;in;i+) sum+=xi; return sum; main() int a=1,2,3,4,5,b=6,7,8,9,s=0; s=fun(a,5)+fun(b,4); printf(“%d/n“,s); 程序执行后的输出结果是_。(分数:1.00)A.50B.60C.45D.5527.C语言中 char类型数据占

11、字节数为_。(分数:1.00)A.1B.2C.3D.428.有以下程序 #includestdio.h #includestdlib.h main() int *a,*b,*c; a=b=c=(int*)malloc(sizeof(int); *a=1;*b=2,*c=3; a=b; printf(“%d,%d,%d/n“,*a,*b,*c); 程序运行后的输出结果是_。(分数:1.00)A.1,1,3B.2,2,3C.1,2,3D.3,3,329.下列程序的输出结果是_。 main() int i=1, j=2, k=3; if(i+=1 (分数:2.50)A.1 2 3B.2 3 4C.2

12、 2 3D.2 3 330.有以下程序 #include stdio.h int fun(int (*s)4,int n,int k) int m,i; m=s0kl; for(i=1;in;i+) if(sikm) m=sik; return m; main() int a44=1,2,3,4,11,12,13,14, 21,22,23,24, 31,32,33,34; printf(“%d/n“,fun(a,4,0); 程序的运行结果是_。(分数:2.00)A.4B.34C.31D.32二级 C语言分类模拟题 571答案解析(总分:46.50,做题时间:90 分钟)一、选择题(总题数:30

13、,分数:46.50)1.详细设计的结果基本决定了最终程序的_。(分数:1.00)A.代码的规模B.运行速度C.质量 D.可维护性解析:解析 详细设计阶段的根本目标是确定应该怎样具体地实现所要求的系统,但详细设计阶段的任务还不是具体的编写程序,而是要设计出程序的“蓝图”,以后程序员将根据这个蓝图写出实际的程序代码。因此,详细设计阶段的结果基本上就决定了最终的程序代码的质量。2.设有二元关系 R和三元关系 S,下列运算合法的是_。(分数:2.50)A.RSB.RSC.R-SD.RS 解析:解析 本题给出的两个关系 R与 S的表结构是不同的(R 是二元关系,S 是三元关系),它们不能进行“、-”运算

14、,却可以进行笛卡儿积()运算。3.在一个 C源程序文件中,定义一个只允许本源文件中所有函数使用的全局变量的存储类别是_。(分数:2.00)A.externB.static C.registerD.auto解析:4.若有定义: int w35; 则以下不能正确表示该数组元素的表达式是_。(分数:1.00)A.*(w+1)4 B.*(*w+3)C.*(*(w+1)D.*(w00+1)解析:解析 本题考查的是通过指针引用二维数组元素。通过一维数组名或指向一维数组元素的指针来引用数组元素有两种写法:ai和*(a+i),它们是等价的。这是一种运算符之间的等价转换,就好像 a-(b-c)等价于 a-b+c

15、一样。知道了这种转换,我们可以将之扩展到二维数组甚至任意维数组上来。因为运算符的结合性是从左至右的,所以 wij等价于(wi)j,此时可以先将任意一个运算符转换为指针形式为:(*(w+i)j或*(wi+j),或者同时转换:*(*(w+i)+j)。上述几种形式都完全等价于 wij。5.以下选项中,合法的 C语言赋值语句是_。(分数:1.00)A.a=b=34B.a=34, b=34C.-i;D.m=(int)(x+y); 解析:6.以下程序的输出结果是_。 #include stdio.h main() printf(“% f“, 2.5+1*7% 2/4); (分数:1.00)A.2.5000

16、00 B.2.750000C.3.375000D.3.000000解析:7.有以下函数: int fun(char * s) char *t=s; while(* t + +); return(t-s); 该函数的功能是_。(分数:2.50)A.计算 s所指字符串的长度 B.比较两个字符串的大小C.计算 s所指字符串占用内存字节的个数D.将 s所指字符串复制到字符串 t中解析:解析 首先 char*s接受一个字符型数组的首地址,并将这个首地址赋给另个字符型指针char*t,while(*t+)不断循环直到*t 为“/0”,再将 t-1,这时字符指针 t指向字符串的最后一个字符,又因为 s指向字

17、符数组的首地址,即字符串的首地址,所以 return(t-s)便是返回字符数组中字符串的长度。8.在软件开发中,需求分析阶段产生的主要文档是_。(分数:1.00)A.软件集成测试计划B.软件详细设计说明书C.用户手册D.软件需求规格说明书 解析:解析 需求分析阶段的工作可以概括为:需求获取、需求分析、编写需求规格说明书、需求评审四个方面。所以选择 D。9.层次型、网状型和关系型数据库划分原则是_。(分数:1.00)A.记录长度B.文件的大小C.联系的复杂程度D.数据之间的联系方式 解析:解析 层次模型的基本结构是树形结构,网状模型是一个不加任何条件限制的无向图,关系模型采用二维表来表示,所以三

18、种数据库的划分原则是数据之间的联系方式。10.对长度为 n的线性表进行顺序查找,在最坏的情况下需要比较的次数为 _ 。(分数:2.00)A.125B.n/2Cn D.n+1解析:解析 对线性表进行顺序查找时,从表中的第一个元素开始,将给定的值与表中逐个元素的关键字进行比较,直到两者相符,查找到所要找的元素为止。在最坏的情况下,要查找的元素是表的最后一个元素或查找失败,这两种情况都需要将这个元素与表中的所有元素进行比较,因此比较次数为 n。11.有以下程序: #include stdio.h main() struct cmplxint x; int y; cnum2=1,3,2,7; prin

19、tf(“% d/n“, cnum0.y/cnum0.x*cnum1.x); 则正确的输出结果为_。(分数:2.50)A.0B.1C.3D.6 解析:解析 程序定义了一个名为 cnum的含有两个元素的结构体类型数组,结构体类型为 struct cmplx, cnum的每个元素含有两个成员。在定义 cnum的同时给它的元素赋初值,cnum0.x 的初值是1,cnum0.y 的初值是 3,cnum1.x 的初值是 2,cnum1.y 的初值是 7。因此,printf 输出项中的表达式可代入为 3/1*2,输出结果是 6。总结:对结构体变量(或数组)赋初值时,C 编译程序按每个成员在内存中排列的顺序,

20、一一对应赋予初值表中的值。12.有以下程序: #includestdio.h int fun() static int x=1; x*=2; return x; main() int i, s=1; for(i=1; i=3; i+) s*=fun(); printf(“%d/n“, s); 程序运行后的输出结果是_。(分数:1.00)A.30B.10C.0D.64 解析:解析 分析程序可知,main 函数中初始化 s=1,然后根据 i的值 1、2、3 执行 3次 for循环,每次将 s当前值与函数 fun()的返回值相乘,并将乘积赋给 s,所以 for循环等价于:s=s*fun()*fun(

21、)*fun();可见 s的值取决于 fun()函数的返回值。在 fun()函数中,定义了一个静态局部变量 x并初始化为 1,再将 x的值乘以 2返回,因为静态局部变量 x在编译时赋初值,并且只赋值一次,下一次调用时都是保留上一次的值,所以 fun()函数每次被调用,返回值都是上一次的 2倍,所以 s=1248=64。故答案选 D选项。13.有以下程序: main() int n=0; do n+;printf(“%d/n“,n);while(n=3); 程序的输出结果是_。 A B C (分数:2.50)A.B.C. D.解析:14.设 x、y、z 和 k都是 int型变量,则执行表达式:x=

22、(y=4,Z=16,k=32)后,x 的值为_。(分数:1.00)A.4B.16C.32 D.52解析:15.以下程序的输出结果是_。 #include stdio.h main() int i; for(i=1; i=5; i+) if(i% 2) putchar(“); else continue; putchar (“); putchar (“#“); (分数:2.50)A. # B. #C. #D. #解析:解析 本例考查 cuntinue语句的基本使用方法。在程序中,当 i%2为真时,执行输出语句,否则执行 continue语句,即开始 i+运算,进入下一次循环,即当 i是偶数时(i

23、%2 为 0)无任何输出。16.有以下程序 #include stdio.h main() int k=5; while(-k) printf(“%d“,k-=3); printf(“/n“); 执行后的输出结果是_。(分数:1.00)A.死循环B.2C.4D.1 解析:解析 判断循环条件-k,k 值为 4,条件为真,执行输出语句,其中 k-=3执行后,k 为 1,即输出为 1,然后判断循环条件-k,值为 0,为假,循环结束。答案选择 D。17.在长度为 n的有序线性表中进行二分查找,最坏情况下需要比较的次数是_。 A.O(n) B.O(n2) C.O(log2n) D.O(nlog2n)(分

24、数:1.00)A.B.C. D.解析:解析 当有序线性表为顺序存储时才能用二分法查找。可以证明的是对于长度为 n的有序线性表,在最坏情况下,二分法查找只需要比较 log 2 n次,而顺序查找需要比较 n次。所以选择 C选项。18.在 C语言中,变量的隐含存储类别是(分数:2.00)A.auto B.staticC.extemD.无存储类别解析:解析 auto 变量:无 static声明的局部变量。用 auto作存储类别的声明时,可以不写 auto,存储类别隐含确定为 auto(自动存储类别),是动态存储方式。大多数变量是自动变量。用 static声明的局部变量是静态局部变量。函数调用结束后静态

25、局部变量占据的内存存储单元空间不释放,局部变量保留原值,下次调用时可以继续使用该值。用 extern声明外部变量,外部变量即全局变量,可以用 extern声明来改变全局变量的作用域,实际上,关键字“auto”可以省略,auto 不写则隐含确定为“自动存储类别”,属于动态存储方式。19.设有输入语句“scanf(“a=%d,b=%d,c=%d“,”,则 p+6表示_。(分数:1.00)A.数组元素 b6的值B.数组元素 b6的地址 C.数组元素 b7的地址D.数组元素 b0的值加上 6解析:解析 指针中存放的是变量的地址,指针也可以进行增减运算,这时指针移动的最小单位是一个存储单元,而不是一个字

26、节。所以题中 p+6指的是将指针向后移动了 6个存储单元,即指向 b6,存放的是 b6的地址。21.有两个关系 R和 T如下: R A B C a 1 2 b 2 2 c 3 2 d 3 2 T A B C c 3 2 d 3 2 则由关系 R得到关系 T的操作是_。(分数:1.00)A.选择 B.投影C交D并解析:解析 选择是建立一个含有与原始关系相同列数的新表,但是行只包括那些满足某些特定标准的原始关系行。22.有以下程序: #includestdio.h void fun1(char*p) char*q; q=p; while(*q!=“/0“) (*q)+; q+; main() ch

27、ar a=“Program“,*p; p= fun1(p); printf(“%s/n“,a); 程序执行后的输出结果是_。(分数:1.00)A.PrphsbnB.Prohsbn C.ProgsbnD.Program解析:解析 (*q)+是 q所指的字符加 1,q+就是指针移到下一个字符。因此 B选项正确。23.有以下程序 #includestdio.h main() int a44=1, 4, 3, 2, 8, 6, 5, 7, 3, 7, 2, 5, 4, 8, 6, 1; int i, j, k, t; for(i=0; i4; i+) for(j=0; j3; j+) for(k=j+

28、1; k4; k+) if(ajiaki t=aji; aji=aki; aki=t; /*按列排序*/ for(i=0; i4; i+) printf(“%d,“, aii); 程序运行后的输出结果是_。(分数:2.00)A.8, 7, 3, 1,B.1, 6, 5, 7, C.4, 7, 5, 2,D.1, 6, 2, 1,解析:解析 第一个嵌套的 for循环把二维数组按列从小到大排序,最后输出对角线上的元素,答案选择 B。24.以下叙述中错误的是_。(分数:1.00)A.非零的数值型常量有正值和负值的区分B.常量是在程序运行过程中值不能被改变的量C.定义符号常量必须用类型名来设定常量的类

29、型 D.用符号名表示的常量叫符号常量解析:解析 在 C语言中,可以用一个标识符来表示一个常量,称之为符号常量。符号常量在使用之前必须先定义,其一般形式为:# define 标识符常量。25.以下程序的执行结果是_。 #include stdio.h union un int i; char c2; main() union un x; x.c0=10; x.c1=1; printf(“/n% d“, x.i); (分数:2.50)A.266 B.11C.265D.138解析:解析 此题考查共用体的特征。int 类型变量 i和字符数组 c共用两个字节的存储单元,通常 c0位于低字节,c1位于高字

30、节。因此,x.i=x.c1*256+x.c0=266,故选项 A正确。26.有以下程序 #includestdio.h int fun(int x,int n) static int sum=0,i; for(i=0;in;i+) sum+=xi; return sum; main() int a=1,2,3,4,5,b=6,7,8,9,s=0; s=fun(a,5)+fun(b,4); printf(“%d/n“,s); 程序执行后的输出结果是_。(分数:1.00)A.50B.60 C.45D.55解析:解析 函数 fun的功能是求数组的 n个元素之和。fun(a,5)=15。由于 sum是

31、静态局部变量,所以保持 15不变,fun(b,4)=45,所以 s=fun(a,5)+fun(b,4)=60。27.C语言中 char类型数据占字节数为_。(分数:1.00)A.1 B.2C.3D.4解析:解析 每个字符变量被分配一个字节的内存空间。因此 A选项正确。28.有以下程序 #includestdio.h #includestdlib.h main() int *a,*b,*c; a=b=c=(int*)malloc(sizeof(int); *a=1;*b=2,*c=3; a=b; printf(“%d,%d,%d/n“,*a,*b,*c); 程序运行后的输出结果是_。(分数:1.

32、00)A.1,1,3B.2,2,3C.1,2,3D.3,3,3 解析:解析 malloc 函数动态分配一个整型的内存空间,然后把函数返回的地址用(int*)强制类型转换为整型指针,再把它赋给 a,b,c,即让指针变量 a,b,c 都指向刚申请的内存空间。因此只有最后一个赋值语句*c=3 的值保留在了该空间内,因为 a,b,c 三个指针变量均指向该空间,所以打印该空间内的数值均为 3,选项 D正确。29.下列程序的输出结果是_。 main() int i=1, j=2, k=3; if(i+=1 (分数:2.50)A.1 2 3B.2 3 4C.2 2 3D.2 3 3 解析:解析 本题考查自增

33、运算符“+”、逻辑与运算符“ m=s0kl; for(i=1;in;i+) if(sikm) m=sik; return m; main() int a44=1,2,3,4,11,12,13,14, 21,22,23,24, 31,32,33,34; printf(“%d/n“,fun(a,4,0); 程序的运行结果是_。(分数:2.00)A.4B.34C.31 D.32解析:解析 在主函数中,定义并初始化了 4行 4列的二维数组 a,并通过调用 fun函数,将 fun函数中指向一维数组的指针变量 s指向了二维数组 a的首地址,使得指针变量 s与数组 a共用同一存储单元。在 fun函数中,通过 for循环,求得了数组 a第 0列中最大的值,并赋给 m返回主函数。由于数组 a第 0列的值分别为 1、11、21、31,故其最大值是 31。

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

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

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