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

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

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

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

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

    1、二级 C 语言笔试 58 及答案解析(总分:84.00,做题时间:90 分钟)一、B选择题/B(总题数:50,分数:50.00)1.有以下程序段: int x=3 do printf(“%d“,x-=2); while (!(-x); 其输出结果是( )。(分数:1.00)A.1B.3 0C.1 -2D.死循环2.下述关于数据库系统的叙述中正确的是( )。(分数:1.00)A.数据库系统减少了数据冗余B.数据库系统避免了一切冗余C.数据库系统中数据的一致性是指数据类型一致D.数据库系统比文件系统能管理更多的数据3.在最坏情况下,下列排序方法中时间复杂度最小的是( )。(分数:1.00)A.冒泡

    2、排序B.快速排序C.插入排序D.堆排序4.下列叙述中正确的是( )。(分数:1.00)A.在模块化程序设计中,一个模块应尽量多的包括与其他模块联系的信息B.在自顶向下、逐步细化的设计过程中,首先应设计解决问题的每一个细节C.在模块化程序设计中,一个模块内部的控制结构也要符合结构化原则D.在程序设计过程中,不能同时采用结构化程序设计方法与模块化程序设计方法5.下面不属于软件工程 3 个要素的是( )。(分数:1.00)A.工具B.过程C.方法D.环境6.数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是( )。(分数:1.00)A

    3、.控制流B.加工C.数据存储D.源和潭7.下列叙述中正确的是( )。(分数:1.00)A.实体集之间一对一的联系实际上就是一一对应的关系B.关系模型只能处理实体集之间一对一的联系C.关系模型属于格式化模型D.以上三种说法都不对8.下面程序段的输出结果是( )。 int i=32770; printf(“%d/n“, i);(分数:1.00)A.32769B.32767C.-32766D.输出不确定数9.实型数据在计算机中表示的方法有( )。(分数:1.00)A.双精度型和单精度型B.小数形式和 ASCII 码法C.BCD 码法和指数形式D.小数形式和指数形式10.若有如下程序: sub(int

    4、 a,int b,int c) c=a+b; return(c); main() int x=3,y=4,z=6; sub(x,y,z); printf(%d”,z); 则程序运行后的输出结果是( )。(分数:1.00)A.3B.6C.7D.411.若有如下程序: main() int a,b,C,m,n,k; m=n=k=0; a=-1;b=2; C=3; if(c0)m=a+b; if(a=0) if(b0) if(c=0)n=a=b; else if(c0)n=a-b; else k/=c; printf(“%d,%d, %d,“,m,n,k); 则程序运行后的输出结果是( )。(分数:

    5、1.00)A.1,0,0B.2,-3,3C.1,-3,3D.1,0,312.以下对枚举类型名的定义中正确的是( )。(分数:1.00)A.enum a=one,two,three;B.enum aone=9,two=-1three=200;C.enum a=“one“,“two“,“four“;D.enum a“nine“,“two“,“three“;13.若有如下程序: main() int n; for(n=0;n9;n+) if(n1) printf(“%d“,n); continue; if(n=4)break; printf(“%d“,n); 则循环体执行的次数是( )。(分数:1.

    6、00)A.1B.5C.9D.死循环14.下面程序段中的循环体的执行次数是( )。 for(i=4;i0;i-) for(j=1;j=4;j+) sum=sum+j;(分数:1.00)A.4B.0C.12D.1615.若要打开 A 盘中 user 子目录下名为 aaa.txt 的文本文件进行读、写操作,下面符合此要求的函数调用是( )。(分数:1.00)A.fopen(“A:/user/aatxt“,“r“)B.fopen(“A:/user/aatxt“,“r=“)C.fopen(“A:/user/aatxt“,“rb“)D.fopen(“A:/user/aatxt“,“w“)16.函数 fun

    7、 的返回值是( )。 fun(char *a,char *b) int num=0,n=0; while(*(a+num)!=/0)num+; while(bn) *(a+num)=bn;num+;n+;)return num; (分数:1.00)A.字符串 a 的长度B.字符串 b 的长度C.字符串 a 和 b 的长度之差D.字符串 a 和 b 的长度之和17.执行下面程序的正确结果是( )。 main() float a=1.9; switch (a) case 0:printf(“0000“);case 1:printf(“1111“); case 2:printf(“3333“); p

    8、rintf(“%f“, a); (分数:1.00)A.1.900000B.111133331.900000C.33331.900000D.00001111233331.90000018.设 x、y、t 均为 int 型变量,则执行语句:x=y=3;t=+x|+y;后,y 的值为( )。(分数:1.00)A.不定值B.4C.3D.119.下面程序的输出结果是( )。 #define PI 3.1415 #define ARE(X) PI*x*x main() int r=2; printf(“%.2f“,ARE(r+1); (分数:1.00)A.28.26B.28.260000C.9.28D.9

    9、.28000020.有如下程序 main() int y=3,x=3,z=1; printf(“%d %d/n“, (+x,+y),z+2); 运行该程序的输出结果是( )。(分数:1.00)A.3 4B.4 2C.4 3D.3 321.下列选项中,不能用作标识符的是( )。(分数:1.00)A._1234_B._1_2C.int_2_D.2_int_22.算法的时间复杂度是指( )。(分数:1.00)A.执行算法程序所需要的时间B.算法程序的长度C.算法程序中的指令条数D.算法执行过程中所需要的基本运算次数23.C 语言中各种基本数据类型的存储空间长度排列为( )。(分数:1.00)A.ch

    10、arlongintfloatdoubleB.doublefloatlongintcharC.charintlongfloatdoubleD.floatintlongchardouble24.以下程序执行后 sum 的值是( )。(分数:1.00)A.15B.14C.不确定D.0 main() int i, sum; for(i=1;i6;i+) sum+=i; printf(“%d/n“,su; 25.在 C 语言中,关于函数 fseek 的说法正确的是( )。(分数:1.00)A.使位置指针重新返回文件的开头B.使位置指针到文件的结尾C.可以改变文件位置指针D.利用 fseek 函数只能实现

    11、文件顺序读写26.以下能正确定义数组并正确赋初值的语句是( )。(分数:1.00)A.int N=5,b;B.int a12=1,3;C.intc2=1,2,3,4;D.int d32=1,2,34;27.若有如下程序: main() char a=“1234“;int i,t=0; for(i=0;ai=0 main() printf(“%1d/n“,fun(3); (分数:1.00)A.1B.2C.3D.443.下面程序输出的结果是( )。 main() int x=100,a=10,b=20,ok1=5,ok2=0; if(ab) if(b!=15) if(!ok1) x=-i; els

    12、e if(ok2) x=10; x=1; printf(“%d/n“,x); (分数:1.00)A.-1B.0C.1D.不确定的值44.下列不属于 C 语言关键字的选项是( )。(分数:1.00)A.printfB.sizeofC.externD.long45.有以下程序: void swap1(int C) int t; t=c0; c0=C1; c1=t; void swap2(int c0, int c1) int t; t=c0; c0=c1; c1=t; main() int a2=3,5, b2=3,5); swapl(a); swap2(b0,b1); printf(“%d %d

    13、 %d %d/n“,a0,a1,b0,b1); 其输出结果是(分数:1.00)A.5 3 5 3B.5 3 3 5C.3 5 3 5D.3 5 5 346.下列叙述中正确的是( )。(分数:1.00)A.程序执行的效率与数据的存储结构密切相关B.程序执行的效率只取决于程序的控制结构C.程序执行的效率只取决于所处理的数据量D.以上三种说法都不对47.有以下程序: void fun(char *c,int d) *c=*c+1;d=d+1; printf(“%c,%c,“,*c,d); main() char a=A,b=a; fun(C.intc2=1,2,3,4;D.int d32=1,2,3

    14、4; 解析:解析 选项 A 中,数组的长度使用了变量 N,而在 C 语言中是不能用变量来定义数组的长度的,故选项 A 错误。在 C 语言中,给二维数组赋初值时,行数不能超过定义的行数,每行的初值个数不能超过定义时的列数,故选项 B 错误。选项 C 数组的第二维下标默认,而在 C 语言中,数组的第二维下标不能默认,故选项 C 错误。所以,D 选项为所选。27.若有如下程序: main() char a=“1234“;int i,t=0; for(i=0;ai=0 main() printf(“%1d/n“,fun(3); (分数:1.00)A.1 B.2C.3D.4解析:解析 本题的 fun 函

    15、数是一个递归函数,当参数 n 为 1 或 2 时返回 2,否则返回 n-fun(n-1)。递推下来就是 n-fun(n-1)=n- (n-1)-fun(n-2)=n-(n-1)+(n-2)-fun(n-3)=直到 fun()函数的参数等于 1 或 2,故 fun(3)=3-fun(2)=3-2=1。所以答案是 A。43.下面程序输出的结果是( )。 main() int x=100,a=10,b=20,ok1=5,ok2=0; if(ab) if(b!=15) if(!ok1) x=-i; else if(ok2) x=10; x=1; printf(“%d/n“,x); (分数:1.00)A

    16、.-1B.0C.1 D.不确定的值解析:解析 如果没有大括号,else 总是与它上面的最近的 if 配对。所以本题中的 elseif(ok2)是与if(!ok1)配对的,首先因为 ab 成立所以进一步判断 b!=15 也成立,再进一步判断!ok1,为假,不执行子句 X=-1;继续判断 ok2 是否为真,ok2 亦为假,故子句 x=10;也不执行,最后让 x=1;输出 x,所以结果应该选择 C。44.下列不属于 C 语言关键字的选项是( )。(分数:1.00)A.printf B.sizeofC.externD.long解析:解析 关键字也称为保留字,它是由 C 语言本身预先定义好的一类单词。标

    17、准 C 语言中共有 32 个关键字,都是用小写字母组成的单词。每个关键字在 C 语言中都具有特殊的含义,并实现着一定的功能。例如 if、for 等。本题中选项 A 是标准输出函数的函数名,不属于 C 语言的关键字,故应该选择 A。45.有以下程序: void swap1(int C) int t; t=c0; c0=C1; c1=t; void swap2(int c0, int c1) int t; t=c0; c0=c1; c1=t; main() int a2=3,5, b2=3,5); swapl(a); swap2(b0,b1); printf(“%d %d %d %d/n“,a0,

    18、a1,b0,b1); 其输出结果是(分数:1.00)A.5 3 5 3B.5 3 3 5 C.3 5 3 5D.3 5 5 3解析:解析 本题中函数 swapl()是传递的地址。所以对该形参 c 的改变将影响实参,分析可知该函数的作用,是使数组 c 的第一个元素和第二个元素的值互换。主函数中调用该函数将 a 作为实参传递给形参c,故执行该函数后 a 的第一个元素和第二个元素的值将交换。分别为 5 和 3。函数 swap2()是值传递的,所以该函数执行后对数组 b 将没有任何改变,此时该数组的第一个和第二个元素依然为 3 和 5,因此最后的输出为 5、3、3 和 5,所以,4 个选项中选项 B

    19、符合题意。46.下列叙述中正确的是( )。(分数:1.00)A.程序执行的效率与数据的存储结构密切相关 B.程序执行的效率只取决于程序的控制结构C.程序执行的效率只取决于所处理的数据量D.以上三种说法都不对解析:解析 程序执行的实际计算工作量不仅与程序的控制结构有一定的关系,与处理的数据量有关,而且还与数据的存储结构密切相关。所以,选项 A 正确,选项 B 和选项 C 错误。47.有以下程序: void fun(char *c,int d) *c=*c+1;d=d+1; printf(“%c,%c,“,*c,d); main() char a=A,b=a; fun(&b,a); printf(

    20、“%c,%c/n“,a,b); 程序运行后的输出结果是( )。(分数:1.00)A.B,a,B,aB.a,B,a,BC.A,b,A,bD.b,B,A,b 解析:解析 程序中定义了两个字符型变量a和b,并分别赋初值为A和a,然后调用函数 fun(),将 b 的地址和 a 值作为实参。在函数 fun()中第一个参数是传递地址,故在调用函数 fun()中对参数做的修改(即将 b 值加一)将影响字符型变量的值(变为 b),函数 fun()第二个参数是传值的,故在调用函数fun()对第二个参数做的修改不影响字符型变量 a(即a的值仍为A),所以在 fun()函数中输出的 d 为b,B,接着在主函数中,输

    21、出 a,b,然后退出 fun()函数,接着执行后面的语句,输出 A,b。所以最后输出为 b,B, A,b。4 个选项中 D 正确。48. (分数:1.00)A.x/y*z B.x*(1/(y*)C.x/y*1/zD.x/y/z解析:49.设栈 S 的初始状态为空。元素 a、b、c、d、e、f 依次通过栈 S,若出栈的顺序为 b、d、c、f、e、a,则栈 S 的容量至少应该为( )。(分数:1.00)A.3 B.4C.5D.6解析:解析 根据条件,可做如下操作:a、b 进栈,栈中有 a 和 b 两个元素;b 出栈,c、d 进栈,栈中有 a、c、d 这 3 个元素;d、c 出栈,e、f 进栈,栈中

    22、有 a、e、f 这 3 个元素;元素 f、e、a 出栈,栈为空。由此可见,进栈顺序为 a、b、c、d、e、f,出栈顺序为 b、d、c、f、e、a,满足题目要求。每次进栈操作后,栈中最多有 3 个元素,所以,为了顺利完成这些操作,栈的容量应至少为 3。50.下述程序的输出结果是( )。 # include stdio.h int fun( int a) int b=0; static int c=3; b+,c+; return a+b+c; void main() int x=2,i; for(i=1;i3;i+) printf(“%d“,fun(x); (分数:1.00)A.56B.67C.

    23、78 D.89解析:解析 本题主函数中的 for 循环会循环两次,即输出连续两次调用 fun(2)的返回值。在 fun()函数中定义了一个静态变量 c,第一次调用 fun()时 c 被初始化为 3,然后自增为 4,最后输出 a+b+c 为2+1+4=7。由于静态变量的生存周期为整个程序执行周期,所以第二次调用 fun()时 c 的值为 4,然后自增为 5,故最后输出 a+b+c 为 2+1+5=8。所以程序的输出结果是 78,应该选择 C。二、B填空题/B(总题数:17,分数:34.00)51.设一棵二叉树中有 3 个叶子结点,有 8 个度为 1 的结点,则该二叉树中总的结点数为U 【1】 /

    24、U。(分数:2.00)填空项 1:_ (正确答案:13)解析:解析 在任意一棵二叉树中,叶子结点总是比度为 2 的结点多一个。本题中的二叉树有 3 个叶子结点,所以,该二叉树有 3-1=2 个度为 2 的结点;又知本题中的二叉树有 8 个度为 1 的结点。所以,本题中的二叉树总结点数为:叶子结点数+度为 l 的结点数+度为 2 的结点数=3+8+2=13。所以,本题的正确答案为 13。52.类是一个支持集成的抽象数据类型,而对象是类的U 【2】 /U。(分数:2.00)填空项 1:_ (正确答案:实例)解析:解析 在面向对象的程序设计中,类描述具有相似性质的一组对象,具体对象称为类的实例。53

    25、.结构化设计主要分为系统设计和模块设计,U 【3】 /U的任务是决定系统的模块结构。(分数:2.00)填空项 1:_ (正确答案:系统设计)解析:解析 结构化设计主要分为系统设计和模块设计。系统设计决定系统的模块结构,模块设计具体考虑每个模块内部的算法、模块输入、输出及模块功能。54.数据模型分为格式化模型与非格式化模型,层次模型与网状模型属于U 【4】 /U。(分数:2.00)填空项 1:_ (正确答案:格式化模型)解析:解析 层次模型与网状模型属于格式化模型。55.数据库系统中实现各种数据管理功能的核心软件称为U 【5】 /U。(分数:2.00)填空项 1:_ (正确答案:数据库管理系统)

    26、解析:解析 数据库系统中实现各种数据管理功能的核心软件称为数据库管理系统,负责数据库中所有数据的存储、检索、修改以及安全保护等,数据库内的所有活动都是在其控制下进行。56.若下面程序的输出结果是 4,请填空。 main() int i,j,k; k = 0 ; i = j =U 【6】 /U; k+=-(i+j);printf(“%d/n“,k); (分数:2.00)填空项 1:_ (正确答案:-2)解析:解析 题日中定义并初始化了变量 k 为 0,最后输出 k 的值,要求为 4,而在此期间只有 k+=-(i+j);这条语句改变了 k 的值,即要求表达式-(i+j)的值为 4。所以,答案应该为

    27、-2,因为只有 i=j=-2时,表达式-(i+j)的值才为 4。57.若有程序: main() int i,j; scanf(i=%d,j=%d“;&i,&j); printf(“i=%d,j=%d/n“,i,j); 要求给 i 赋 10,给 j 赋 20,则应该从键盘输入上U 【7】 /U。(分数:2.00)填空项 1:_ (正确答案:i=10,j=20)解析:解析 该函数的第一个参数是格式字符串,主要由两类字符组成,一类是非格式符要求原样输入,一类是格式符对应要输入的变量,所以本题中应该原样输入 i=,j=,后面分别给变量 10 和 20,故空格处应该填入 i=10,j=20。58.若有以

    28、下程序: main() int p,a=5; if(p=a!=0) printf(“%d/n“,p); else printf(“%d/n“,p+2); 执行后输出结果是U 【8】 /U。(分数:2.00)填空项 1:_ (正确答案:1)解析:解析 首先计算 if 语句后面的表达式,根据运算符的优先级可知,先算 a!=0,该值为 1,再把 1赋值给 p,结果为 1(真),执行其后的 printf 语句,输出的值为 1。59.以下程序运行后的输出结果是U 【9】 /U。 main() int X=1,y=0,a=0,b=0; switch (x) case 1:switch (y) case 0

    29、:a+;break; case 1:b+;break; case 2: a+;b+;break; printf(“%d%d/n“,a,b); (分数:2.00)填空项 1:_ (正确答案:21)解析:解析 外层 switch 语句后面括号里的 x 的值为 1,所以执行从 case 1:后面的语句开始执行,而case 1:后面语句也为 switch 语句,这个 switch 语句后面括号里的 y 的值为 0,所以从该 switch 语句里的 case 0:开始执行即执行 a+,这时 a 的值变为 1,执行完毕,遇到 break 语句,退出内层 switch语句,又回到外层 switch 语句,继

    30、续执行 case 1:下面的语句即 case 2:执行完毕后,a 自加 1 变为2,b 自加 1 变 1。所以最后输出的 a 和 b 的值为 21。60.以下程序运行后的输出结果是U 【10】 /U。 main() int a44=1,2,3,4),5,6,7,8,11,12,13,14,15,16,17,18; int i=0,j=0,s=0; while (i+4) if (i=2 | i=4)continue; j=0; do S+= aij ;j+; while (j4); printf(“%d/n“,s); (分数:2.00)填空项 1:_ (正确答案:92)解析:解析 本题的主函数

    31、中首先定义了一个 4 行 4 列的二维数组,然后执行一个 while 循环,该循环中又嵌套了一个 do-while 循环。先看 while 循环,该循环通过 i+的值来判断是否结束循环,当 i+的值为 4 的时候结束循环,当 i=O 时,执行 while 的循环体,显然 if 语句条件不满足不执行,接着让 j=0,然后执行 do-while 循环体,不难看出 do-while 循环的功能是将第 i+1 行的所有元素加起来,所以这时 s的值为 s=a10+a11+a12+a13=26,当 i=1 时,i+1=2,if 后面括号里的表达式的值为真执行后面的 continue 语句,结束该次循环;当

    32、 i=2 时,i 加 1 变为 3,把第 3+1 行的所有元素的值加到 s上,此时 s=s+a20+a21+a22 +a23=92,当 i=3 时,3+1=4,if 后面括号里的表达式的值为真执行后面的 continue 语句,结束该次循环,当 i=3 时,if 后面括号里的表达式的值为真执行后面的continue 语句,结束该次循环当 i=4 时 while 循环结束,所以最后输出的 s 的值为 92。61.若有如下程序: main() int x=20; if(x10)printf(“%d“,x-=5); if(x15)printf(“%d“,x); 则程序运行后的输出结果是U 【11】

    33、/U。(分数:2.00)填空项 1:_ (正确答案:15)解析:解析 本题首先定义了一个变量 x 并初始化为 20。然后第一个 if 语句判断 x 是否10,结果为真,则执行后面的输出语句,输出结果是赋值表达式 X-=5 的值,所以输出 15,同时 x 的值也变成 15。第二个 if 语句再判断 x 是否15 时条件为假,结束程序。所以程序运行后的输出结果是 15。62.函数 fun 的功能是计算 xndouble fun(double x,int n) int i; double y=1;for(i=1;i=n;i+) y=y*x;return y;主函数中已正确定义 m、a、b 变量并赋值

    34、,而且调用 fun 函数计算:m=a 4+b4-(a+b)3。实现这一计算的函数调用语句为U 【12】 /U。(分数:2.00)填空项 1:_ (正确答案:m=fun(a,4)+fun(b,4)-fun(a+b,3);)解析:解析 函数 fun(x,n)的作用是求 x 的 n 次方,因此 a 的 4 次方应该调用函数 fun(a,4),b 的 4次方应该调用函数 fun(b,4),a+b 的 3 次方应该调用函数 fun(a+b,3),所以题目中的数学表达式,写成C 程序中的语句为 m=fun(a,4)+fun(b,4)-fun(a+b,3)。63.下述程序的输出结果是U 【13】 /U。 #

    35、 include stdio.h void main() char c120=“1234“; char c220=“5678“; char *p1,*p2; p1=c1; p2=c2; while(*p1+) while(*p1+=*p2+); printf(“%s,c1); (分数:2.00)填空项 1:_ (正确答案:15678)解析:解析 本题使用了双重 while 循环,外循环的循环条件是*p1+,即每次循环时让 p1 指向其后面的一个元素,而 p1 自增之前所指内容为 0 时循环结束。内循环的循环条件是*p1+=*p2+,即每次循环时让 p1 和 p2 指向其后面的一个元素,而将 p

    36、2 自增之前所指的元素复制到 p1 自增之前所指的地址中去,直到 p2 自增之前所指内容为 0 时循环结束。p1 本来一开始是指向 c10,由于外循环判断条件时让 p1 自增了,所以进入内循环时 p1 指向 c11,而内循环将 p2 所指字符串复制到 p1 所指位置,所以内循环的结果是 c11、c12、c13、c14、c15分别被 c20、c21、c22、c23、c24改写成5、6、7、8、/0。故程序输出的结果为 15678。64.函数 check 用来判断字符串 s 是否是“回文”(顺读和倒读都一样的字符串为“回文”,如 abeba)。是则函数返回值 1,否则返回值 0,请填空。 int

    37、check(char *s) char *p1,*p2;int n; n=strlen(s); p1=s; p2=U 【14】 /U; while(p1p2) if (*p1 != *p2) break; else p1+;p2-; if(U 【15】 /U)return 0; else return 1; (分数:2.00)填空项 1:_ (正确答案:14 s+n-1 15 p1p2)解析:解析 判断是否“回文”字符串,应该使用两个字符型指针,一个从前往后遍历字符串,另一个从后往前遍历字符串,直到它们中途相遇,如果每次两个指针所指的字符都相同,则为“回文”字符串。程序中已经使 p1=s,即指

    38、向字符串的第一个字符了,所以 p2 应该指向 s 的最后一个字符,故第一空应填s+n-1。比较两个指针时,如果有一次不相同,则跳出循环,因为此时已可肯定不是“回文”字符串。如果是 while 循环的条件 p1p2 不满足时自然结束的循环,则每次比较都是相同的,两个指针是中途相遇了才结束比较。两种情况的区别就是 plp2 是否成立。故第二空应该填 p1p2。65.以下程序从终端读入数据到数组中,统计其中正数的个数,并计算它们之和。请填空。 main() int i,a20,sum,count; sum=count=0; for(i=0;i20;i+)scanf(“%d“,(U 【16】 /U);

    39、 for(i=0;i20;i+) if(ai0) count+; sum+=(U 【17】 /U); printf(“sum=%d,count=%dhn“,sum,count); (分数:2.00)填空项 1:_ (正确答案:16 &ai或 a+i 17 ai或*(a+i))解析:解析 主函数中一开始定义了一个长度为 20 的整形数组,然后通过一个循环,循环 20 次给它的每个元素赋初值,所以在第一个空格处应填各个元素的地址,即填&ai或 a+i,然后再通过一个循环执行 20 次,每循环一次,先判断该循环是否大于 0,如果大于 0 将其累加到变量 sum 中,所以第二个空格处应该填入数组元素,

    40、即应该填 ai或*(a+i)。66.下面程序的功能是求整数 m、n 的最大公约数,请填空。 main() int m,n,r; scanf(“%d,%d“,&m,&n); if(U 【18】 /U)r=m;m=n;n=r;) while(U 【19】 /U) r=m%n;m=n;n=r; printf(“%d“,m); (分数:2.00)填空项 1:_ (正确答案:18 mn 或 nm 19 r 或 r!=0)解析:解析 本题使用的是“辗转相除”法求两个数的最大公约数,即以两个数中较大的除以较小的,如果余数不为 0,则将较小的数和余数做同样处理,直到被除断为止,此时较小的数就是两个数的最大公约

    41、数。本题第一空要求填写一个 if 语句的判断条件,如果满足此条件则交换 m 和 n 的值,再看后面while 循环的循环体,使用 m%n 求余,则此 if 语句的作用应该是保证 m 是两个数中较大的那个,故第一空填 mn 或 nm。接下来的 while 循环实现整个辗转相除的过程,其结束条件应该是余数 r 为 0,所以while 的循环条件应该填 r 或 r!=0。67.若 fp 已正确定义为一个文件指针,d1.dat 为二进制文件,请填空,以便为“读”而打开此文件: fp=fopen(U 【20】 /U);。(分数:2.00)填空项 1:_ (正确答案:“d1.dat“,“rb“)解析:解析

    42、 打开文件的函数为 fopen(“文件名“,“mode“),其中“mode“表示文件的打开方式。如果打开的是二进制文件,其 mode 字符串可以是:“rb“、“wb“、“ab“、“rb+“、“wb+“、“ab+“。“r“表示以只读方式打开。“w“表示以写方式打开,如果已存在该文件名的文件,文件中的内容将被清空。若文件名不存在,则将创建该文件。“a“为追加方式打开。若文件存在时,将打开这个文件并且在文件的末尾进行追加。当文件不存在,将创建新文件。“r+“打开一个已存在文件用于更新(可读可写)。w+“创建一个新文件用于更新,如果文件存在,文件被重写(可读可写)。“a+“打开用于追加,当文件不存在时,创建新文件,并在文件末尾进行追加(可读可写)。根据题意,应该填“d1.dat“,“rb“。


    注意事项

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




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

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

    收起
    展开