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

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

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

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

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

    1、二级 C语言笔试 53及答案解析(总分:82.00,做题时间:90 分钟)一、B选择题/B(总题数:50,分数:50.00)1.程序中对 fun函数有如下说明 void*fun(); 此说明的含义是(分数:1.00)A.fun函数无返回值B.fun函数的返回值可以是任意的数据类型C.fun函数的返回值是无值型的指针类型D.指针 fun指向一个函数、该函数无返回值2.以下能正确定义二维数组的是(分数:1.00)A.int a3;B.int a3=2*3;C.int a3=;D.int a23=1,2,3,4;3.下面不属于软件设计原则的是(分数:1.00)A.抽象B.模块化C.自底向上D.信息隐

    2、蔽4.结构化程序设计的一种基本方法是(分数:1.00)A.筛选法B.递归法C.归纳法D.逐步求精法5.以下定义语句中正确的是(分数:1.00)A.char a=Ab=B;B.float a=b=10.0;C.int a=10,*b= if(ij) t=ai;ai=aj;aj=t; i+; j-; fun(a,i,j); main() int x=2,6,1,8,i; fun(x,0,3); for(i=0;i4;i+) printf(“%2d“,xi); printf(“/n“); 程序运行后的输出结果是(分数:1.00)A.1 2 6 8B.8 6 2 1C.8 1 6 2D.8 6 1 2

    3、11.有以下程序 main() int i=0,s=0; for(;) if(i=3i=5) continue; if(i=6) break; i+; s+=i; ; printf(“%d/n“,s); 程序运行后的输出结果是(分数:1.00)A.10B.13C.24D.程序进入死循环12.函数重载是指(分数:1.00)A.两个或两个以上的函数取相同的函数名,但形参的个数或类型不同B.两个以上的函数取相同的名字和具有相同的参数个数,但形参的类型可以不同C.两个以上的函数名字不同,但形参的个数或类型相同D.两个以上的函数取相同的函数名,并且函数的返回类型相同13.用 C语言编写的代码程序(分数:

    4、1.00)A.可立即执行B.是一个源程序C.经过编译即可执行D.经过编译解释才能执行14.有以下程序 main() int i; for(i=0;i3;i+) switch(i) case0:printf(“%d“,i); case2:printf(“%d“,i); default:printf(“%d“,i); 程序运行后的输出结果是(分数:1.00)A.022111B.021021C.000122D.01215.有以下程序 main() int x=1,3,5,7,2,4,6,0,i,j,k; for(i=0;i3;i+) for(j=2;ji;j-) if(xj+1xj) k=xj;xj

    5、=xj+1;xj+1=k; for(i=0;i3;i+) for(j=4;j7-i;j+) if(xjxj+1) k=xj;xj;xj+1;xj+1=k; for(i=0;i8;i+)printf(“%d“,xi); printf(“/n“); 程序运行后的输出结果是(分数:1.00)A.75310246B.01234567C.76310462D.1357024616.设有下列二叉树: (分数:1.00)A.ABCDEFB.DABECFC.BDAECFD.DBEFCA17.有以下程序 main() int a=666,b=888; Printf(“%d/n“,a,b) ; 程序运行后的输出结果

    6、是(分数:1.00)A.错误信息B.666C.888D.666,88818.有以下程序 main() int a=7,b=8,*p,*q,*r; p=i+)d+=si; printf(“%d/n“,d) ; 程序运行后的输出结果是(分数:1.00)A.9B.11C.19D.2120.若有以下说明和语句 int c4)5,(*p)5; p=c; 能够正确引用 c数组元素的是(分数:1.00)A.p+1B.*(p+3)C.*(P+1)+3D.*(p0+2)21.下列条件语句中,功能与其他语句不同的是 A) if((分数:1.00)A.printf(“%d/n“,; else printf(“%d/

    7、n“,;B.if(a=0) printf(“%d/n“,; else printf(“%d/n“,;C.if(a!=0) printf(“%d/n“,; else printf(“%d/n“,;D.if(a=0) printf(“%d/n“,; else printf(“%d/n“,;22.若 x和 y代表整型数,以下表达式中不能正确表示数学关系|x-y|10 的是(分数:1.00)A.abs(x-10B.x-y-10; (48) CreatList(char*s), struct node *h,*p,*q; h=(struct node*)malloc(sizeof(struct node

    8、); p=q=h; while(*s!=“/0“) p=(struct node*)malloc(sizeof(struct node);p-data= (49) ; q-next=p; q= (50) ; s+; p-next=“/0“; return h; main() char str=“link list“; struct node*head; head=CreatList(str); (分数:1.00)A.char*B.struct nodeC.struct node*D.char32.有如下程序 #includestdioh main() FILE *fpl; fpl=fopen(

    9、“f1txt“,“w“); fprintf(fp1,“abc“); fclose(fp1); 若文本文件 f1txt 中原有内容为:good,则运行以上程序后文件 f1txt 中的内容为(分数:1.00)A.goodabcB.abcdC.abcD.abcgood33.有以下程序 #includestdioh main() int a=1,2,3,4,5,6,7,8,9,10,11,12,*p=a+5,*q=NULL; *q= *(p+5); printf(“%d %d/n“,*p,*q); 程序运行后的输出结果是(分数:1.00)A.运行后报错B.6 6C.6 11D.5 1034.已有定义:

    10、int i,a10,*p;,则合法的赋值语句是(分数:1.00)A.p=100;B.p=a5;C.p=a2+2;D.p=a+2;35.s1和 s2已正确定义并分别指向两个字符串,若要求:当 s1所指串大于 s2所指串时,执行语句 S;则以下选项中正确的是(分数:1.00)A.if(s1s2)S;B.if(strcmp(s1,s2)S;C.if(strcmp(s2,s1)0)S;D.if(strcmp(s1,82)0)S;36.下列关于算法的时间复杂度陈述正确的是(分数:1.00)A.算法的时间复杂度是指执行算法程序所需要的时间B.算法的时间复杂度是指算法程序的长度C.算法的时间复杂度是指算法执

    11、行过程中所需要的基本运算次数D.算法的时间复杂度是指算法程序中的指令条数A.p-nextB.pC.sD.s-next38.设有以下定义和语句 int a32=1,2,3,4,5,6,*p3; p0=a1; 则*(p0+1)所代表的数组元素是(分数:1.00)A.a01B.a10C.a11D.a1239.支持数据库各种操作的软件系统叫做(分数:1.00)A.数据库管理系统B.文件系统C.数据库系统D.操作系统40.若变量已正确定义,要求程序段完成求 5!的计算,不能完成此操作的程序段是(分数:1.00)A.for(i=1,p=1;i5;i+) p*=i;B.for(i=1;i5;i+) p=1;

    12、 p*=i;C.i=1;p=1;while(i5)p*=i; i+;D.i=1;p=1;dop*=i; i+; while(i5);41.没有定义语句 int x6=2,4,6,8,5,7,*p=x,i; 要求依次输出 x数组 6个元素中的值,不能完成此操作的语句是(分数:1.00)A.for(i=0;i6;i+) printf(“%2d“,*(p+);B.for(i=0;i6;i+) printf(“%2d“,*(p+;C.for(i=0;i6;i+) printf(“%2d“,*p+);D.for(i=0;i6;i+) printf(“%2d“,(*+);42.有以下说明和定义语句 str

    13、uct student int age;char num8; struct student stu3=20,“200401“,21,“200402“,19,“200403“; struct student *p=stu; 以下选项中引用结构体变量成员的表达式错误的是(分数:1.00)A.(p+)-numB.p-numC.(*numD.stu3age43.有以下程序 main() char a,b,c,d; seanf(“%c,%c,%d,%d“, printf(“%c,%c,%c,%c/n“,a,b,c,d) ; 若运行时从键盘上输入:6,5,65,66回车。则输出结果是(分数:1.00)A.

    14、6,5,A,BB.6,5,65,66C.6,5,6,5D.6,5,6,644.有以下程序 main() unsigned int a; int b=-1; a=b; printf(“%u“,a) ; 程序运行后的输出结果是(分数:1.00)A.-1B.65535C.32767D.-3276845.结构化程序由三种基本结构组成,三种基本结构组成的算法(分数:1.00)A.可以完成任何复杂的任务B.只能完成部分复杂的任务C.只能完成符合结构化的任务D.只能完成一些简单的任务46.在关系数据模型中,通常可以把()称为属性,其值称为属性值。(分数:1.00)A.记录B.基本表C.模式D.字段47.下列

    15、关于栈的叙述中,正确的是(分数:1.00)A.在栈中只能插入数据B.在栈中只能删除数据C.栈是先进先出的线性表D.栈是先进后出的线性表48.有以下程序 main() char s=“ABCD“,*p; for(p=s+1;ps+4;p+)printf(“%s/n“,p); 程序运行后的输出结果是(分数:1.00)A.ABCD BCD CD DB.A B C DC.B C DD.BCD CD DA.*sB.sC.*s+D.(*+50.有以下程序 main() int m=0256,n=256; printf(“%o%o/n“,m,n); 程序运行后的输出结果是(分数:1.00)A.0256 04

    16、00B.0256 256C.256 400D.400 400二、B填空题/B(总题数:16,分数:32.00)51.算法的执行过程中,所需要的存储空间称为算法的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)填空项

    17、1:_55.关系模型的完整性规则是对关系的某种约束条件,包括实体完整性、U 【5】 /U和自定义完整性。(分数:2.00)填空项 1:_56.以下程序段的输出结果是U 【6】 /U。 int i=9; printf(“%o/n“,i);(分数:2.00)填空项 1:_57.以下程序运行后的输出结果是U 【7】 /U。 main() int a,b,c; a=25; b=025; c=0x25; printf(“%d%d%d/n“,a,b,c) ; (分数:2.00)填空项 1:_58.以下程序运行后的输出结果是U 【8】 /U。 main() int p7=11,13,14,15,16,17,

    18、18; int i=0,j=0; while(i7 int k; p1=a; p2=b; for(k=0;k7;k+) if(*(p1+k)=*(p2+k) printf(“%c“,*(p1+k); (分数:2.00)填空项 1:_62.以下程序运行后的输出结果是U 【12】 /U。 main() char a=“123456789“,*p; int i=0; p=a; while(*p) if(i%2=0) *p=*; p+;i+; puts(A) ; (分数:2.00)填空项 1:_63.以下程序中,for 循环体执行的次数是U 【13】 /U。 #define N 2 #define M

    19、 N+1 #define K M+1*M/2 main() int i; for(i=1;iK;i+) (分数:2.00)填空项 1:_64.以下程序通过函数 SunFun求 (分数:2.00)填空项 1:_65.以下程序从终端读入数据到数组中,统计其中正数的个数,并计算它们之和。请填空。 main() int i,a20,sum,count; sum=count=0; for(i=0;i20;i+) scanf(“%d“,U 【16】 /U); for(i=0;i20;i+) if(ai0) count+; sum+=U 【17】 /U; printf(“sum=%d,count=%d/n“

    20、,sum,count); (分数:2.00)填空项 1:_66.以下程序中,函数 SumColumMin的功能是:求出 M行 N列二维数组每列元素中的最小值,并计算它们的和值。和值通过形参传回主函数输出。请填空。 #define M 2 #define N 4 void SumColumMin(int aMN,int *sum) int i,j,k,s=0; for(i=0;iN;i+) k=0; for(j=1;jM;j+) if(akiaji)k=j; s+=U 【18】 /U; U 【19】 /U=s; main() int xMN=3,2,5,1,4,1,8,3,s; SumColum

    21、Min(U 【20】 /U); printf(“%d/n“,s); (分数:2.00)填空项 1:_二级 C语言笔试 53答案解析(总分:82.00,做题时间:90 分钟)一、B选择题/B(总题数:50,分数:50.00)1.程序中对 fun函数有如下说明 void*fun(); 此说明的含义是(分数:1.00)A.fun函数无返回值B.fun函数的返回值可以是任意的数据类型C.fun函数的返回值是无值型的指针类型 D.指针 fun指向一个函数、该函数无返回值解析:解析指针函数是指其返回值的类型为地址即指针类型。本题中定义了一个指针类型的函数。2.以下能正确定义二维数组的是(分数:1.00)A

    22、.int a3;B.int a3=2*3; C.int a3=;D.int a23=1,2,3,4;解析:解析选项 A中省略了第一维的长度,在 C语言中是不允许的;选项 C也是省略第一维的长度;选项 D中定义了一个 2行 3列的数组,而在赋值的时候却赋了一个 3 行的值给它,显然不正确。3.下面不属于软件设计原则的是(分数:1.00)A.抽象B.模块化C.自底向上 D.信息隐蔽解析:解析软件设计的原则包括:抽象、模块化、信息隐蔽和模块独立性。自底向上不是软件设计原则。4.结构化程序设计的一种基本方法是(分数:1.00)A.筛选法B.递归法C.归纳法D.逐步求精法 解析:解析在结构化程序设计中通

    23、常采取自上而下、逐步求精的方法,其总的思想是先全局后局部、先整体后细节、先抽象后具体。而筛选法、递归法和归纳法指的都是程序的某种具体算法。5.以下定义语句中正确的是(分数:1.00)A.char a=Ab=B;B.float a=b=10.0;C.int a=10,*b= if(ij) t=ai;ai=aj;aj=t; i+; j-; fun(a,i,j); main() int x=2,6,1,8,i; fun(x,0,3); for(i=0;i4;i+) printf(“%2d“,xi); printf(“/n“); 程序运行后的输出结果是(分数:1.00)A.1 2 6 8B.8 6 2

    24、 1C.8 1 6 2 D.8 6 1 2解析:解析函数 fun()中用了一个 if语句,当数组下标 i小于数组下标 j时,交换数组元素 ai和aj的值,并使 i值加 1,j 值减 1。其功能就是把数组 a中从下标 i到 j的元素首尾互换。主函数中定义一个数组,在定义该数组的时候缺省了定义长度,定义的同时将其初始化赋值,所以该数组的长度为初始化该数组时的元素的个数即 4,接着调用 fun(a,0,3),其中将 a数组的第一个元素的下标 0和最后一个元素的下标 3传给了函数 fun(),故执行完该函数后,数组 a中的元素首尾互换,因此最后依次输出的数组 a中值为 8,1,6 和 2。11.有以下

    25、程序 main() int i=0,s=0; for(;) if(i=3i=5) continue; if(i=6) break; i+; s+=i; ; printf(“%d/n“,s); 程序运行后的输出结果是(分数:1.00)A.10B.13C.24D.程序进入死循环 解析:解析程序中 for循环中省略了判断退出循环的表达式,for 循环将由里面的 break语句控制是否结束循环,第一次循环,第一条 if语句后面括号里的表达式的值为假,所以该 if语句不被执行,执行下面的第二条语句,此时该 if语句表达式的值为假,所以该 if语句也不执行,执行下面的语句,i+、s+=i,执行完毕后 i的

    26、值为 1,s 的值为 1,如此循环,直到第三次之后 i,s 的值都为 3,继续第四次循环,显然这时满足第一条 if语句的,执行后面的 continue该次循环结束从头开始下次循环,而 i的值为 3一直没有改变,所以第一条语句始终要执行,因此 for循环将一直循环下去。12.函数重载是指(分数:1.00)A.两个或两个以上的函数取相同的函数名,但形参的个数或类型不同 B.两个以上的函数取相同的名字和具有相同的参数个数,但形参的类型可以不同C.两个以上的函数名字不同,但形参的个数或类型相同D.两个以上的函数取相同的函数名,并且函数的返回类型相同解析:解析函数重载指的是两个或两个以上的函数具有相同的

    27、函数名,但形参的个数或类型不同。程序十通过判断主调函数传过来的参数的个数和类型,来决定选择调用哪个具体的函数。13.用 C语言编写的代码程序(分数:1.00)A.可立即执行B.是一个源程序 C.经过编译即可执行D.经过编译解释才能执行解析:解析C 语言是一种高级语言,C 语言源程序经过 C语言编译程序编译之后,生成一个后缀为OBJ的二进制文件(称为目标文件),最后还要由称为“连接程序”(Link)的软件,把此OBJ 文件与 c语言提供的各种库函数连接在一起,生成一个后缀 EXE 的可执行文件。显然 C语言不能立即执行。14.有以下程序 main() int i; for(i=0;i3;i+)

    28、switch(i) case0:printf(“%d“,i); case2:printf(“%d“,i); default:printf(“%d“,i); 程序运行后的输出结果是(分数:1.00)A.022111B.021021C.000122 D.012解析:解析程序中 for循环了三次,第一次 i=0,执行 switch语句中 case0:分支,直到遇到 default语句,退出 switch,这里共执行了三个输出语句分别输出 0,0,0,第二次循环 i=1,switch 语句中没有匹配的分支,故只执行 default语句输出 1,退出 switch语句;第三次循环 i=2,从 switc

    29、h语句中的case2:开始执行,共执行了两个输出语句输出 2、2。最后输出的结果为 000122。15.有以下程序 main() int x=1,3,5,7,2,4,6,0,i,j,k; for(i=0;i3;i+) for(j=2;ji;j-) if(xj+1xj) k=xj;xj=xj+1;xj+1=k; for(i=0;i3;i+) for(j=4;j7-i;j+) if(xjxj+1) k=xj;xj;xj+1;xj+1=k; for(i=0;i8;i+)printf(“%d“,xi); printf(“/n“); 程序运行后的输出结果是(分数:1.00)A.75310246 B.01

    30、234567C.76310462D.13570246解析:解析主函数中定义了一个整型数组 x,并初始化。接着执行了一个二重 for 循环,在该二重循环的作用是将数组的前 4个元素按从大到小排序,接着用了一个二重循环(也是冒泡算法)将数组的后 4个元素按从小到大的顺序排序,故最后依次输出数组各元素的值为 75310246。16.设有下列二叉树: (分数:1.00)A.ABCDEFB.DABECFC.BDAECF D.DBEFCA解析:解析二叉树的遍历分为先序、中序、后序三种不同方式。本题要求中序遍历,遍历顺序应该为:中序遍历左子树-访问根结点-中序遍历右子树。按照定义,中序遍历序列是 BDAEC

    31、F。17.有以下程序 main() int a=666,b=888; Printf(“%d/n“,a,b) ; 程序运行后的输出结果是(分数:1.00)A.错误信息B.666 C.888D.666,888解析:解析程序中的 printf()函数的输出格式部分只说明了一个%d,而输出成员列表却有两个成员 a和 b,在这里将只输出第一个成员 a值为 666。18.有以下程序 main() int a=7,b=8,*p,*q,*r; p=i+)d+=si; printf(“%d/n“,d) ; 程序运行后的输出结果是(分数:1.00)A.9 B.11C.19D.21解析:解析函数 f()的作用是形参

    32、 a为偶数的时候返回 0,主函数中首先定义了一个长度为 8的一维数组,然后给它赋初值使得 s0=1、s1=3、s2=5、s3=2、 s4=4、s5=6。其他没有赋值的数组元素将自动赋值为 0。for 循环中,当 si不为偶数的时,将 si相加,即当 i=3时,si=2 为偶数,退出循环,此时 d的值为 d=s0+ s1+s2=1+3+5=9,因此最后输出的 d的值为 9。20.若有以下说明和语句 int c4)5,(*p)5; p=c; 能够正确引用 c数组元素的是(分数:1.00)A.p+1B.*(p+3)C.*(P+1)+3D.*(p0+2) 解析:解析本题中定义了一个二维数组 c和一个指

    33、针数组 p并初始化让它指向 c,显然此时 p中的各元素为地址,选项 A中 p+1,此时其中的 1代表的长度是整个二维数组 c的长度,故 p+1将让 p指向 c数组后面的元素,故不能引用 c数组中的成员,选项 D中 p0指的是指针数组中的第一个元素的地址即 c的首地址,此时的 1的长度代表的是数组 C中一行的长度,故 p0+2代表的是第三行的首地址,而*(po+2)将代表第三行的第一个元素的地址。21.下列条件语句中,功能与其他语句不同的是 A) if((分数:1.00)A.printf(“%d/n“,; else printf(“%d/n“,;B.if(a=0) printf(“%d/n“,;

    34、 else printf(“%d/n“,;C.if(a!=0) printf(“%d/n“,; else printf(“%d/n“,;D.if(a=0) printf(“%d/n“,; else printf(“%d/n“,; 解析:解析选项 A、选项 B和选项 C都是在 s的值为 0的时候输出 y,a 不为 0的时候输出 x,而选项 D是在 a为 0的时候输出 x,a 不为 0的时候输出 y。22.若 x和 y代表整型数,以下表达式中不能正确表示数学关系|x-y|10 的是(分数:1.00)A.abs(x-10B.x-y-10; (48) CreatList(char*s), struct

    35、 node *h,*p,*q; h=(struct node*)malloc(sizeof(struct node); p=q=h; while(*s!=“/0“) p=(struct node*)malloc(sizeof(struct node);p-data= (49) ; q-next=p; q= (50) ; s+; p-next=“/0“; return h; main() char str=“link list“; struct node*head; head=CreatList(str); (分数:1.00)A.char*B.struct nodeC.struct node*

    36、D.char解析:32.有如下程序 #includestdioh main() FILE *fpl; fpl=fopen(“f1txt“,“w“); fprintf(fp1,“abc“); fclose(fp1); 若文本文件 f1txt 中原有内容为:good,则运行以上程序后文件 f1txt 中的内容为(分数:1.00)A.goodabcB.abcdC.abc D.abcgood解析:解析主函数中定义了一个文件指针 fp1,然后通过 fopen()函数,以写的方式打开文件“fltxt”,并让指针 fp1指向它,接着调用 fpfintf()函数将“abc”写到文件 fp1所指的文件里,由于开

    37、始 fp1指向文件的“fltxt”的开始位置,因此“abc”将把文件“fl txt”里原来的内容“good”覆盖掉,故文件“fltxt”里最后的内容为“abc”。33.有以下程序 #includestdioh main() int a=1,2,3,4,5,6,7,8,9,10,11,12,*p=a+5,*q=NULL; *q= *(p+5); printf(“%d %d/n“,*p,*q); 程序运行后的输出结果是(分数:1.00)A.运行后报错 B.6 6C.6 11D.5 10解析:解析本题中首先定义了一个一维数组。并初始化,由于定义该数组的时候省略了长度,因此该数组的长度为初始化时候赋初

    38、值的个数即为 12。数组名 a代表数组的首地址,所以*p=a+5 语句使得 p指向数组的第 6个元素,而在程序中定义了一个指针 q并让它指向空,实际上程序并没有在内存中为指针 q开辟存储空间,这样给 q赋值不允许的,故该程序运行后报错。34.已有定义:int i,a10,*p;,则合法的赋值语句是(分数:1.00)A.p=100;B.p=a5;C.p=a2+2;D.p=a+2; 解析:解析本题中定义了一个整型数组 a和一个整型指针变量 p。选项 A中将一个整型数赋值给一个指针变量,C 语言规定,只能将地址赋给指针指针变量;选项 B中 a 5为一数组元素,同样不是一个地址;选项 C中 a2为一数

    39、组元素,同样是一个整型数据,不是个地址;选项 D中数组名 a代表数组首地址加2,代表第三个元素的地址。35.s1和 s2已正确定义并分别指向两个字符串,若要求:当 s1所指串大于 s2所指串时,执行语句 S;则以下选项中正确的是(分数:1.00)A.if(s1s2)S;B.if(strcmp(s1,s2)S;C.if(strcmp(s2,s1)0)S;D.if(strcmp(s1,82)0)S; 解析:解析在 C语言中字符串的比较用 stremp()函数,该函数有两个参数,分别为被比较的两个字符串。如果第一个字符串大于第二个字符串返回值大于 0,若小于返回值小于 0,相等返回值为 0。字符串比

    40、较大小的标准是从第一个字符开始依次向右比较,遇到某一个字符大,该字符所在的字符串就是较大的字符中,女 B果遇到某一个字符小,该字符所在的字符串就是较小的字符串。本题中要求当 sl所指字符串大于 s2所指串时,执行语句 s,因此应该为 stremp(s1,s2)0 或者 strcmp(s2,s1)0。36.下列关于算法的时间复杂度陈述正确的是(分数:1.00)A.算法的时间复杂度是指执行算法程序所需要的时间B.算法的时间复杂度是指算法程序的长度C.算法的时间复杂度是指算法执行过程中所需要的基本运算次数 D.算法的时间复杂度是指算法程序中的指令条数解析:解析算法的时间复杂度是指执行算法所需要的计算

    41、工作量,也就是算法在执行过程中所执行的基本运算的次数,而不是指程序运行需要的时间或是程序的长度。A.p-nextB.p C.sD.s-next解析:解析在主函数中,定义了一个结构体型指针变量 head,然后将函数 CreatList()的返回值赋给指针变量 head,从这里可知函数 CreatList()的返回值为 struetnode*类型,所以第 48处的空格处应该填struet node*;在函数 CreatList()中首先定义三个结构体型指针变量 h,p 和 q,然后调用 malloc()函数分配了一个结点空间,并让指针 h指向它,开始指针 p、q 和 h都指向它,然后调用一个 wh

    42、ile循环语句,当到达字符串数组 s的末尾结束循环,在每次循环中,分配一个结点空间,并让 p指向它,然后让该结点的 data域的值等于字符串指针 s所指的值,故 49处的空格处应填*s;接下来让指针 q所指结点的指针域指向结点 p,然后让指针 q指向该指针的所指结点的下一个结点即 p。38.设有以下定义和语句 int a32=1,2,3,4,5,6,*p3; p0=a1; 则*(p0+1)所代表的数组元素是(分数:1.00)A.a01B.a10C.a11 D.a12解析:解析本题中首先定义了一个 3行 2列的数组 a,一个长度为 3的指针数组 p,接着把地址 a1赋给 p0此时 p0为 a10

    43、的地址,p0+1 为 a11的地址,故*(P0+1)代表的元素为 a11。39.支持数据库各种操作的软件系统叫做(分数:1.00)A.数据库管理系统 B.文件系统C.数据库系统D.操作系统解析:解析数据库管理系统是一种系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务等操作。40.若变量已正确定义,要求程序段完成求 5!的计算,不能完成此操作的程序段是(分数:1.00)A.for(i=1,p=1;i5;i+) p*=i;B.for(i=1;i5;i+) p=1; p*=i; C.i=1;p=1;while(i5)p*=i; i+;D.i=1;p=1;dop*=i; i+

    44、; while(i5);解析:解析选项 B中 for循环了 5次,而每次循环的时候,都将 p的值重新赋值为 1后,再乘以当前数字 i,最后的结果为 5,显然不是 5!的值,同样的分析可知选项 A、选项 C和选项 D计算的都是 5!。41.没有定义语句 int x6=2,4,6,8,5,7,*p=x,i; 要求依次输出 x数组 6个元素中的值,不能完成此操作的语句是(分数:1.00)A.for(i=0;i6;i+) printf(“%2d“,*(p+);B.for(i=0;i6;i+) printf(“%2d“,*(p+;C.for(i=0;i6;i+) printf(“%2d“,*p+);D.

    45、for(i=0;i6;i+) printf(“%2d“,(*+); 解析:解析本题首先定义了一个一维数组并初始化,接着定义了一个指针变量 p 指向数组 x。因此可以通过指针 p的下移,即每次加 1引用数组 x中的元素,来指向数组中的每个元素,这样循环 6次即可引用数组的每个元素。选项 A、B 和选项 C满足要求,而在选项 D中表达式为(*p)+,该表达式是先取*p 的值然后将其值加 1,而没有将指针下移一位。42.有以下说明和定义语句 struct student int age;char num8; struct student stu3=20,“200401“,21,“200402“,19,“200403“; struct student *p=stu; 以下选项中引用结构体变量成员的表达式错误的是(分数:1.00)A.(p+)-numB.p-numC.(*numD.stu3age 解析:解析结构体变量也有地址,因此可以把它的地址赋值给一个指针变量,然后通过该指针变量来引用结构体的成员,选项 A和选项 B就是通过指针变量来引用结构体的成员,也可以通过结构体数组元素的成员引用,而在选项 D中 stu3age 不正确,因为


    注意事项

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




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

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

    收起
    展开