欢迎来到麦多课文档分享! | 帮助中心 海量文档,免费浏览,给你所需,享你所想!
麦多课文档分享
全部分类
  • 标准规范>
  • 教学课件>
  • 考试资料>
  • 办公文档>
  • 学术论文>
  • 行业资料>
  • 易语言源码>
  • ImageVerifierCode 换一换
    首页 麦多课文档分享 > 资源分类 > DOC文档下载
    分享到微信 分享到微博 分享到QQ空间

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

    • 资源ID:1326060       资源大小:93KB        全文页数:25页
    • 资源格式: DOC        下载积分:5000积分
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    二维码
    微信扫一扫登录
    下载资源需要5000积分(如需开发票,请勿充值!)
    邮箱/手机:
    温馨提示:
    如需开发票,请勿充值!快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如需开发票,请勿充值!如填写123,账号就是123,密码也是123。
    支付方式: 支付宝扫码支付    微信扫码支付   
    验证码:   换一换

    加入VIP,交流精品资源
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    1、二级 C语言笔试-25 及答案解析(总分:110.00,做题时间:90 分钟)一、选择题(总题数:40,分数:80.00)1.一颗二叉树中共有 70个叶子节点与 80个度为 1的节点,则二叉树的总节点数为_。(分数:2.00)A.219B.221C.229D.2312.按照 C语言规定的用户标识符命名规则,不能出现在标识符中的是_。(分数:2.00)A.大写字母B.连接符C.数字字符D.下划线3.有以下程序:#includestdio.hmain()int a=1,2,3,4,y,*p=a3;-p;y=*p;printf(“y=%d/n“,y);程序的运行结果是_。(分数:2.00)A.y=0

    2、B.y=1C.y=2D.y=34.有以下程序段:typedef struct node(int data;struct node*next;)*NODE;NODE P;以下叙述中正确的是_。(分数:2.00)A.P是指向 struct node结构变量的指针的指针B.NODE p;语句出错C.P是指向 struct node结构变量的指针D.P是 struct node结构变量5.若变量已正确定义,有以下程序段:i=0;do prinntf(“%d,i“);while(i+);printf(“%d/n“,i);其输出结果是_。(分数:2.00)A.0,0B.0,1C.1,1D.程序进入无限循环

    3、6.有以下程序:struct Sint n;int a20;;void f(struct S*P)int i,j,t;for(i=0;iP-n-1;i+)for(j=j+1;jP-n-1;j+)if(p-aip-aj)t=P-ai;p-ai=P-aj;p-aj=tmain()int i;struct S s10,2,3,1,6,8,7,5,4,10,9;f(s);for(i=0;is.n;i+)printf(“%d“,s.ai);程序运行后的输出结果是_。(分数:2.00)A.3B.4C.5D.67.有以下程序:float f1(float n)return n*n;float f2(floa

    4、t n)return 2*n;main()float(*p1)(float),(*p2)(float),(*t)(float),y1,y2;p1=f1;p2=f2;y1=p2(p1(2.0);t=p1;p1=p2;p2=t;y2=p2(p1(2.0);printf(“%3.0f,%3.0f/n“,y1,y2);程序运行后的输出结果是_。(分数:2.00)A.8,16B.8,8C.16,16D.4,88.以下选项中不属于字符常量的是_。(分数:2.00)A.CB.“C“C./xCCD./0729.有以下程序:main()int a=1,b=3,c=5;int*p1=a,*p2=b,*p=c;*p

    5、=*p1*(*p2);printf(“%d/n“,c);执行后的输出结果是_。(分数:2.00)A.1B.2C.3D.410.下列叙述中错误的是_。(分数:2.00)A.计算机不能直接执行用 C语言编写的源程序B.C程序经 C编译后,生成后缀为.obj 的文件是一个二进制文件C.后缀为.obj 的文件,经连接程序生成后缀为.exe 的文件是一个二进制文件D.后缀为.obj 和.exe 的二进制文件都可以直接运行11.有以下程序:fun(int x)int p;if(x=0|x=1)return(3);p=x-fun(x-2);return p;main()printf(“%d/n“,fun(7

    6、);执行后的输出结果是_。(分数:2.00)A.7B.3C.2D.012.有以下程序:main()char ch=“uvwxyz“,*pc;pc=ch;printf(“%c/n“,*(pc+5);程序运行后的输出结果是_。(分数:2.00)A.zB.0C.元素 ch5地址D.字符 y的地址13.设有如下关系表:R S TA B C A B C A B C1 1 2 3 1 3 1 1 22 2 3 2 2 33 1 3则下列操作中正确的是_。(分数:2.00)A.T=RSB.T=RSC.T=RSD.T=R/S14.有以下程序:main()int i;for(i=1,i=40;i+)if(i+%

    7、5=0)if(+i%8=0)printf(“%d“,i);printf (“/n“);执行后的输出结果是_。(分数:2.00)A.5B.24C.32D.4015.有以下程序段:int n,t=1,S=0;scanf(“%d“,n);dos=s+t;t=t-2;while(t!=n);为使此程序段不陷入死循环,从键盘输入的数据应该是_。(分数:2.00)A.任意正奇数B.任意负偶数C.任意正偶数D.任意负奇数16.有以下程序:main()int a44=1,4,3,2,8,6,5,7,3,7,2,5,4,8,6,1,),i,j,k,t;for(i=0;i4;i+)for(j=0;j3;j+)fo

    8、r(k=j+1;k4;k+)if(ajiaki)t=aji;aji=aki;aki=t;/*按列排序*/for(i=0;i4;i+)printf(“%d,“,aii);程序运行后的输出结果是_。(分数:2.00)A.1,6,5,7,B.8,7,3,1,C.4,7,5,2,D.1,6,2,1,17.以下关于字符串的叙述中正确的是_。(分数:2.00)A.C语言中有字符类型的常量和变量B.两个字符串中的字符个数相同时才能进行字符串大小的比较C.可以用关系运算符对字符串的大小进行比较D.空串一定比空格打头的字符串小18.现有以下结构体说明和变量定义,如图所示,指针 p、q、r 分别指向一个链表中连续

    9、的三个节点。struct nodechar data;struct node*next;*p,*q,*r;(分数:2.00)A.B.C.D.19.下列对于线性链表的描述中正确的是_。(分数:2.00)A.存储空间不一定是连续,且各元素的存储顺序是任意的B.存储空间不一定是连续,且前件元素一定存储在后件元素的前面C.存储空间必须连续,且各前件元素一定存储在后件元素的前面D.存储空间必须连续,且各元素的存储顺序是任意的20.在软件设计中,不属于过程设计工具的是_。(分数:2.00)A.PDL(过程设计语言)B.PAD图C.N-S图D.DFD图21.在面向对象方法中,实现信息隐蔽是依靠_。(分数:2

    10、.00)A.对象的继承B.对象的多态C.对象的封装D.对象的分类22.在一个 C源程序文件中所定义的全局变量,其作用域为_。(分数:2.00)A.所在文件的全部范围B.所在程序的全部范围C.所在函数的全部范围D.由具体定义位置和 extern说明来决定范围23.数据库系统的核心是_。(分数:2.00)A.数据模型B.数据库管理系统C.数据库D.数据库管理员24.以下选项中值为 1的表达式是_。(分数:2.00)A.1-0B.1-/0C.1-0D./0-025.有以下程序:main()int x,y,z;x=y=1;z=x+,y+,+y;printf(“%d,%d,%d,%d/n“,x,y,z)

    11、;程序运行后的输出结果是_。(分数:2.00)A.2,3,3B.2,3,2C.2,3,1D.2,2,126.以下叙述中正确的是_。(分数:2.00)A.break语句只能用于 switch语句体中B.continue语句的作用是使程序的执行流程跳出包含它的所有循环C.break语句只能用在循环体内和 switch语句体内D.在循环体内使用 break语句和 continue语句的作用相同27.有以下程序:main()unsigned char a=2,b=4,c=5,d;d=a|b;d=c;printf(“%d/n“,d);程序运行后的输出结果是_。(分数:2.00)A.3B.4C.5D.62

    12、8.下列关于栈的描述中错误的是_。(分数:2.00)A.栈是先进后出的线性表B.栈只能顺序存储C.栈具有记忆作用D.对栈的插入和删除操作中,不需要改变栈底指针29.对长度为 n的线性表排序,在最坏情况下,比较次数不是 n(n-1)/2的排序方法是_。(分数:2.00)A.快速排序B.冒泡排序C.直接插入排序D.堆排序30.以下错误的定义语句是_。(分数:2.00)A.int x3=0,1,1,2,3;B.int x43=1,2,3,1,2,3),1,2,3,1,2,3;C.int x4=1,2,3,1,2,3,1,2,3,1,2,3;D.int x3=1,2,3,4;31.若变量已正确定义,有

    13、以下程序段:int a=3,b=5,c=7;if(ab) a=b;c=a;if(c!=(分数:2.00)A.c=b;pri32.有以下程序:main()int m,n,P;scanf(“m=%dn=%dp=%d“,m,n,p);printf(“%d%d%d/n“,m,n,p);若想从键盘上输入数据,使变量 m中的值为 123,n 中的值为 456,p 中的值为 789,则王确的输入是_。(分数:2.00)A.m=123n=456p=789B.m=123 n=456 p=789C.m=123,n=456,P=789D.123 456 78933.数据库设计的四个阶段是:需求分析、概念设计、逻辑设

    14、计和_。(分数:2.00)A.编码设计B.测试阶段C.运行阶段D.物理设计34.设变量均已正确定义,若要通过 scanf(“%d%c%d%c“,a1,c1,a2,c2);语句为变量 a1和 a2赋数值 10和 20,为变量 c1和 c2赋字符 X和 Y。以下所示的输入形式正确的是(注:代表空格字符)_。(分数:2.00)A.10X20YB.10X20YC.10XD.10X20Y 20Y35.有以下程序:point(char *p)P+=3;)main()char b4=a,b,c,d,*p=b;point(p);printf(“%c/n“,*p);程序运行后的输出结果是_。(分数:2.00)A

    15、.aB.bC.cD.d36.软件调试的目的是_。(分数:2.00)A.发现错误B.改正错误C.改善软件的性能D.验证软件的正确性37.若有代数式 (分数:2.00)A.B.C.D.38.有以下程序:fun(char p10)int n=0,i;for(i=0;i7;i+)if(Pi0=T)n+;return n;main()char str10=“Mon“,“Tue“,“wed“,“Thu“,“Fri“,“Sat“,“Sun“;printf(“%d/n“,fun(str);程序执行后的输出结果是_。(分数:2.00)A.1B.2C.3D.039.有以下程序:#includevoid Write

    16、Str(char *fn,char*str)FILE*fp;fp=fopen(fn,“w“);fputs(str,fp);fclose(fp);main()WriteStr(“t1.dat“,“start“);WriteStr(“t1.dat“,“end“);程序运行后,文件 t1.dat中的内容是_。(分数:2.00)A.startB.endC.startendD.endrt40.以下叙述中错误的是_。(分数:2.00)A.在程序中凡是以“#”开始的语句行都是预处理命令行B.预处理命令行的最后不能以分号表示结束C.#define MAX是合法的宏定义命令行D.C程序对预处理命令行的处理是在程

    17、序执行的过程中进行的二、填空题(总题数:13,分数:30.00)41.在深度为 7的满二叉树中,度为 2的节点个数为 1。(分数:2.00)填空项 1:_42.对下列二叉树进行中序遍历的结果为_。(分数:2.00)填空项 1:_43.测试用例包括输入值集和 1 值集。(分数:2.00)填空项 1:_44.软件生命周期可分为多个阶段,一般分为定义阶段、开发阶段和维护阶段。编码和测试属于 1 阶段。(分数:2.00)填空项 1:_45.在关系数据库中,用来表示实体之间联系的是 1。(分数:2.00)填空项 1:_46.设有定义:float x=123.4567;,则执行以下语句后的输出结果是_。p

    18、rintf(“%f/n“,(int)(x*100+0.5)/100.0);(分数:2.00)填空项 1:_47.以下程序运行后的输出结果是_。main()int x,a=1,b=2,c=3,d=4;x=(ab)?a:b;x=(ac)?x:C;x=(dx)?x:d;printf(“%d/n“,x);(分数:2.00)填空项 1:_48.已知字母 A的 ASC码为 65。以下程序运行后的输出结果是_。main()char a,b;a=A+5-3;b=a+6-2;printf(“%d%c/n“,a,b);(分数:2.00)填空项 1:_49.以下程序运行后的输出结果是_。void swap(int

    19、X,int y)int t;t=x;x=y;y=t;printf(“%d%d“,x,y);main()int a=3,b=4;swap(a,b);printf(“%d%d/n“,a,b);(分数:2.00)填空项 1:_以下程序的功能是输出如下形式的方阵:13 14 15 169 10 11 125 6 7 81 2 3 4请填空。main()int i,j,x;for(j=4;j (10) ;j-)for(i=1;i=4;i+)x=(j-1)*4+ (11) ;printf(“M“,x);printf(“/n“);(分数:4.00)填空项 1:_填空项 1:_下列程序中的函数 strcpy2

    20、()实现字符串两次复制,即将 t所指字符串复制两次到 s所指内存空间中,合并形成一个新字符串。例如 t所指字符串为 efgh,调用 strcpy2后,s 所指字符串为 efghefgh。请填空。#includestdio.h#includestring.hvoid strcpy2(char*s,char*t)char*P=t;while(*s+=*t+);s= (12) ;while( (13) =*P+);main()char str1100=“ahcd“,str2=“efgh“;strcpy2(str1,str2);printf(“%s/n“,str1);(分数:4.00)填空项 1:_填

    21、空项 1:_50.以下函数 fun的功能是返回 str所指字符串中以形参 c中字符开头的后续字符串的首地址,例如,str所指字符串为 Hello!,c 中的字符为 e,则函数返回字符串为 ello!的首地址。若 str所指字符串为空串或不包含 c中的字符,则函数返回 NULL。请填空。char*fun(char*str,char c)int n=0;char*p=str;if(P!=NULL)while(pn!=cpn!=/0)n+;if(pn=/0)return NULL;return_;(分数:2.00)填空项 1:_51.下面程序的功能是建立一个有 3个节点的单循环链表,如下图所示,然后

    22、求各个节点数值域 data中数据的和,请填空。(分数:2.00)填空项 1:_二级 C语言笔试-25 答案解析(总分:110.00,做题时间:90 分钟)一、选择题(总题数:40,分数:80.00)1.一颗二叉树中共有 70个叶子节点与 80个度为 1的节点,则二叉树的总节点数为_。(分数:2.00)A.219 B.221C.229D.231解析:解析 树的结点数等于所有结点的度与对应的结点个数乘积之和加 1。对任何一棵二叉树 T,如果其叶子结点数为 n0,度为 2的结点数为 n2,则 n0=n2+1,即叶子结点数总是比度为 2的结点数多 1。由于叶子结点个数为 70,则度为 2的结点数为 7

    23、0-1=69,所以总结点个数为 692+801十 1=219。2.按照 C语言规定的用户标识符命名规则,不能出现在标识符中的是_。(分数:2.00)A.大写字母B.连接符 C.数字字符D.下划线解析:解析 C 语言规定的标识符只能由字母、数字和下划线 3种字符组成,且第一个字母必须为下划线或字母。3.有以下程序:#includestdio.hmain()int a=1,2,3,4,y,*p=a3;-p;y=*p;printf(“y=%d/n“,y);程序的运行结果是_。(分数:2.00)A.y=0B.y=1C.y=2D.y=3 解析:解析 本题主要考查一维数组及数组元素的地址。程序中定义数组

    24、a后知,a0=1,a1=2,a2=3,a3=4;在定义指针 p时给其赋值为 a3的地址。执行-p;语句后,p 指向数组元素 a2;然后执行 y=*p;语句,y 的值为指针 p所指向的变量的值为 3。4.有以下程序段:typedef struct node(int data;struct node*next;)*NODE;NODE P;以下叙述中正确的是_。(分数:2.00)A.P是指向 struct node结构变量的指针的指针B.NODE p;语句出错C.P是指向 struct node结构变量的指针 D.P是 struct node结构变量解析:解析 本题中定义了一个指针类型的“用户类型名

    25、”NODE,通过“用户类型名”可以定义该类型的结构体变量。5.若变量已正确定义,有以下程序段:i=0;do prinntf(“%d,i“);while(i+);printf(“%d/n“,i);其输出结果是_。(分数:2.00)A.0,0B.0,1 C.1,1D.程序进入无限循环解析:解析 本题考查的重点是 do-while用法。do-while 循环先执行循环体中的语句,然后再判断while中的条件是否为真,如果为真(非零)则继续循环;如果为假,则终止循环。因此,do-while 循环至少要执行一次循环语句。6.有以下程序:struct Sint n;int a20;;void f(stru

    26、ct S*P)int i,j,t;for(i=0;iP-n-1;i+)for(j=j+1;jP-n-1;j+)if(p-aip-aj)t=P-ai;p-ai=P-aj;p-aj=tmain()int i;struct S s10,2,3,1,6,8,7,5,4,10,9;f(s);for(i=0;is.n;i+)printf(“%d“,s.ai);程序运行后的输出结果是_。(分数:2.00)A.3 B.4C.5D.6解析:解析 在主函数 main()中定义了一个整型变量 i和一个结构体变量 s。f()函数中,定义了一个结构体指针类型的指针 p,外层循环变量 i表示数组的第 i个元素,内层循环

    27、j表示数组的第 i+1个元素,调用 f()函数,通过指针变量 p来引用结构体成员,并把它们进行从小到大排序,最后输出。7.有以下程序:float f1(float n)return n*n;float f2(float n)return 2*n;main()float(*p1)(float),(*p2)(float),(*t)(float),y1,y2;p1=f1;p2=f2;y1=p2(p1(2.0);t=p1;p1=p2;p2=t;y2=p2(p1(2.0);printf(“%3.0f,%3.0f/n“,y1,y2);程序运行后的输出结果是_。(分数:2.00)A.8,16 B.8,8C.

    28、16,16D.4,8解析:解析 题目中(*p1)(float)定义了一个指向函数的指针变量 pl,此函数的返回值是 float类型。在 main函数中,使得 pl指向了函数 f1,p2 指向了函数 f2。语句“y1=p2(p1(2.0)”先调用了 p1函数,将其返回值 4.000000传递给了 f2的形参 n,并使其函数返回值 8.000000赋值给 y1。然后在 main函数中交换了 p1、p2 指针变量的指向,使 p1指向了函数 f2,p2 指向了函数 f1,并先调函数 f2,得到返回值4.000000,使其传递给 f1函数的形参 n,并将带回的返回值 16.000000赋值给 y2。8.

    29、以下选项中不属于字符常量的是_。(分数:2.00)A.CB.“C“ C./xCCD./072解析:解析 C 语言中字符常量是用单引号括起来的单个字符,因此,选项 B是错误,用双引号括起来的字符属于字符串。选项 C、选项 D分别表示十六进制、八进制格式 ASC代码值对应的字符常量。9.有以下程序:main()int a=1,b=3,c=5;int*p1=a,*p2=b,*p=c;*p=*p1*(*p2);printf(“%d/n“,c);执行后的输出结果是_。(分数:2.00)A.1B.2C.3 D.4解析:解析 *p1=1,*p2=3,*p=3,指针 p指向变量 c,故正确选项为 C。10.下

    30、列叙述中错误的是_。(分数:2.00)A.计算机不能直接执行用 C语言编写的源程序B.C程序经 C编译后,生成后缀为.obj 的文件是一个二进制文件C.后缀为.obj 的文件,经连接程序生成后缀为.exe 的文件是一个二进制文件D.后缀为.obj 和.exe 的二进制文件都可以直接运行 解析:解析 C 语言是一种“高级语言”。由高级语言编写的程序称为“源程序”。C 语言源程序经过编译后生成一个后缀为.obj 的二进制文件(称为目标文件),最后还要由“连接程序”(Link)软件把此.obj文件与 C语言提供的各种库函数连接起来,生成一个后缀为.obj 的可执行文件。在 DOS状态下,只需打人此文

    31、件的名字(不必打入后缀.obj)就可以运行。后缀为.obj 的文件不可以直接执行。11.有以下程序:fun(int x)int p;if(x=0|x=1)return(3);p=x-fun(x-2);return p;main()printf(“%d/n“,fun(7);执行后的输出结果是_。(分数:2.00)A.7B.3C.2 D.0解析:解析 函数 fun是一个递归调用函数,首先主函数将实参 7传递给 fun函数中的形参 x,由于 x=7不满足 if语句的条件,则执行下面的“p=x-fun(x-2);”语句,此语句继续调用本身,直到当 x=1时,返回函数值 3代入到调用它的表达式中,以此类

    32、推,最终 p的值为 2。12.有以下程序:main()char ch=“uvwxyz“,*pc;pc=ch;printf(“%c/n“,*(pc+5);程序运行后的输出结果是_。(分数:2.00)A.z B.0C.元素 ch5地址D.字符 y的地址解析:解析 字符指针 pc指向字符串数组 ch的首地址,*(pc+5)就是 pc5的值。13.设有如下关系表:R S TA B C A B C A B C1 1 2 3 1 3 1 1 22 2 3 2 2 33 1 3则下列操作中正确的是_。(分数:2.00)A.T=RSB.T=RS C.T=RSD.T=R/S解析:解析 并():关系 R和 S具有

    33、相同的关系模式,R 和 S的并是由属于 R或属于 S的元组构成的集合。14.有以下程序:main()int i;for(i=1,i=40;i+)if(i+%5=0)if(+i%8=0)printf(“%d“,i);printf (“/n“);执行后的输出结果是_。(分数:2.00)A.5B.24C.32 D.40解析:解析 i=30 时,条件表达式“i+%5=0”为真,i+后 i=31,+i 后 i=32,即条件表达式“+i%8=0”为真。15.有以下程序段:int n,t=1,S=0;scanf(“%d“,n);dos=s+t;t=t-2;while(t!=n);为使此程序段不陷入死循环,从

    34、键盘输入的数据应该是_。(分数:2.00)A.任意正奇数B.任意负偶数C.任意正偶数D.任意负奇数 解析:解析 为了使程序不陷入死循环,则 while的条件不能一直为真。t 的初值为 1,循环体中语句t=t-2使 t变为负奇数-1、-3、-5,而 while的循环条件是 t不等于 n,若从键盘输入的数据为A、B、C 三项时,则 t永远不等于 n,即循环条件一直为真,程序陷入死循环。只有输入负奇数时,t 会在某个时候等于 n,使得 while条件不成立,终止循环。16.有以下程序:main()int a44=1,4,3,2,8,6,5,7,3,7,2,5,4,8,6,1,),i,j,k,t;fo

    35、r(i=0;i4;i+)for(j=0;j3;j+)for(k=j+1;k4;k+)if(ajiaki)t=aji;aji=aki;aki=t;/*按列排序*/for(i=0;i4;i+)printf(“%d,“,aii);程序运行后的输出结果是_。(分数:2.00)A.1,6,5,7, B.8,7,3,1,C.4,7,5,2,D.1,6,2,1,解析:解析 本题首先定义了一个 4行 4列的二维数组,并用了三层 for循环来进行由小到大的排序。外层循环变量 i表示数组的列第二层循环变量 j表示数组的行,第三层循环用于求第 i列第 j行的最小值,其中通过 if语句对相关数值进行比较和交换。最后通

    36、过 for循环对排序后数组对角线上的元素输出。17.以下关于字符串的叙述中正确的是_。(分数:2.00)A.C语言中有字符类型的常量和变量B.两个字符串中的字符个数相同时才能进行字符串大小的比较C.可以用关系运算符对字符串的大小进行比较D.空串一定比空格打头的字符串小 解析:解析 本题考查的重点是 C语言中对字符串的理解。选项 B是错误的,两个字符串不一定非要字符一样多才可以比较大小;选项 C是错误的,不能用关系运算符来对字符串进行大小比较。因为空串只有一个 null字符(其值为零),从而,它一定比空格打头的字符串小,所以选项 D是正确的。18.现有以下结构体说明和变量定义,如图所示,指针 p

    37、、q、r 分别指向一个链表中连续的三个节点。struct nodechar data;struct node*next;*p,*q,*r;(分数:2.00)A.B.C.D. 解析:解析 D 中的操作将会丢失 r后面的链表结构,不能保持链表的连续。19.下列对于线性链表的描述中正确的是_。(分数:2.00)A.存储空间不一定是连续,且各元素的存储顺序是任意的 B.存储空间不一定是连续,且前件元素一定存储在后件元素的前面C.存储空间必须连续,且各前件元素一定存储在后件元素的前面D.存储空间必须连续,且各元素的存储顺序是任意的解析:解析 线性表的链式存储结构称为线性链表,是一种物理存储单元上非连续、

    38、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接来实现的。20.在软件设计中,不属于过程设计工具的是_。(分数:2.00)A.PDL(过程设计语言)B.PAD图C.N-S图D.DFD图 解析:解析 常用的过程设计(即详细设计)工具有以下几种:图形工具:程序流程图、N-S(方盒图)、PAD(问题分析图)和 HIPO(层次图+输入/处理/输出图);表格工具:判定表;语言工具:PDL(伪码)。21.在面向对象方法中,实现信息隐蔽是依靠_。(分数:2.00)A.对象的继承B.对象的多态C.对象的封装 D.对象的分类解析:解析 信息隐蔽是通过对象的封装性来实现的。22.在一个 C源程序文件中所

    39、定义的全局变量,其作用域为_。(分数:2.00)A.所在文件的全部范围B.所在程序的全部范围C.所在函数的全部范围D.由具体定义位置和 extern说明来决定范围 解析:解析 本题考查的重点是全局变量的作用域。全局变量由具体定义位置和 extern说明来决定范围,因此选项 D是正确的。23.数据库系统的核心是_。(分数:2.00)A.数据模型B.数据库管理系统 C.数据库D.数据库管理员解析:解析 数据库管理系统(DBMS):一种系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务等,是数据库的核心。24.以下选项中值为 1的表达式是_。(分数:2.00)A.1-0B.1

    40、-/0 C.1-0D./0-0解析:解析 /0的 ASC值为 0。25.有以下程序:main()int x,y,z;x=y=1;z=x+,y+,+y;printf(“%d,%d,%d,%d/n“,x,y,z);程序运行后的输出结果是_。(分数:2.00)A.2,3,3B.2,3,2C.2,3,1 D.2,2,1解析:解析 z=x+是先把 x的值 1赋给 z,所以 z=1,然后再把 x加 1赋给 x,x=2,+y 后 y又加 1,所以 y=3。26.以下叙述中正确的是_。(分数:2.00)A.break语句只能用于 switch语句体中B.continue语句的作用是使程序的执行流程跳出包含它的

    41、所有循环C.break语句只能用在循环体内和 switch语句体内 D.在循环体内使用 break语句和 continue语句的作用相同解析:解析 只能在循环体内和 switch语句体内使用 break语句。当 break出现在循环体中的 switch语句体内时,其作用只是跳出该 switch语句体。当 break出现在循环体中,但并不在 switch语句体内时,则在执行 break后,跳出本层循环。27.有以下程序:main()unsigned char a=2,b=4,c=5,d;d=a|b;d=c;printf(“%d/n“,d);程序运行后的输出结果是_。(分数:2.00)A.3B.4

    42、 C.5D.6解析:解析 本题中主要进行位逻辑计算。将 a的值转换为二进制 000000010,b转换为二进制00000100,将 a和 b进行按位或运算,因此 d的二进制数为 00000110,c 的二进制为 00000101;接下来把 d和 c进行按位与运算,并转化为十进制输出。28.下列关于栈的描述中错误的是_。(分数:2.00)A.栈是先进后出的线性表B.栈只能顺序存储 C.栈具有记忆作用D.对栈的插入和删除操作中,不需要改变栈底指针解析:解析 栈是限定在一端进行插入与删除运算的线性表。在栈中,允许插入与删除的一端称为栈顶,不允许插入与删除的另一端称为栈底,对栈的插入和删除操作中,不需

    43、要改变栈底指针。栈是按照“先进后出”或“后进先出”的原则组织数据的。栈具有记忆作用。栈的存储方式和线性表类似,也有两种,即顺序栈和链式栈。29.对长度为 n的线性表排序,在最坏情况下,比较次数不是 n(n-1)/2的排序方法是_。(分数:2.00)A.快速排序B.冒泡排序C.直接插入排序D.堆排序 解析:解析 冒泡排序是一种最简单的交换类排序它通过相邻元素的交换逐步将线性表变成有序。对于长度为 n的线性表,在最坏的情况下,所有的元素正好为逆序,冒泡排序需要经过 n/2遍的从前往后的扫描和 n/2遍的从后往前的扫描,需要比较的次数为(n-1)+(n-2)+2+1=n(n-1)/2。快速排序也是一

    44、种互换类的排序方法,但比冒泡法的速度快,快速排序法的关键是对线性表的分割,以及对其分割出的子表再进行分割。直接插入排序是将无序列表中的各元素一次插入到已经有序的线性表中,这种排序方法的效率与冒泡排序法相同,最坏的情况下,所有元素正好为逆序,需要比较的次数为 1+2+(n-1)+(n-2)=n(n-1)/2。堆排序属于选择类排序方法,它首先将一个无序序列建成堆,然后将堆顶元素与堆中最后一个元素交换然后将左右子树调整为堆,继续交换元素,直至子序列为空。在最坏的情况下,堆排序需要比较的次数为()(nlog 2n)。30.以下错误的定义语句是_。(分数:2.00)A.int x3=0,1,1,2,3;

    45、B.int x43=1,2,3,1,2,3),1,2,3,1,2,3;C.int x4=1,2,3,1,2,3,1,2,3,1,2,3; D.int x3=1,2,3,4;解析:解析 若在定义二维数组的同时对数组进行初始化,可以不指定一维长度但二维长度不能省略,因此选项 C是错误的。如果数据不足,系统将自动给后面的元素自动补初值 0。31.若变量已正确定义,有以下程序段:int a=3,b=5,c=7;if(ab) a=b;c=a;if(c!=(分数:2.00)A.c=b;pri解析:解析 本题考查 if条件语句。a=3,b=5,因此 ab 条件不成立,c=a=3。此时 c!=a条件不成立,不

    46、执行 c=b;语句,c 的值仍然为 5。结果 a=3,b=5,c=3。32.有以下程序:main()int m,n,P;scanf(“m=%dn=%dp=%d“,m,n,p);printf(“%d%d%d/n“,m,n,p);若想从键盘上输入数据,使变量 m中的值为 123,n 中的值为 456,p 中的值为 789,则王确的输入是_。(分数:2.00)A.m=123n=456p=789 B.m=123 n=456 p=789C.m=123,n=456,P=789D.123 456 789解析:解析 本题的考点是关于 C语言的输入语句 scanf的通配符。C 语言规定:scanf 中的双引号中的输入格式(就是俗称的通配符)决定了输入的格式。要输入 123给 m,456给 n,789给 p,由 scanf的输入格式:


    注意事项

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




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

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

    收起
    展开