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

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

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

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

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

    1、二级 C语言笔试-158 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:70.00)1.表达式 3.6-5/2+1.2+5%2的值是_。(分数:2.00)A.4.3B.4.8C.3.3D.3.82.设有如下程序段:char s20=“Bejing“,*p;p=s;则执行 p=s;语句后,以下叙述正确的是_。(分数:2.00)A.可以用*p 表示 s0B.s数组中元素的个数和 p所指字符串长度相等C.s和 p都是指针变量D.数组 s中的内容和指针变量 p中的内容相等3.有以下程序:#includestring.hmain()char p20=a,b,c,d

    2、,q=“abc“,r=“abcde“;strcpy(p+strlen(q),r);strcat(p,q);printf(“%d%d/n“,sizeof(p),strlen(p);程序运行后的输出结果是_。(分数:2.00)_4.有以下程序段:char ch; int k;ch=a; k=12;printf(“%c,%d,“,ch,ch,k);printf(“k=%d/n“,k);已知字符 a的 ASCII十进制代码为 97,则执行上述程序段后输出的结果是_。(分数:2.00)A.因变量类型与格式描述符的类型不匹配输出不定值B.输出项与格式描述符个数不符输出为零值或不定值C.a,97,12k=1

    3、2D.a,97,k=125.有以下程序:#includestdio.hvoid fun(char*t,char*s)while(*t!=0)t+;while(*t+=*s+)!=0);main()char ss10=“acc“,aa10=“bbxxyy“;fun(ss,a(分数:2.00)A.;printf(“%s,%s/n“,ss,aa);,若要从终端给 s输入 5个字符,错误的输入语句是_。(分数:2.00)A.gets(s0);B.scanf(“%s“,s+1);C.gets(s);D.scanf(“%s“,s1);11.有以下程序:main()int i,j,x=0;for(i=0;i

    4、2;i+)x+;for(j=0;j=3;j+)if(j%2)continue;x+;x+;printf(“x=%d/n“,x);程序执行后的输出结果是_。(分数:1.00)A.x=4B.x=8C.x=6D.x=1212.有以下程序:#includestdio.hvoid fun(int*s,int n1,int n2)int i,j,t;i=n1;j=n2;while(ij)t=si;si=sj;sj=t;i+;j-;)main()int a10=1,2,3,4,5,6,7,8,9,0,k;fun(a,0,3);fun(a,4,9);fun(a,0,9);for(k=0;k10;k+)prin

    5、tf(“%d“,ak);printf(“/n“);程序运行的结果是_。(分数:1.00)A.0987654321B.4321098765C.5678901234D.098765123413.若有定义:int x=0,*p=x;,则语句 printf(“%d/n“,*p);的输出结果是_。(分数:1.00)A.随机值B.0C.x的地址D.P的地址14.有以下程序:#includestdio.hint a=1;int fun(int c)static int a=2;c=c+1;return(a+)+c;main()int i,k=0;for(i=0;i2;i+)int a=3;k+=f((分数:

    6、1.00)A.;15.在深度为 7的满二叉树中,叶子结点的个数为_。(分数:1.00)A.32B.31C.64D.6316.下列叙述中正确的是_。(分数:1.00)A.线性链表是线性表的链式存储结构B.栈与队列是非线性结构C.双向链表是非线性结构D.只有根结点的二叉树是线性结构17.设变量已正确定义并赋值,以下正确的表达式是_。(分数:1.00)A.x=y*5=x+zB.int(15.8%5)C.x=y+z+5,+yD.x=25%5.018.有以下程序:#includestdio.hmain()int a=1,b=2,c=3,x;x=(ab)c;printf(“%d/n“,x);程序的运行结果

    7、是_。(分数:1.00)A.0B.1C.2D.319.有以下程序:#includestdio.h#includestring.htypedef structchar name9;char sex;float score2;STU;STU f(STU(分数:1.00)A.STU b=“Zhao“,m,85.0,90.0;i20.有以下程序:#includestdio.hmain()int x=8;for(; x0; x-)if(x%3)printf(“%d,“,x-);continue;)printf(“%d,“,-x);程序的运行结果是_。(分数:1.00)A.7,4,2B.8,7,5,2C.

    8、9,7,6,4D.8,5,4,221.下列数据结构中,能用二分法进行查找的是_。(分数:2.00)A.顺序存储的有序线性表B.线性链表C.二又链表D.有序线性链表22.若有定义语句:int k23,*pk3;,则以下语句中正确的是_。(分数:2.00)A.pk=k;B.pk0=k12;C.pk=k0;D.pk1=k;23.有以下程序: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.2D.024.已知大写字母 A的 A

    9、SCII码是 65,小写字母 a的 ASCII码是 97,以下不能将变量 C中的大写字母转换为对应小写字母的语句是_。(分数:2.00)A.c=(c-A)%26+aB.c=c+32C.c=c-A+aD.c=(A+c)%26-a25.对下列二叉树(分数:2.00)A.B.C.D.26.若在定义语句:ink a,b,c*P=c;之后,接着执行以下选项中的语句,则能正确执行的语句是_。(分数:2.00)A.scanf(“%d“,a,b,c);B.scanf(“%d%d%d“,a,b,c);C.scanf(“%d“,p);D.scanf(“%d“,p);27.设函数 fun的定义形式为:void fu

    10、n(char ch,float x)则以下对函数 fun的调用语句中,正确的是_。(分数:2.00)A.fun(“abc“,3.0);B.t=fun(D,16.5);C.fun(65,2.8);D.fun(32,32);28.若有语句:char*line5;,以下叙述中正确的是_。(分数:2.00)A.定义 line是一个数组,每个数组元素是一个基类型为 char的指针变量B.定义 line是一个指针变量,该变量可以指向一个长度为 5的字符型数组C.定义 line是一个指针数组,语句中的*号称为间址运算符D.定义 line是一个指向字符型函数的指针29.有以下程序段:int k=0,a=1,b

    11、=2,c=3;k=ab?b:a;k=kc?c:k;执行该程序段后,k 的值是_。(分数:2.00)A.3B.2C.1D.030.有以下程序:main()ink k=5,n=0;doswitch(k)casel:case3:n+=1;k-;break;default:n=0;k-;case2:case4:n+=2;k-;break;printf(“%d“,n);while(k0n5);程序运行后的输出结果是_。(分数:2.00)A.235B.0235C.02356D.235631.有以下程序:#includestdio.hmain()FILE*fp;int i,k,n;fp=fopen(“dat

    12、a.dat“,“w+“);for(i=1;i6;i+)fprintf(fp,“%d“,i);if(i%3=0)fprintf(fp,“/n“);rewind(fp);fscanf(fp,“%d%d“,k,n);printf(“%d%d/n“,k,n);fclose(fp);程序运行后的输出结果是_。(分数:2.00)A.0 0B.123 45C.1 4D.1 232.若有定义:char*x=“abcdefghi“;,以下选项中正确运用了 strcpy函数的是_。(分数:2.00)A.char y10;strcpy(y,x4);B.char y10;strcpy(+y,x1);C.char y1

    13、0,*s;strcpy(s=y+5,x);D.char y10,*s;strcpy(s=y+1,x+1);33.在 E-R图中,用来表示实体的图形是_。(分数:2.00)A.矩形B.椭网形C.菱形D.三角形34.有以下程序:typedef structint b,p;A;void f(A c) /*注意:c 是结构变量名*/int j;c.b+=1;c.p+=2;main()int i;A a=1,2;f((分数:2.00)A.;pri35.有以下程序:#define P 3void F(int x)return(P*x*x);main()printf(“%d/n“,F(3+5);程序运行后的

    14、输出结果是_。(分数:2.00)A.192B.29C.25D.编译出错36.设有如下三个关系表:(分数:2.00)A.B.C.D.37.为了使模块尽可能独立,要求_。(分数:2.00)A.模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强B.模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱C.模块的内聚程度要尽量低,且各模块间的耦合程度要尽量弱D.模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强38.若整型变量 a、b、c、d 中的值依次为 1、4、3、2。则条件表达式 ab?a:cd?c:d 的值是_。(分数:2.00)A.1B.2C.3D.439.下列叙述中正确的是_。(分数:2

    15、.00)A.软件测试应该由程序开发者来完成B.程序经调试后一般不需要再测试C.软件维护只包括对程序代码的维护D.以上三种说法都不对40.在嵌套使用 if语句时,C 语言规定 else总是_。(分数:2.00)A.和之前与其具有相同缩进位置的 if配对B.和之前与其最近的 if配对C.和之前与其最近不带 else的 if配对D.和之前的第一个 If配对二、填空题(总题数:15,分数:30.00)41.算法复杂度主要包括时间复杂度和 1 复杂度。(分数:2.00)填空项 1:_42.数据结构分为逻辑结构和存储结构,循环队列属于 1 结构。(分数:2.00)填空项 1:_43. 1的任务是诊断和改正

    16、程序中的错误。(分数:2.00)填空项 1:_44.在结构化分析使用的数据流图(DFD)中,利用 1 对其中的图形元素进行确切解释。(分数:2.00)填空项 1:_45.问题处理方案的正确而完整的描述称为 1。(分数:2.00)填空项 1:_46.设变量已正确定义为整型,则表达式 n=i=2,+i,i+的值为 1。(分数:2.00)填空项 1:_47.以下程序运行后的输出结果是_。main()int x=0210;printf(“%X/n“,x);(分数:2.00)填空项 1:_48.以下程序运行后的输出结果是_。mein()int a=3,b=4,c=5,t=99;if(baac)t=a;a

    17、=c;c=t;if(acbc)t=b;b=a;a=t;printf(“%d%d%d/n“,a,b,c);(分数:2.00)填空项 1:_49.当执行以下程序时,输入 1234567890回车,则其中 while循环体将执行_次。#includestdiohmain()char ch;while(ch=getchar()=0)printf(“#“);(分数:2.00)填空项 1:_50.以下程序的运行结果是_。int k=0;void fun(int m)m+=k;k+=m;printf(“m=%d/nk=%d“,m,k+);main()int i=4;fun(i+);printf(“i: %d

    18、 k=%d/n“,i,k);(分数:2.00)填空项 1:_51.以下程序的输出结果是_。#includestdlibhmain()char*s1,*s2,m;s1=s2=(char*)malloc(sizeof(char);*s1=15;*s2=20;m=*s1+*s2;printf(“%d/n“,m);(分数:2.00)填空项 1:_52.以下程序运行后的输出结果是_。int f(int a,int n)if(n=1)return f(a,n-1)+an-1;else return 0;main()int aa5=1,2,3,4,5),s;s=f(aa,5);printf(“%d/n“,s

    19、);(分数:2.00)填空项 1:_53.当运行以下程序时,输入 abcd,程序的输出结果是:_。insert(char str)int i;i=strlen(str);while(i0)str2*i=stri;str2*i-1=*;i-;printf(“%s/n“,str);main()char str40;scanf(“%s“,str);insert(str);(分数:2.00)填空项 1:_54.以下程序中函数 huiwen的功能是检查一个字符串是否是回文,当字符串是回文时,函数返回字符串:yes!,否则函数返回字符串:no!,并在主函数中输出。所谓回文即正向与反向的拼写都一样,例如:a

    20、dgda,请填空。#includestring.hchar*huiwen(char*str)char*p1,*p2;int i,t=0;p1=str;p2=_;for(i=0;i=strlen(str)/2;i+)if(*p1+!=*p2-)t=1;break;if(t=0)return(“yes!“);else return(“no!“);main()char str50;printf(“Input:“);scanf(“%s“,str);printf(“%s/n“,huiwen(str);(分数:2.00)填空项 1:_55.以下程序运行后的输出结果是_。struct NODEint k;s

    21、truct NODE*link;main()struct NODE m5,*p=m,*q=m+4;int i=0;while(p!=q)p-k=+i;p+;q-k=i+;q-;q-k=i;for(i=0;i5;i+)printf(“%dv,mi.k);printf(“/n“);(分数:2.00)填空项 1:_二级 C语言笔试-158 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:70.00)1.表达式 3.6-5/2+1.2+5%2的值是_。(分数:2.00)A.4.3B.4.8C.3.3D.3.8 解析:解析 5/2 是整数相除,结果为 2。5%2 取模

    22、得到 1,因此,结果为 3.8。2.设有如下程序段:char s20=“Bejing“,*p;p=s;则执行 p=s;语句后,以下叙述正确的是_。(分数:2.00)A.可以用*p 表示 s0 B.s数组中元素的个数和 p所指字符串长度相等C.s和 p都是指针变量D.数组 s中的内容和指针变量 p中的内容相等解析:解析 在变量的定义中可以看到,p 是指向字符的指针执行 p=s;后,指针 p的值为数组 a的首地址,*p=s0,因此选项 A是正确的;P 所指向的字符串为“Beijing”,长度为 7,而数组 a中元素的个数为 20,因此选项 B是错误的;s 为数组名,也可以看作是数组 s的首地址,不

    23、是指针变量,因此选项C是错误的;数组 s中的内容为字符串,指针变量 p中的内容为数组 s的首地址,因此选项 D是错误的。3.有以下程序:#includestring.hmain()char p20=a,b,c,d,q=“abc“,r=“abcde“;strcpy(p+strlen(q),r);strcat(p,q);printf(“%d%d/n“,sizeof(p),strlen(p);程序运行后的输出结果是_。(分数:2.00)_解析:解析 题目中 p+strlen(q)的作用是在数组元素 p0地址的基础上向后移动三位,然后再将 r所指字符串内容复制到 p所指的存储空间中,字符 d被覆盖,p

    24、20=a,b,c,a,b,c,d,e。然后通过“strcat(p,q);”将 q所指的字符串内容连接到 p所指的字符串后面,p20=a,b,c,a,b,c,d,e,a,b,c,4.有以下程序段:char ch; int k;ch=a; k=12;printf(“%c,%d,“,ch,ch,k);printf(“k=%d/n“,k);已知字符 a的 ASCII十进制代码为 97,则执行上述程序段后输出的结果是_。(分数:2.00)A.因变量类型与格式描述符的类型不匹配输出不定值B.输出项与格式描述符个数不符输出为零值或不定值C.a,97,12k=12D.a,97,k=12 解析:解析 ch=a,

    25、在第一个输出语句中,%c 表示以字符格式输出 ch的值,为 a;%d 表示以十进制代码的形式输出 ch的值,为 97;k 没有对应的输出格式,不输出。在第二个语句中,首先输出“k=”,然后以十进制代码输出 k的值,为 12。5.有以下程序:#includestdio.hvoid fun(char*t,char*s)while(*t!=0)t+;while(*t+=*s+)!=0);main()char ss10=“acc“,aa10=“bbxxyy“;fun(ss,a(分数:2.00)A.;printf(“%s,%s/n“,ss,aa);”,但此定义的赋初值个数为 6,多于数组长度,是错误的。

    26、因为给数组赋初值,初值个数只能小于或等于数组长度。二是不指定数组长度,由赋初值的初值个数决定数组的长度。如选项B的“cbar a=0,1,2,3,d,59.下面选项中不属于面向对象程序设计特征的是_。(分数:2.00)A.继承性B.多态性C.类比性 D.封闭性解析:解析 面向对象程序设计的特征有以下几点:分类性、继承性、封装性、多态性、模块性等。10.有定义语句:char s10;,若要从终端给 s输入 5个字符,错误的输入语句是_。(分数:2.00)A.gets(s0);B.scanf(“%s“,s+1);C.gets(s);D.scanf(“%s“,s1); 解析:解析 字符串的输入有两种

    27、方式:使用 scanf()函数和使用 get()函数。采用 scanf()函数输入时,输入项为字符串的地址值,输入字符依次放入以这一地址为起点的存储单元中。选项 B是正确的,输入字符从数组的第 2个位置开始存放;选项 D是错误的,s1是字符,不是地址值。gets()的调用形式为:gets(str_adr),其中 str_adr为存放字符串的首地址。选项 A中,s0为数组的首地址,选项 C中,s也为数组的首地址,因此选项 A和 C都是正确的。11.有以下程序:main()int i,j,x=0;for(i=0;i2;i+)x+;for(j=0;j=3;j+)if(j%2)continue;x+;

    28、x+;printf(“x=%d/n“,x);程序执行后的输出结果是_。(分数:1.00)A.x=4B.x=8 C.x=6D.x=12解析:解析 内层 for循环语句实现 x=x+2,故外层 for循环语句单次循环实现 x=x+4,所以程序执行后的输出结果为 x=8。12.有以下程序:#includestdio.hvoid fun(int*s,int n1,int n2)int i,j,t;i=n1;j=n2;while(ij)t=si;si=sj;sj=t;i+;j-;)main()int a10=1,2,3,4,5,6,7,8,9,0,k;fun(a,0,3);fun(a,4,9);fun(

    29、a,0,9);for(k=0;k10;k+)printf(“%d“,ak);printf(“/n“);程序运行的结果是_。(分数:1.00)A.0987654321B.4321098765C.5678901234 D.0987651234解析:解析 函数 fun的功能是:将数组 s中从 n1至 n2的元素首尾互换,然后将第 2个和倒数第 2个元素互换依次类推,其实也就是将原来的元素倒置。执行 fun(a,0,3);将数组 a中的第 03 个元素互换,结果为 4 3 2 1;执行 fun(a,4,9);将数组 a中的第 49 个元素互换,结果为 09 8 7 6 5。此时 a中的元素依次为 4

    30、3 2 10 9 8 7 6 5,执行 fun(a,0,9);再次将这 10个元素倒置,结果为 5 6 7 8 9 0 1 2 3 4。13.若有定义:int x=0,*p=x;,则语句 printf(“%d/n“,*p);的输出结果是_。(分数:1.00)A.随机值B.0 C.x的地址D.P的地址解析:解析 p 为整型指针,指向整型变量 x,输出项为*p,即 x的值,所以输出结果为 0。14.有以下程序:#includestdio.hint a=1;int fun(int c)static int a=2;c=c+1;return(a+)+c;main()int i,k=0;for(i=0;

    31、i2;i+)int a=3;k+=f((分数:1.00)A.;解析:解析 本题考查的重点是对 static变量以及全局变量的理解。static 变量是函数或文件中的永久变量。本题中 static int a=2语句定义了一个 static局部变量,编译程序为其生成永久存储单元,即调用函数 fun时,其值一直都保存着,而不是使用函数外所赋的值(尽管开头定义了一个同名的全局变量)。在主函数中,for 循环进行两次,第一次循环得 f(3)=3+1+2=6,从而 k+=f(3)=6,第二次循环由于 static局部变量 a变成了 3,从而 f(3)的值为 7,故 k+=f(3)=13,再执行 k+=a

    32、时,此时 a的值为全局变量,其值为 1,故 k的值为 14,选项 A是正确的。15.在深度为 7的满二叉树中,叶子结点的个数为_。(分数:1.00)A.32B.31C.64 D.63解析:解析 深度为 k且有 2k-1个结点的二叉树,称为满二叉树。16.下列叙述中正确的是_。(分数:1.00)A.线性链表是线性表的链式存储结构 B.栈与队列是非线性结构C.双向链表是非线性结构D.只有根结点的二叉树是线性结构解析:解析 线性表是一种线性结构,数据元素在线性表中的位置只取决于它们自己的序号,即数据元素之间的相对位置是线性的;栈、队列、线性链表实际上也是线性表,故也是线性结构。线性链表:线性表的链式

    33、存储结构称为线性链表,是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接来实现的。17.设变量已正确定义并赋值,以下正确的表达式是_。(分数:1.00)A.x=y*5=x+zB.int(15.8%5)C.x=y+z+5,+y D.x=25%5.0解析:解析 赋值运算符的左边必须是一个代表某一存储单元的变量名,而 A选项中的“y*5=x+z”部分是非法赋值。求余运算符的对象只能是整型,故选项 B和选项 D是错误的。选项 C为逗号表达式。18.有以下程序:#includestdio.hmain()int a=1,b=2,c=3,x;x=(ab)c;printf(

    34、“%d/n“,x);程序的运行结果是_。(分数:1.00)A.0B.1C.2D.3 解析:解析 本题考查的重点是位运算的操作。a 的二进制为 01,b 的二进制为 10,因此 ab结果为二进制数 11,再与 c(二进制为 11)进行操作从而得二进制数 11,故选项 D是正确的。19.有以下程序:#includestdio.h#includestring.htypedef structchar name9;char sex;float score2;STU;STU f(STU(分数:1.00)A.STU b=“Zhao“,m,85.0,90.0;i解析:解析 本题考查的重点是对向函数传递结构体的

    35、理解。用结构体做函数的参数时,是按传值规则把全部结构传给函数,因此,函数内对结构内容的修改不影响原结构,即退出函数时,原结构内容不变。本题中,d 中的值应为 b中的值,所以选项 C是正确的。20.有以下程序:#includestdio.hmain()int x=8;for(; x0; x-)if(x%3)printf(“%d,“,x-);continue;)printf(“%d,“,-x);程序的运行结果是_。(分数:1.00)A.7,4,2B.8,7,5,2C.9,7,6,4D.8,5,4,2 解析:解析 本题考查 for循环沿句。x=8,for 循环条件为真,8%3=2,不等于 0,则 i

    36、f条件表达式为真,执行第一个输出讲句,先输出 x的值 8,然后将 x的值减 1,此时 x=7。然后执行 continue语句结束本次循环。执行 x-表达式,得 x=6,for 循环条件为真,6%3=0,则 if条件表达式为假,执行第二个输出语句,先将 x的值减 1得 x=5,然后输出 x的值 5。执行 x-表达式。得 x=4,for 循环条件为真,4%3=1,不等于 0,则 if条件表达式为真,执行第一个输出语句,先输出 x的值 4,然后将 x的值减 1,此时 x=3。然后执行 continue语句结束本次循环。执行 x-表达式,得 x=2,for 循环条件为真,2%3=2,不等于 0,则 i

    37、f条件表达式为真,执行第一个输出语句,先输出 x的值 2,然后将 x的值减 1,此时x=1。执行 x-表达式,得 x=0,for 循环条件为假,循环结束。21.下列数据结构中,能用二分法进行查找的是_。(分数:2.00)A.顺序存储的有序线性表 B.线性链表C.二又链表D.有序线性链表解析:解析 二分法查找只适用于顺序存储的线性表。22.若有定义语句:int k23,*pk3;,则以下语句中正确的是_。(分数:2.00)A.pk=k;B.pk0=k12; C.pk=k0;D.pk1=k;解析:解析 k23为二维数组,*pk3为指针数组,运算符优先级高,因此 pk先与3结合,是数组,然后再与前面

    38、的*结合,因此只有语句 pk0=k12正确。23.有以下程序: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解析:解析 x=7,通过递归调用 fun函数后得到结果。24.已知大写字母 A的 ASCII码是 65,小写字母 a的 ASCII码是 97,以下不能将变量 C中的大写字母转换为对应小写字母的语句是_。(分数:2.00)A.c=(c-A)%26+aB.c=c+32C.c=c-A+aD.c=(A+c)

    39、%26-a 解析:解析 由 97-65=32可知大写字母对应的小写字母之间相差 32,所以将大写字母加上 32就得到小写字母,所以选项 B和 C是正确的。选项 A中(c-A)%26 可以求出变量 c中的字母与字母 A相差几位,那么小写字母 a的 ASCII码向后移动相差的位数就是对应的小写字母,所以选项 A也是正确的。25.对下列二叉树(分数:2.00)A. B.C.D.解析:解析 二叉树的中序遍历(LDR),首先遍历左子树,然后访问根结点,最后遍历右子树。26.若在定义语句:ink a,b,c*P=c;之后,接着执行以下选项中的语句,则能正确执行的语句是_。(分数:2.00)A.scanf(

    40、“%d“,a,b,c);B.scanf(“%d%d%d“,a,b,c);C.scanf(“%d“,p); D.scanf(“%d“,p);解析:解析 本题考查的重点是 scanf函数的用法。选项 A是错误的,地址表中不是地址变量,而且其个数与格式化字符串所说明的输出参数个数不同;选项 B是错误的,地址表中不是地址变量;选项 D是错误的,P 表示地址,不必再在其前加上取地址符。27.设函数 fun的定义形式为:void fun(char ch,float x)则以下对函数 fun的调用语句中,正确的是_。(分数:2.00)A.fun(“abc“,3.0);B.t=fun(D,16.5);C.fu

    41、n(65,2.8);D.fun(32,32); 解析:解析 函数调用时,函数名必须与所调用的函数名完全一致且实参的个数必须与形参的个数一致,类型上也应按位置与形参一一对应匹配。选项 A中 abc是字符串,与形参不匹配;由于 fun函数的返回值类型为 vold,所以选项 B中进行了赋值操作是不正确的;选项 C中的65是不合法的表示形式,单引号中应该是单个字符。所以只有选项 D是合法的函数调用形式。28.若有语句:char*line5;,以下叙述中正确的是_。(分数:2.00)A.定义 line是一个数组,每个数组元素是一个基类型为 char的指针变量 B.定义 line是一个指针变量,该变量可以

    42、指向一个长度为 5的字符型数组C.定义 line是一个指针数组,语句中的*号称为间址运算符D.定义 line是一个指向字符型函数的指针解析:解析 本题考查指针数组的定义,说明符*line5中,遵照运算符的优先级,的优先级高于*号,因此 line先与结合,构成一个数组,在它前面的*号则说明了数组 line是指针类型,它的每个元素都是基类型为 char的指针。所以选项 A叙述正确。29.有以下程序段:int k=0,a=1,b=2,c=3;k=ab?b:a;k=kc?c:k;执行该程序段后,k 的值是_。(分数:2.00)A.3B.2 C.1D.0解析:解析 本题考查条件表达式的概念。第一个条件表

    43、达式“ab?b:a=12? 2:1=2”,并将 2赋给k,第二个条件表达式“kc? c:k=23? 3:2=2”,并将 2冉赋给 k,此时 k的值为 2。30.有以下程序:main()ink k=5,n=0;doswitch(k)casel:case3:n+=1;k-;break;default:n=0;k-;case2:case4:n+=2;k-;break;printf(“%d“,n);while(k0n5);程序运行后的输出结果是_。(分数:2.00)A.235 B.0235C.02356D.2356解析:解析 do-while 语句的特点是先执行循环体,然后再判断循环条件是否成立,当循

    44、环条件的值为0时循环结束。本题中执行 Switch语句,寻找与 5匹配的 case 5分支,没有寻找到则执行 default后的讲句,n=0,k 的值变为 4,继续执行 switch语句,寻找与 4匹配的 case 4分支,找到后开始执行其后的语句“n+=2;k-;”,n 的值为 2,k 的值变为 3,遇到 break语句跳出该 switch语句体。执行 print语句输出 2;此时 n=2,k=3 依旧满足 dowhile循环条件,将用同样的方式再次执行 switch语句,直到 n=5时不再满足 do-while循环条件退出所有的循环。31.有以下程序:#includestdio.hmain

    45、()FILE*fp;int i,k,n;fp=fopen(“data.dat“,“w+“);for(i=1;i6;i+)fprintf(fp,“%d“,i);if(i%3=0)fprintf(fp,“/n“);rewind(fp);fscanf(fp,“%d%d“,k,n);printf(“%d%d/n“,k,n);fclose(fp);程序运行后的输出结果是_。(分数:2.00)A.0 0B.123 45C.1 4D.1 2 解析:解析 语句“fprintf(fp,“%d“,i);”的作用是将变量 i的值直接按“%d”的格式输出到文件fp指向的文件上;“rewind(fp)”的作用是使指针重新返回文件的开头;“fscanf(fp,“%d%d“,k,n);”的作用是将磁盘文件中的数据传送给变量 k和 n。32.若有定义:char*x=“abcdefghi“;,以下选项中正确运用了 strcpy函数的是_。(分数:2.00)A.char y10;strcpy(y,x4);B.char y10;strcpy(+y,x1);


    注意事项

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




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

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

    收起
    展开