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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文(二级C语言笔试37.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

二级C语言笔试37.docx

1、二级C语言笔试37二级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.0解析:评析变量sum在使用时未赋初值,所以无法确定sum最终的值。2.软件调试的目的是 _。(分数:1.00)A.发现错误B.改正错误C.改善软件的性能D.挖掘软件的潜能解析:评析由程序调试的概念可知:程序调试活动由两部分组成,其一是根据错误的迹象确定程序中错误的确切性

2、质、原因和位置。其二,对程序进行修改,排除这个错误。所以程序调试的目的就是诊断和改正程序中的错误。3.面向对象的设计方法与传统的面向过程的方法有本质不同,它的基本原理是 _ 。(分数:1.00)A.模拟现实世界中不同事物之间的联系B.强调模拟现实世界中的算法而不强调概念C.使用现实世界的概念抽象地思考问题从而自然地解决问题D.鼓励开发者在软件开发的绝大部分中都用实际领域的概念去思考解析:评析面向对象的设计方法基本原理:使用现实世界的概念抽象地思考问题从而自然地解决问题。强调模拟现实世界中的概念而不强调算法,鼓励开发者在软件开发的绝大部分中都用应用领域的概念去思考。4.当调用函数时,实参是一个数

3、组名,则向函数传送的是 _。(分数: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

4、-next=q;p=p-next;free(:解析:评析选项A的错误在于,先已经把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

5、(二进制形式为00000011)按位取反即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.0C.5D.6解析:评析本题定义了数组x8和指针变量s,由C语言规定,指针加1的含义是使指针指向数组的下一个元素,而不是指针值简单的加1,因此通过s=x+3;使s指向数组元素x3。由于指向数据的指针变量可以带下标表示,如si与*(s+i

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

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

8、中,子程序的作用是由函数来完成的,无过程的概念;选项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(&aai); print(%d/n,aa0); 程序运行后的输出结果是 _。(分数:1.00)A.4B.3C.2D.1解析:评析C语言觌定,实参变量对形参变量的数据传递是“值传递”,只由实参传给形参,而不能由形参传回来给实参。函数调用结束后,形参单元被释放,实参单元仍保留并维持原值。本题要求输出aa0的值,结果应

9、为1。12.以下所列的各函数首部中,正确的是 _ 。(分数:1.00)A.void play(var a:Integer,var b:IntegeB.void play(int a,C.void play(int a,intD.Sub play(a as integer,b as intege解析:评析除选项C项外,其他各项都没有按照C语言中的函数定义规则定义函数。13.下列程序的运行结果是 _。 void fun(int * a,int *B) int*k; k=a;a=b;b=k; main() int a=3,b=6,*x&a,*y&b; fun(x,y); printf(%d%d,a,

10、B) ; (分数:1.00)A.6 3B.3 6C.编译出错D.00解析:评析本题中主函数里的x、y,fun函数里的a/b/k,这些都是指针,fun函数中只是将a、b这两个指针交换了位置,而并没有改变主函数中变量a、b的值。14.假设a和b为int型变量,则执行以下语句后,b的值为 _。 a=1;b=10; do b-=a;a+; while(b-0);(分数:1.00)A.9B.-2C.-1D.8解析:评析本题程序第一轮循环后b的值为9,在进行循环条件测试时,先取b的现值9与0比较,然后再将b减1。由于 90不成立,因此循环结束,这时b的值已变成8,本题正确答案为D。15.若变量c为char

11、类型,能正确判断出c为小写字母的表达式是 _ 。(分数:1.00)A.a=c=zB.(c=a)|(c=z)C.(a= and(z=D.(c=a)&(c=z)解析:评析(c=a)和(cz)的关系应该是“与”的关系。16.以下程序的输出结果是 _ 。 fun(int x,int y,int z) z=x * x + y * y; main() int a=31; fun(5,2,A) ; printf(%d,A) ; (分数:1.00)A.0B.29C.31D.无定值解析:评析本题中,a的值并没有改变,因为传递到函数中的是变量值。17.以下程序的输出结果是 _ 。main() int i,k,a1

12、0,p3; k=5; for(i=0;i10;i+)ai=i; 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.23解析:评析按程序的流程走一遍,可以得到p0=0,p1=2,p3=6;执行三次k+=pi*2,相当于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); el

13、se 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); 若运行时依次输入abcd、abba和abc三个字符串,则输出结果为 _。(分数:1.00)A.abcdB.abbaC.abcD.abca解析:评析本题自定义函数scmp()的作用是比较字符串s1和s2的大小,如果s1s2,函数返回s1的值,否则返回s2的值。若运行时依次输入ab

14、cd、abba和abc三个字符串,执行strcpy(string,scmp(str0,str1);后,string的值为abba,再执行 strcpy(string,scmp(string,str2);,由于scmp(string str2)返回string的值abba,再拷贝到字符串数组string中,所以本题输出abba。19.当执行下面的程序时,其输出结果为 _。 union st int a; char b; main() union st s; char* p=(char *)&s; s.a=0x3132; s.b=0x33; printf(%c,*p); (分数:1.00)A.1B

15、.2C.3D.不确定解析:评析共用体类型结构的特点是使几个不同的变量共占同一段内存,但在每一瞬时只能存放其中一种,而不是同时存放几种,共用体变量中起作用的成员是最后一次存放的成员,在存入一个新的成员后原有的成员就失去作用。因此本题起作用的是成员b的值,所以程序打印输出3。20.main(int argc,char * argv) while(-argc0)printf(%s,argvargc); printf/n); 假定以上程序经编译和连接后生成可执行文件PROGEXE,如果在此可执行文件所在目录的DOS提示符下键入PROG ABCDEFGHIJKL,则输出结果为 _。(分数:1.00)A.

16、ABCDEFGB.IJHLC.ABCDEFGHIJKLD.IJKLABCDEFGH解析:评析本题主函数带有两个参数,一个int型变量argc,另一个是char型的一维一级指针数组argv。当主函数被执行时,系统自动将根据命令行的情况,分别给主函数的两个参数赋值。Argc中存放命令行中命令字和参数的总和的个数,argv用来存放命令行中命令字和所有参数的字符串的,并规定argv0存放命令字字符串,argv1用来存放第一个参数的字符串,argv2用来存放第2个参数的字符串,依此类推。题中argc的值是2,执行完-argc后为1,输出argv1,此数组存在第一个参数的字符串ABCDEFGHIJKL。2

17、1.下列程序段的输出结果是 _。 void fun(int * x,int * y) pnntf(%d%d,* x,* y);* x=3;*y=4; main() int x=1,y=2; fun(&y,&x); printf (%d%d,x,y); (分数:1.00)A.2 1 4 3B.1 2 1 2C.1 2 3 4D.2 1 1 2解析:评析本题中函数传递的是变量的地址,如果形参在函数中发生改变,相刘应的实参也就有了改变。22.数据库的物理设计是为一个给定的逻辑结构选取一个适合应用环境的 _ 的过程,包括确定数据库在物理设备上的存储结构和存取方法。(分数:1.00)A.逻辑结构B.物理

18、结构C.概念结构D.层次结构解析:评析根据数据库物理设计的概念可知:为一个给定的逻辑数据模型选取一个最合适应用要求的物理结构的过程,就是数据库的物理设计。数据库的物理结构就是指数据库在物理设备上的存储结构与存取方法。23.在C语言中,引用数组元素时,其数组下标的数据类型允许是 _ 。(分数:1.00)A.整型常量B.整型表达式C.整型常量或整型表达式D.任何类型的表达式解析:评析C语言规定只能逐个引用数组元素而不能一次引用整个数组,数据元素的表示形式为数组名下标,下标可以是整型常量或整型表达式。24.设有以下声明语句 street ex int x;float y;char z; exampl

19、e; 则下面的叙述中不正确的是 _ 。(分数:1.00)A.struct是结构体类型的关键字B.example是结构体类型名C.x,y,z都是结构体成员名D.struct ex是结构体类型解析:评析example是结构体变量名。25.按条件f对关系R进行选择,其关系代数表达式为 _。 (分数:1.00)A.B.C.D.解析:评析选择运算是一个一元运算,关系R通过选择运算(并由该运算给出所选择的逻辑条件)后仍为一个关系。这个关系是由R中那些满足逻辑条件的元组所组成。如果关系的逻辑条件为f,则R满足f的选择运算可以写成F(R)。26.有以下程序段: int k=0; while(k=1)k+; w

20、hile循环执行的次数是 _。(分数:1.00)A.无限次B.有语法错,不能执行C.一次也不执行D.执行1次解析:评析C语言里关系表达式的等于应该是“”。一个等于号表示赋值,即这里面重复的把1赋给k,自然表达式k=1的值总为1,while后面的表达式恒为真,当然会进入死循环。27.下面的程序输出结果是 _。 #define r 16 #if r=16 void p(int a) printf(%x,a) ; #else void p(int a) printf(%d,a) ; #endif main() p(32); (分数:1.00)A.32B.20C.编译时错误D.运行时错误解析:评析 “

21、#define r 16”的作用是指定用标识符r来代替16,因此程序编译时只编译#if部分,故程序运行时,打印输出十六进制的32,即20。28.对长度为N的线性表进行顺序查找,在最坏情况下所需要的比较次数为 _。(分数:1.00)A.N+1B.NC.(N+1)/2D.N/2解析:评析在进行顺序查找过程中,如果被查的元素是线性表中的最后一个,或者被查元素根本不在线性表中,则为了查找这个元素需要与线性表中所有元素进行比较,这是顺序查找最坏的情况。解析:评析“ab?(bc?1:0):0”的求解顺序是:先判断ab是否为真,如果为真,则执行bc?1:0,如果bc为真,则(bc?1:0)的值为1,从而整个

22、表达式返回1,否则整个表达式返回0;如果a仁b,则表达式返回0。因此功能等价的语句应为 if(ab)&(bc)k=1;else k=0;。30.在下列选项中,_ 不是一个算法一般应该具有的基本特征。(分数:1.00)A.确定性B.可行性C.无穷性D.拥有足够的情报解析:评析一个算法,一般应具有以下几个基本特征:可行性确定性有穷性拥有足够的情报。31.当执行下面的程序时,如果输入ABC,则输出结果是 _。 #include stdio.h #include string.h main() char ss 10=12345; gets(ss);strcat(ss,6789); printf(%s/

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

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

25、.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 & 1)&(zz); (分数:1.00)A.0B.1C.2D.3解析:评析“&”是位运算符表示按位与运算,“&”是逻辑运算符当其两边的表达式都为真时返回真值。关系表达式 (x&1)&(zz),(x&1)为真,(zz)为真,两者相与,自然也为真,以整型输出,则输出1。36.若有定义int * p3

26、:,则以下叙述中正确的是 _。(分数:1.00)A.定义了一个基类型为int的指针变量p,该变量有三个指针B.定义了一个指针数组p,该数组含有三个元素,每个元素都是基类型为int的指针C.定义了一个名为*p的整型数组,该数组含有三个int类型元素D.定义了一个可指向一维数组的指针变量p,所指一维数组应具有三个int类型元素解析:评析由于运算符优先级比*高,int*p3;相当于int*(p3);,表示数组p的三个元素都是指针变量,且每个元素都是基类型为int的指针。37.有以下程序: main() int a; char c=10; float f=100.0;double x; a=f/=c*

27、=(x=6.5); printf(%d%d%3.1f%3.1f/n,a,c,f,x); 程序运行后的输出结果是 _ 。(分数:1.00)A.1 65 1 6.5B.1 65 1.5 6.5C.1 65 1.0 6.5D.2 65 1.5 6.5解析:评析本题求解步骤如下:先进行,c*=(x=6.5)” 的运算,由于x=6.5,表达式相当于c=c*6.5=10*6.5=65。再进行f/=65的运算,相当于f=f/65=100.0/65,由于f为单精度实型变量,因此f的值约为1.538462。然后进行a=f的运算,由于a为整型变量,因此a=1。最后将各个变量的值按照printf中的格式要求输出到屏

28、幕,注意变量f,x按照”%3.1f格式输出,即只输出一位小数。38.若执行以下程序时从键盘上输入9,则输出结果是 _。 main() int n; scanf(%d:,&n); if(n+10)printf(%d/n,n); else prinf (%d/n,n-); (分数:1.00)A.11B.10C.9D.8解析:评析n+是在语句结束后再加1,因此,if语句中相当于判断的是910,当然是执行if语句后面的printf语句,而这时,因为if语句被执行,n的值也被加1,所以在打印时,n值为10,而n-是在printf语句执行完毕后再减1的。39.以下程序的输出结果是 _。 #define SQR(X) X * X main() int a=16,k=2,m=1; a/=SQR(k/m)SQR(k+m); printf(%d/n,A) ; (分数:1.00)A.16B.2C.9D.1解析:评析 C语言在预编译时遇到带实参的宏名,则按命令行中指定的字符串从左到右进行置换。在做这题时,也不妨运用置换法。得到a/=k+m*k+m/k+m*

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1