ImageVerifierCode 换一换
格式:DOC , 页数:20 ,大小:106.50KB ,
资源ID:1326382      下载积分:5000 积分
快捷下载
登录下载
邮箱/手机:
温馨提示:
如需开发票,请勿充值!快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝扫码支付 微信扫码支付   
注意:如需开发票,请勿充值!
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【http://www.mydoc123.com/d-1326382.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

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

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

1、二级 C语言笔试 37及答案解析(总分:86.00,做题时间:90 分钟)一、B选择题/B(总题数:50,分数:50.00)1.以下程序执行后 sum的值是 _。 main() int i,sum; for(i=1;i6;i+)sum+=i; printf(“%d/n“,sum); (分数:1.00)A.15B.14C.不确定D.02.软件调试的目的是 _。(分数:1.00)A.发现错误B.改正错误C.改善软件的性能D.挖掘软件的潜能3.面向对象的设计方法与传统的面向过程的方法有本质不同,它的基本原理是 _ 。(分数:1.00)A.模拟现实世界中不同事物之间的联系B.强调模拟现实世界中的算法而

2、不强调概念C.使用现实世界的概念抽象地思考问题从而自然地解决问题D.鼓励开发者在软件开发的绝大部分中都用实际领域的概念去思考4.当调用函数时,实参是一个数组名,则向函数传送的是 _。(分数:1.00)A.数组的长度B.数组的首地址C.数组每一个元素的地址D.数组每个元素中的值5.假定建立了以下链表结构,指针 p、q 分别指向如图所示的结点,则以下可以将 q所指结点从链表中删除并释放该结点的语句组是 _。 (分数:1.00)A.free (;p-next=q-next;B.(*next=(*next;free(;C.q=(*next;(*next=q;free(;D.q=q-next;p-nex

3、t=q;p=p-next;free(:6.设 char型变量 x中的值为 10100111,则表达式(2+x)(3)的值为 _。(分数:1.00)A.10101001B.10101000C.11111101D.010101017.有以下程序: main() int x8=8,7,6,5,0,0,*s; S=x+3; printf(“%d/n“,s2); 程序运行后的输出结果是 _ 。(分数:1.00)A.随机值B.0C.5D.68.以下只有在使用时才为该类型变量分配内存的存储类说明是 _ 。(分数:1.00)A.auto和 staticB.auto和 registerC.register和 s

4、taticD.extern和 register9.以下程序的输出结果是 _。 long fum(int n) long s; if(n=|n=2)s=2; else s=n-fun(n-1); return s; main() printf(“%ld/n“,fun(3);(分数:1.00)A.1B.2C.3D.410.下列叙述中正确的是 _ 。(分数:1.00)A.C语言编译时不检查语法B.C语言的子程序有过程和函数两种C.C语言的函数可以嵌套定义D.C语言中,根据函数能否被其他源文件调用,被区分为内部函数和外部函数11.有以下程序: void sum(int * a) a0=a1; main

5、() int aa10=1,2,3,4,5,6,7,8,9,10,i; for(i=1;i0;i-)sum( for(i=0;i3;i+)pi=ai*(1+1); for(i=0;i3;i+)k+=pi*2; printf(“%d/n“,k);(分数:1.00)A.20B.21C.22D.2318.对于下面的程序 #includestdio.h #includestring.h char * scmp(char * s1,char * s2) if(strcmp(s1,s2)0)return(s1); else return(s2); main() int i;char string20,st

6、r320; for(i=0;i3;i+)gets(stri); strcpy(string,scmp(str0,str1); strcpy(string,scmp(string,str2); printf(“%s/n“,string); 若运行时依次输入 abcd、abba和 abc三个字符串,则输出结果为 _。(分数:1.00)A.abcdB.abbaC.abcD.abca19.当执行下面的程序时,其输出结果为 _。 union st int a; char b; main() union st s; char* p=(char *) printf“/n“); 假定以上程序经编译和连接后生成

7、可执行文件 PROGEXE,如果在此可执行文件所在目录的 DOS提示符下键入 PROG ABCDEFGHIJKL,则输出结果为 _。(分数:1.00)A.ABCDEFGB.IJHLC.ABCDEFGHIJKLD.IJKLABCDEFGH21.下列程序段的输出结果是 _。 void fun(int * x,int * y) pnntf(“%d%d“,* x,* y);* x=3;*y=4; main() int x=1,y=2; fun( (分数:1.00)A.ABC6789B.ABC67C.12345ABC6D.ABC45678932.在结构化方法中,软件功能分解属于软件开发中的 _ 阶段。(

8、分数:1.00)A.详细设计B.需求分析C.总体设计D.编程调试33.有以下程序段: int x=3; do printf(“%d“,x-=2); while(!(-x); 其输出结果是 _ 。(分数:1.00)A.1B.3 0C.1 -2D.死循环34.若 a为 int类型,且其值为 3,则执行完表达式 a+=a-=a*a后,a 的值是 _ 。(分数:1.00)A.-3B.9C.-12D.635.以下程序的输出结果是 _。 main() int x=05;char z=a; printf(“%d/n“,(x i20;i+)scanf(“%d(“%d“,U【18】 /U); for(i=0;i

9、20;i+) if(ai0) count+; sum+=U 【19】 /U; printf(“sum=%d,count=%d/n“,sum,count); (分数:2.00)填空项 1:_68.若变量 n中的值为 24,则 prnt函数共输出U 【20】 /U行。 void prnt(int n,int aa ) int i; for(i=1;i=n;i+) printf(“%6d“,aai); if(!(i%5)printf(“/n“); printf(“/n“);(分数:2.00)填空项 1:_二级 C语言笔试 37答案解析(总分:86.00,做题时间:90 分钟)一、B选择题/B(总题数

10、:50,分数:50.00)1.以下程序执行后 sum的值是 _。 main() int i,sum; for(i=1;i6;i+)sum+=i; printf(“%d/n“,sum); (分数:1.00)A.15B.14C.不确定 D.0解析:评析变量 sum在使用时未赋初值,所以无法确定 sum最终的值。2.软件调试的目的是 _。(分数:1.00)A.发现错误B.改正错误 C.改善软件的性能D.挖掘软件的潜能解析:评析由程序调试的概念可知:程序调试活动由两部分组成,其一是根据错误的迹象确定程序中错误的确切性质、原因和位置。其二,对程序进行修改,排除这个错误。所以程序调试的目的就是诊断和改正程

11、序中的错误。3.面向对象的设计方法与传统的面向过程的方法有本质不同,它的基本原理是 _ 。(分数:1.00)A.模拟现实世界中不同事物之间的联系B.强调模拟现实世界中的算法而不强调概念C.使用现实世界的概念抽象地思考问题从而自然地解决问题 D.鼓励开发者在软件开发的绝大部分中都用实际领域的概念去思考解析:评析面向对象的设计方法基本原理:使用现实世界的概念抽象地思考问题从而自然地解决问题。强调模拟现实世界中的概念而不强调算法,鼓励开发者在软件开发的绝大部分中都用应用领域的概念去思考。4.当调用函数时,实参是一个数组名,则向函数传送的是 _。(分数:1.00)A.数组的长度B.数组的首地址 C.数

12、组每一个元素的地址D.数组每个元素中的值解析:评析当调用函数时,实参是一个数组名,则向函数传送的是数组的首地址,函数中的形参可定义成以下三种形式: 形参定义成数组; 形参定义成可变长数组: 形参定义为指针变量。5.假定建立了以下链表结构,指针 p、q 分别指向如图所示的结点,则以下可以将 q所指结点从链表中删除并释放该结点的语句组是 _。 (分数:1.00)A.free (;p-next=q-next;B.(*next=(*next;free(; C.q=(*next;(*next=q;free(;D.q=q-next;p-next=q;p=p-next;free(:解析:评析选项 A的错误在

13、于,先已经把 q结点给释放,无法再进行余下语句了;选项 C和 D的错误在于因为有了 q=(*q).next做了赋值,则 free(q)释放了原来 q后面的一个结点。6.设 char型变量 x中的值为 10100111,则表达式(2+x)(3)的值为 _。(分数:1.00)A.10101001B.10101000C.11111101D.01010101 解析:评析异或运算符()的运算规则是:参加运算的两个相应位同号,则结果为 0(假);异号则为1(真)。取反运算符(-)的运算规则是:对一个二进制数按位取反,即将 0变为 1,1 变为 0。本题(-3)是对 3(二进制形式为 00000011)按位

14、取反即 11111100。表达式(2+x)(-3)的值就等价于(00000010+10100111)11111100,结果为 01010101。7.有以下程序: main() int x8=8,7,6,5,0,0,*s; S=x+3; printf(“%d/n“,s2); 程序运行后的输出结果是 _ 。(分数:1.00)A.随机值B.0 C.5D.6解析:评析本题定义了数组 x8和指针变量 s,由 C语言规定,指针加 1的含义是使指针指向数组的下一个元素,而不是指针值简单的加 1,因此通过 s=x+3;使 s指向数组元素 x3。由于指向数据的指针变量可以带下标表示,如 si与*(s+i)等价。

15、因此题目要求输出 s2的值,即*(s+2)的值,也就是 x5的值,为 0。8.以下只有在使用时才为该类型变量分配内存的存储类说明是 _ 。(分数:1.00)A.auto和 staticB.auto和 register C.register和 staticD.extern和 register解析:评析extern、register、static、auto 分别是定义外部变量、寄存器变量、静态变量、自动变量,其中,自动变量和寄存器变量属于动态存储,调用时临时分配单元;而静态变量和外部变量属于静态存储,在整个程时都存在。9.以下程序的输出结果是 _。 long fum(int n) long s;

16、if(n=|n=2)s=2; else s=n-fun(n-1); return s; main() printf(“%ld/n“,fun(3);(分数:1.00)A.1 B.2C.3D.4解析:评析这是一个递归函数。递归的结束条件是,n=1 或者 n=2。按照程序顺序,即可得出本题结果为 1。10.下列叙述中正确的是 _ 。(分数:1.00)A.C语言编译时不检查语法B.C语言的子程序有过程和函数两种C.C语言的函数可以嵌套定义D.C语言中,根据函数能否被其他源文件调用,被区分为内部函数和外部函数 解析:评析选项 A的错误在于编译过程中是检查语法的,若发现源程序有语法错误,则系统会提示出错信

17、息;选项 B的错误在于 C语言中,子程序的作用是由函数来完成的,无过程的概念;选项 C的错误在于函数不可以嵌套定义,但可以嵌套调用。11.有以下程序: void sum(int * a) a0=a1; main() int aa10=1,2,3,4,5,6,7,8,9,10,i; for(i=1;i0;i-)sum( for(i=0;i3;i+)pi=ai*(1+1); for(i=0;i3;i+)k+=pi*2; printf(“%d/n“,k);(分数:1.00)A.20B.21 C.22D.23解析:评析按程序的流程走一遍,可以得到 p0=0,p1=2,p3=6;执行三次 k+=pi*2

18、,相当于k=5+0*2+2*2+6*2=21。18.对于下面的程序 #includestdio.h #includestring.h char * scmp(char * s1,char * s2) if(strcmp(s1,s2)0)return(s1); else return(s2); main() int i;char string20,str320; for(i=0;i3;i+)gets(stri); strcpy(string,scmp(str0,str1); strcpy(string,scmp(string,str2); printf(“%s/n“,string); 若运行时依

19、次输入 abcd、abba和 abc三个字符串,则输出结果为 _。(分数:1.00)A.abcdB.abba C.abcD.abca解析:评析本题自定义函数 scmp()的作用是比较字符串 s1和 s2的大小,如果 s1s2,函数返回 s1的值,否则返回 s2的值。若运行时依次输入 abcd、abba 和 abc三个字符串,执行strcpy(string,scmp(str0,str1);后,string 的值为 abba,再执行 strcpy(string,scmp(string,str2);,由于 scmp(string str2)返回 string的值 abba,再拷贝到字符串数组 str

20、ing中,所以本题输出 abba。19.当执行下面的程序时,其输出结果为 _。 union st int a; char b; main() union st s; char* p=(char *) printf“/n“); 假定以上程序经编译和连接后生成可执行文件 PROGEXE,如果在此可执行文件所在目录的 DOS提示符下键入 PROG ABCDEFGHIJKL,则输出结果为 _。(分数:1.00)A.ABCDEFGB.IJHLC.ABCDEFGHIJKL D.IJKLABCDEFGH解析:评析本题主函数带有两个参数,一个 int型变量 argc,另一个是 char型的一维一级指针数组ar

21、gv。当主函数被执行时,系统自动将根据命令行的情况,分别给主函数的两个参数赋值。Argc 中存放命令行中命令字和参数的总和的个数,argv 用来存放命令行中命令字和所有参数的字符串的,并规定argv0存放命令字字符串,argv1用来存放第一个参数的字符串,argv2用来存放第 2个参数的字符串,依此类推。题中 argc的值是 2,执行完-argc 后为 1,输出 argv1,此数组存在第一个参数的字符串 ABCDEFGHIJKL。21.下列程序段的输出结果是 _。 void fun(int * x,int * y) pnntf(“%d%d“,* x,* y);* x=3;*y=4; main(

22、) int x=1,y=2; fun( (分数:1.00)A.ABC6789 B.ABC67C.12345ABC6D.ABC456789解析:评析strcat(strl,str2)合并字符串函数的作用是把 str2所指字符串的内容连接到 strl字符串的后面,自动删去 strl原来串中的0。为了进行这项操作,要求 strl所指的字符串后面有足够的空间来容纳 str2所指字符串中的内容。函数值为 strl所指第一个字符的地址。32.在结构化方法中,软件功能分解属于软件开发中的 _ 阶段。(分数:1.00)A.详细设计B.需求分析C.总体设计 D.编程调试解析:评析总体设计过程通常由两个主要阶段组

23、成:系统设计,确定系统的具体实现方案;结构设计,确定软件结构。为确定软件结构,首先需要从实现角度把复杂的功能进一步分解。33.有以下程序段: int x=3; do printf(“%d“,x-=2); while(!(-x); 其输出结果是 _ 。(分数:1.00)A.1B.3 0C.1 -2 D.死循环解析:评析本题中循环执行了两次,第一次,执行完 printf语句后,x=1,而-x 是先自减后执行语句,所以(!(-x)的值为非零,所以又执行了一次。第二次 x的值为-2,-x 的值为-3,求非后,值为 0,跳出循环。34.若 a为 int类型,且其值为 3,则执行完表达式 a+=a-=a*

24、a后,a 的值是 _ 。(分数:1.00)A.-3B.9C.-12 D.6解析:评析C 语言中对赋值运算的运算的运算顺序是自右向左。本题中,计算 a*a之后,a 的值依然为3,表达式 a*a的值为 9;a-=9, a=3-9=-6:a+=-6,a=-6+-6=-12。35.以下程序的输出结果是 _。 main() int x=05;char z=a; printf(“%d/n“,(x )解析:评析要定义 p为指向函数的指针变量,需写成 void(*p)();,注意*p 两侧的括弧不可以省略,表示 p先与*结合,是指针变量,再与后面的()结合,表示此指针变量指向函数,这个函数无返回值(同fun(

25、)函数)。62.以下程序的输出结果是U 【12】 /U。 main() int p7=(11,13,14,15,16,17,18; int i=0,j=0; while(i7i20;i+)scanf(“%d(“%d“,U【18】 /U); for(i=0;i20;i+) if(ai0) count+; sum+=U 【19】 /U; printf(“sum=%d,count=%d/n“,sum,count); (分数:2.00)填空项 1:_ (正确答案:【17】0)解析:【18】&ai 【19】ai 评析本题要求从终端读入数据到数组中,统计其中正数的个数,并计算它们的和。程序中首先要对存放正

26、数个数的变量 count及存放和值的变量 sum初始化为 0,所以第一空应填 0。接着要求从终端读入数据到数组中,可以通过 scanf函数实现,因此第二空应填&ai。最后通过 sum+=ai;语句累加正数 ai的值到 sum中,因此第三空应填 ai。68.若变量 n中的值为 24,则 prnt函数共输出U 【20】 /U行。 void prnt(int n,int aa ) int i; for(i=1;i=n;i+) printf(“%6d“,aai); if(!(i%5)printf(“/n“); printf(“/n“);(分数:2.00)填空项 1:_ (正确答案:5)解析:评析本题的关键在于 if(i(i%5)printf(“/n“);这句,即如果 i可被 5整除时,则换行。i 值为24,可以被 5整除 4次,并余 4,因此,prnt 函数共输出 5行,最后一行有 4个数。

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