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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

【计算机类职业资格】国家二级(C语言)机试历年真题试卷汇编19及答案解析.doc

1、国家二级(C 语言)机试历年真题试卷汇编 19及答案解析(总分:86.00,做题时间:90 分钟)一、选择题(总题数:40,分数:80.00)1.下列数据结构中,属于非线性结构的是( )。(分数:2.00)A.循环队列B.带链队列C.二叉树D.带链栈2.算法的空间复杂度是指( )。(分数:2.00)A.算法在执行过程中所需要的计算机存储空间B.算法所处理的数据量C.算法程序中的语句或指令条数D.算法在执行过程中所需要的临时工作单元数3.下列数据结构中,能够按照“先进后出“原则存取数据的是( )。(分数:2.00)A.循环队列B.栈C.队列D.二叉树4.某二叉树共有 12个结点,其中叶子结点只有

2、 1个。则该二叉树的深度为(根结点在第 1层)( )。(分数:2.00)A.3B.6C.8D.125.下面不能作为结构化方法软件需求分析工具的是( )。(分数:2.00)A.系统结构图B.数据字典(DD)C.数据流程图(DFD 图)D.判定表6.下面不属于软件测试实施步骤的是( )。(分数:2.00)A.集成测试B.回归测试C.确认测试D.单元测试7.下面描述中不属于数据库系统特点的是( )。(分数:2.00)A.数据共享B.数据完整性C.数据冗余度高D.数据独立性高8.负责数据库中查询操作的数据库语言是( )。(分数:2.00)A.数据定义语言B.数据管理语言C.数据操纵语言D.数据控制语言

3、9.设数据元素的集合 D=1,2,3,4,5,则满足下列关系 R的数据结构中为线性结构的是( )。(分数:2.00)A.R=(1,2),(3,2),(5,1),(4,5)B.R=(1,3),(4,1),(3,2),(5,4)C.R=(1,2),(2,4),(4,5),(2,3)D.R=(1,3),(2,4),(3,5),(1,2)10.一般情况下,当对关系 R和 S进行自然连接时,要求 R和 S含有一个或者多个共有的( )。(分数:2.00)A.记录B.行C.属性D.元组11.以下关于结构化程序设计的叙述中正确的是( )。(分数:2.00)A.由三种基本结构构成的程序只能解决小规模的问题B.结

4、构化程序使用 goto语句会很便捷C.一个结构化程序必须同时由顺序、分支、循环三种结构组成D.在 C语言中,程序的模块化是利用函数实现的12.以下叙述中正确的是( )。(分数:2.00)A.书写源程序时,必须注意缩进格式,否则程序会有编译错误B.程序的主函数名除 main外,也可以使用 Main或_mainC.程序可以包含多个主函数,但总是从第一个主函数处开始执行D.在 C程序中,模块化主要是通过函数来实现的13.以下叙述中正确的是( )。(分数:2.00)A.只能在函数体内定义变量,其他地方不允许定义变量B.常量的类型不能从字面形式上区分,需要根据类型名来决定C.预定义的标识符是 C语言关键

5、字的一种,不能另作它用D.整型常量和实型常量都是数值型常量14.若有以下程序段: double x=51 6894: printf(“fn“,(int)(x*1000+05)(double)1000);则程序段的输出结果是( )。(分数:2.00)A.5170000B.5175000C.5169000D.516800015.以下定义语句中正确的是( )。(分数:2.00)A.int a=b=0;B.char A=65+1,b=b;C.float a=1,*b=&a,*c=&b;D.double a=00;b=11;16.若有以下程序: #includestdioh main() int a=一

6、 11,b=10; a=b=4; printf(“d dn“,a,b); 则程序的输出结果是( )。(分数:2.00)A.1 2B.一 1 2C.一 12D.1217.下面选项中关于位运算的叙述正确的是( )。(分数:2.00)A.位运算的对象只能是整型或字符型数据B.位运算符都需要两个操作数C.左移运算的结果总是原操作数据的 2倍D.右移运算时,高位总是补 018.若有以下程序: #includestdioh char fun(char x) return x*x+a; main() char a,b=0; for(a=0;a4;a+=1) b=fun(a);putchar(b); prin

7、tf(“n“); 则程序的输出结果是( )。(分数:2.00)A.abcdB.ABEJC.abejD.ABCD19.有以下程序: #includestdioh main() int i,j; for(i=1;i4;i+) for(j=i;j4;j+) printf(“d*d=d“,i,j,i*j); printf(“n“); 程序运行后的输出结果是( )。(分数:2.00)A.1*1=1 1*2=2 1*3=3 2*1=2 2*2=4 3*1=3B.1*1=1 1*2=2 1*3=3 2*2=4 2*3=6 3*3=9C.1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9D

8、.1*1=1 2*1=2 2*2=4 3*1=3 3*2=6 3*3=920.设有定义语句: double a,b,c; 若要求通过输入分别给 a、b、C 输入 1、2、3,输入形式如下(注:此处口代表一个空格): 口口 10 口口 20 口口 30回车 则能进行正确输入的语句是( )。(分数:2.00)A.scanf(“1f1f1f“,a,b,c);B.scanf(“1f1f1f“,&a,&b,&c);C.scanf(“fff“,&a,&b,&c);D.scanf(“51lf51lf5llf“,&a,&b,&c);21.若有以下程序: #includestdioh main() int a=

9、1,b=2,c=3,d=4; if(a=2)&(b=1)c=2; if(c=3)(d=一 1)a=5; printf(“d,d,d,dn“,a,b,c,d); 则程序的输出结果是( )。(分数:2.00)A.2,2,2,4B.2,1,2,一 1C.5,1,2,一 1D.1,2,3,422.有以下程序: #includestdioh main() double x=20,y; if(x00)y=00; else if(x50)&(!x) y=10(x+20); else if(x100)y=10x; else y=100; printf(“fn“,y); 程序运行后的输出结果是( )。(分数:2

10、.00)A.0000000B.0250000C.0500000D.100000023.有以下程序: #includestdioh main() int a=一 2,b=0; while(a+&+b); printf(“d,dn“,a,b); 程序运行后输出结果是( )(分数:2.00)A.0,2B.0,3C.1,3D.1,224.若有以下程序: #includestdioh main() int a=6,b=0,c=0; for(;a;)b+=a;a 一=+c;) printf(“d,d,dn“,a,b,c); 则程序的输出结果是( )。(分数:2.00)A.1,14,3B.0,14,3C.0

11、,18,3D.0,14,625.以下叙述中正确的是( )。(分数:2.00)A.一条语句只能定义一个数组B.每个数组包含一组具有同一类型的变量,这些变量在内存中占有连续的存储单元C.数组说明符的一对方括号中只能使用整型常量,而不能使用表达式D.在引用数组元素时,下标表达式可以使用浮点数26.有如下程序: #includestdioh #includestringh main() char a=“1234“,*b=“ABC“; printf(“d d d dn“,strlen(a),sizeof(a),strlen(b),sizeof(b); 程序运行后的输出结果是( )。(分数:2.00)A.

12、4 5 3 4B.4 3 2 1C.4 5 3 3D.4 5 1 327.有如下程序: #includestdioh main() if(0=0)putchar(X); if(0=0) putchar(Y); if(ab)putchar(Z); printf(“n“); 程序运行后的输出结果是( )。(分数:2.00)A.YZB.XYZC.XD.Y28.以下叙述正确的是( )。(分数:2.00)A.语句 int a43=1,2,4,5;是错误的初始化形式B.语句 int a43=1,2,4,5;是错误的初始化形式C.语句 int a3=1,2,4,5;是错误的初始化形式D.在逻辑上,可以把二维

13、数组看成是一个具有行和列的表格或矩阵29.设有某函数的说明为: int *func(int a10,int n); 则下列叙述中,正确的是( )。(分数:2.00)A.形参 a对应的实参只能是数组名B.说明中的 a10写成 a或*a,效果完全一样C.func的函数体中不能对 a进行移动指针(如 a+)的操作D.只有指向 10个整数内存单元的指针,才能作为实参传给 a30.有以下程序: #includestdioh int fun(int x,int y) if(x!=y)return(x+y)2); else return(x); main() int a=4,b=5,c=6; printf(

14、“dn“,fun(2*a,fun(b,c); 程序运行后的输出结果是( )。(分数:2.00)A.3B.6C.8D.1231.要求定义一个具有 6个元素的 int型一维数组,以下选项中错误的是( )。(分数:2.00)A.int N=6,aN;B.int a2*3=0;C.#define N 3 int aN+N;D.int a=1,2,3,4,5,6;32.以下叙述中正确的是( )。(分数:2.00)A.字符串常量 str1的类型是字符串数据类型B.有定义语句:char str1=“str1“;,数组 str1包含 4个元素C.下面的语句用赋初值的方式来定义字符串,其中,0不可缺少 char

15、 str1=s,t,r,1,0;D.字符数组的每个元素可存放一个字符,并且最后一个元素必须是0字符33.以下叙述中错误的是( )。(分数:2.00)A.当在程序的开头包含头文件 stdioh 时,可以给指针变量赋 NULLB.函数可以返回地址值C.改变函数形参的值,不会改变对应实参的值D.可以给指针变量赋一个整数作为地址值34.设有定义语句: float a10,x; 则以下叙述中正确的是( )。(分数:2.00)A.语句 a=&x;是非法的B.表达式 a+1是非法的C.三个表达式 a1、*(a+1)、*&a1表示的意思完全不同D.表达式*&a1是非法的,应该写成*(&(a1)35.有以下程序

16、: #includestdioh int fun(int n) int a; if(n=1)return 1; a=n+fun(n 一1); return a; main() printf(“dn“,fun(5); 程序的输出结果是( )。(分数:2.00)A.9B.14C.10D.1536.以下针对全局变量的叙述错误的是( )。(分数:2.00)A.全局变量的作用域是从定义位置开始至源文件结束B.全局变量是在函数外部任意位置上定义的变量C.用 extern说明符可以限制全局变量的作用域D.全局变量的生存期贯穿整个程序的运行期间37.以下叙述中正确的是( )。(分数:2.00)A.如果 p是指

17、针变量,则p 是不合法的表达式B.如果 p是指针变量,则*p 表示变量 p的地址值C.在对指针进行加、减算术运算时,数字 1表示 1个存储单元的长度D.如果 p是指针变量,则*p+1 和*(p+1)的效果是一样的38.有以下程序: #includestdioh #define N 2 #define M N+1 #define NUM(M+1)*M2 main() printf(“dn“,NUM); 程序运行后的输出结果是( )。(分数:2.00)A.4B.8C.9D.639.有以下程序: #includestdioh main() int a=2,c=5; printf(“a=d b=dn“

18、,a,c); 程序运行后的输出结果是( )。(分数:2.00)A.a=d b=dB.a=2 b=5C.a=d b=dD.a=2 b=540.设有如下语句: typedef struct Date int year; int month; int day; DATE; 则以下叙述中错误的是( )。(分数:2.00)A.DATE是用户说明的新结构体类型名B.struct Date是用户定义的结构体类型C.DATE是用户定义的结构体变量D.struct是结构体类型的关键字二、程序填空题(总题数:1,分数:2.00)41.下列给定程序中,函数 fun的功能是:计算 f(x)=1+x+ (分数:2.00

19、)_三、程序修改题(总题数:1,分数:2.00)42.下列给定程序中,函数 fun的功能是:将主函数中两个变量的值进行交换。例如,若变量 a中的值为8,b 中的值为 3,则程序运行后,a 中的值为 3,b 中的值为 8。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构! 试题程序: #includestdioh *found* void fun(int x,int y) int t; *found* t=x;x=y;y=t; void main() int a,b; a=8: b=3; fun(&a,&b); printf(“d

20、dn“,a,b); (分数:2.00)_四、程序设计题(总题数:1,分数:2.00)43.请编写函数 fun,其功能是:找出一维整型数组元素中最大的值及其所在的下标,并通过形参传回。数组元素中的值已在主函数中赋予。 主函数中 x是数组名,n 是 x中的数据个数,max 存放最大值,index存放最大值所在元素的下标。 注意:请勿改动主函数 main和其他函数中的任何内容,仅在函数fun的花括号中填入编写的若干语句。 试题程序: #includestdlibh #includestdioh #included timeh void fun(int a,int n,int*max,int*d) v

21、oid main() FILE *wf; int i,x20,max,index,n=10; int y20=4,2,6,8,11,5; srand(unsigned)time(NULL);for(i=0;in;i+) xi=rand()50; printf(“4d“,xi);*输出一个随机数组* printf(“n“); fun(x,n,&max,&index); printf(“Max=5d,Index=4dn“,max,index); * wf=fopen(“outdat“,“w“); fun(y,6,&max,&index); fprintf(wf,“Max=5d,Index=4d“,

22、max,index); fclose(wf); * (分数:2.00)_国家二级(C 语言)机试历年真题试卷汇编 19答案解析(总分:86.00,做题时间:90 分钟)一、选择题(总题数:40,分数:80.00)1.下列数据结构中,属于非线性结构的是( )。(分数:2.00)A.循环队列B.带链队列C.二叉树 D.带链栈解析:解析:线性结构的特点:有且只有一个根结点;每一个结点最多有一个前驱,也最多有一个后继。不满足线性结构条件的称为非线性结构,二叉树的非叶子结点最多可以用两个后继,属于非线性结构。2.算法的空间复杂度是指( )。(分数:2.00)A.算法在执行过程中所需要的计算机存储空间 B

23、.算法所处理的数据量C.算法程序中的语句或指令条数D.算法在执行过程中所需要的临时工作单元数解析:解析:算法的空间复杂度是指算法在执行过程中所需要的内存空间,因此本题答案为 A。3.下列数据结构中,能够按照“先进后出“原则存取数据的是( )。(分数:2.00)A.循环队列B.栈 C.队列D.二叉树解析:解析:栈是按“先进后出“的原则组织数据的;队列是按“先进先出”的原则组织数据的,因此本题答案为 B。4.某二叉树共有 12个结点,其中叶子结点只有 1个。则该二叉树的深度为(根结点在第 1层)( )。(分数:2.00)A.3B.6C.8D.12 解析:解析:二叉树中,度为 0的结点数等于度为 2

24、的结点数加 1,即 n2=n01,叶子结点即度为0,n0=1,则 n2=0,总结点数为 12=n0+n1+n2=1+n1+0,则度为 1的结点数 n1=11,所以深度为 12。故 D选项正确。5.下面不能作为结构化方法软件需求分析工具的是( )。(分数:2.00)A.系统结构图 B.数据字典(DD)C.数据流程图(DFD 图)D.判定表解析:解析:结构化方法软件需求分析工具主要有数据流图、数据字典、判定树和判定表。6.下面不属于软件测试实施步骤的是( )。(分数:2.00)A.集成测试B.回归测试 C.确认测试D.单元测试解析:解析:软件测试主要包括单元测试、集成测试、确认测试和系统测试。7.

25、下面描述中不属于数据库系统特点的是( )。(分数:2.00)A.数据共享B.数据完整性C.数据冗余度高 D.数据独立性高解析:解析:数据库系统的特点为高共享、低冗余、独立性高、具有完整性等,故 C选项错误。8.负责数据库中查询操作的数据库语言是( )。(分数:2.00)A.数据定义语言B.数据管理语言C.数据操纵语言 D.数据控制语言解析:解析:数据定义语言:负责数据的模式定义与数据的物理存取构建;数据操纵语言:负责数据的操纵,包括查询及增、删、改等操作;数据控制语言:负责数据完整性、安全性的定义与检查以及并发控制、故障恢复等功能。9.设数据元素的集合 D=1,2,3,4,5,则满足下列关系

26、R的数据结构中为线性结构的是( )。(分数:2.00)A.R=(1,2),(3,2),(5,1),(4,5)B.R=(1,3),(4,1),(3,2),(5,4) C.R=(1,2),(2,4),(4,5),(2,3)D.R=(1,3),(2,4),(3,5),(1,2)解析:解析:关系 R中的每个结点由两个部分构成,分别是数据域和指针域。选项 B中可以看出,元素序列为 54132,符合线性结构的条件。A 选项 2的前面有 1和 3两个数值,带有不确定性;C 选项2的后面有 4和 3两个数值;D 选项 1的后面有 3和 2两个数值。所以 B选项正确。10.一般情况下,当对关系 R和 S进行自然

27、连接时,要求 R和 S含有一个或者多个共有的( )。(分数:2.00)A.记录B.行C.属性 D.元组解析:解析:自然连接是一种特殊的等值连接,它满足以下条件:两关系间有公共域(属性);通过公共域的等值进行连接,故 C选项正确。11.以下关于结构化程序设计的叙述中正确的是( )。(分数:2.00)A.由三种基本结构构成的程序只能解决小规模的问题B.结构化程序使用 goto语句会很便捷C.一个结构化程序必须同时由顺序、分支、循环三种结构组成D.在 C语言中,程序的模块化是利用函数实现的 解析:解析:D 项正确,C 语言允许对函数单独进行编译,从而可以实现模块化。A 项错误,使用三种基本结构组成的

28、程序可以解决复杂的问题;B 项错误,使用 goto语句会使程序混乱,程序中应该尽量避免使用 goto语句;C 项错误,一个结构化程序没有必要同时由顺序、分支、循环三种结构组成。12.以下叙述中正确的是( )。(分数:2.00)A.书写源程序时,必须注意缩进格式,否则程序会有编译错误B.程序的主函数名除 main外,也可以使用 Main或_mainC.程序可以包含多个主函数,但总是从第一个主函数处开始执行D.在 C程序中,模块化主要是通过函数来实现的 解析:解析:C 语言的源程序中对缩进没有要求,所以 A选项错误。C 语言中区分大小写,main 函数不能写成 Main或_main,所以 B选项错

29、误。一个 C程序有且只有一个主函数,所以 C选项错误。13.以下叙述中正确的是( )。(分数:2.00)A.只能在函数体内定义变量,其他地方不允许定义变量B.常量的类型不能从字面形式上区分,需要根据类型名来决定C.预定义的标识符是 C语言关键字的一种,不能另作它用D.整型常量和实型常量都是数值型常量 解析:解析:变量可以定义在函数体外,也可以定义在函数体内,所以 A错误。常量的类型可以从字面形式上区分,比如 1为整型常量,10 为实型常量,a 为字符型常量,所以 B错误。预定义的标识符不是 C语言的关键字,所以 C错误。故 D选项正确。14.若有以下程序段: double x=51 6894:

30、 printf(“fn“,(int)(x*1000+05)(double)1000);则程序段的输出结果是( )。(分数:2.00)A.5170000B.5175000C.5169000 D.5168000解析:解析:本题考查强制类型转换与输出格式。f 的输出格式是以带小数点的数学形式输出浮点数。首先计算 x*1000,结果为 516894,加 05 为 516944,然后进行强制类型转换,转换成整型为5169,然后除以双精度数据 1000,结果为双精度数据 5169,输出时按照1 的格式输出,所以输出结果为 5169000。15.以下定义语句中正确的是( )。(分数:2.00)A.int a

31、=b=0;B.char A=65+1,b=b; C.float a=1,*b=&a,*c=&b;D.double a=00;b=11;解析:解析:定义变量时不能连等,所以 A错误;C 选项中,b 是指针,c 定义为指向指针的指针才可以接受b,所以 C错误;D 选项,b=11 前没有类型名,所以错误。16.若有以下程序: #includestdioh main() int a=一 11,b=10; a=b=4; printf(“d dn“,a,b); 则程序的输出结果是( )。(分数:2.00)A.1 2B.一 1 2 C.一 12D.12解析:解析:先计算 b=4,即 b=b4,结果为 2,然

32、后计算 a=2,结果为一 1,最后输出 a的值为一1,b 的值为 2,故 B选项正确。17.下面选项中关于位运算的叙述正确的是( )。(分数:2.00)A.位运算的对象只能是整型或字符型数据 B.位运算符都需要两个操作数C.左移运算的结果总是原操作数据的 2倍D.右移运算时,高位总是补 0解析:解析:本题考查位运算。按位取反只需要一个操作数,所以 B选项错误;左移一位是原操作数的 2倍,其他情况不是,比如左移两位就是原操作数的 4倍,所以 C选项错误;右移运算时,高位在某些情况下不是补 0,所以 D选项错误。故 A选项正确。18.若有以下程序: #includestdioh char fun(

33、char x) return x*x+a; main() char a,b=0; for(a=0;a4;a+=1) b=fun(a);putchar(b); printf(“n“); 则程序的输出结果是( )。(分数:2.00)A.abcdB.ABEJC.abej D.ABCD解析:解析:该题首先初始化变量 a和 b,通过 for循环语句使得 a取值为 0、1、2、3,fun 函数的功能是将 a*a+a的值返回给 b,即 b为 a、b、e、j。最后通过字符输出函数 putchar()将 b输出。故 C选项正确。19.有以下程序: #includestdioh main() int i,j; f

34、or(i=1;i4;i+) for(j=i;j4;j+) printf(“d*d=d“,i,j,i*j); printf(“n“); 程序运行后的输出结果是( )。(分数:2.00)A.1*1=1 1*2=2 1*3=3 2*1=2 2*2=4 3*1=3B.1*1=1 1*2=2 1*3=3 2*2=4 2*3=6 3*3=9 C.1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9D.1*1=1 2*1=2 2*2=4 3*1=3 3*2=6 3*3=9解析:解析:考查 for循环及其嵌套。第一个 for循环用来控制输出行数,第二个 for循环用来控制每行输出的表达式个数

35、。 当 i=1,j=1 时,第一行输出 3个表达式为: 1*1=1 1*2=2 1*3=3; 当 i=2,j=2 时,第二行输出 2个表达式为: 2*2=4 2*3=6: 当 i=3,j=3 时,第三行输出 1个表达式为: 3*3=9: 当i=4时,第一个 for循环中判断条件不成立,循环结束,整个程序执行完毕。因此答案选 B。20.设有定义语句: double a,b,c; 若要求通过输入分别给 a、b、C 输入 1、2、3,输入形式如下(注:此处口代表一个空格): 口口 10 口口 20 口口 30回车 则能进行正确输入的语句是( )。(分数:2.00)A.scanf(“1f1f1f“,a

36、,b,c);B.scanf(“1f1f1f“,&a,&b,&c); C.scanf(“fff“,&a,&b,&c);D.scanf(“51lf51lf5llf“,&a,&b,&c);解析:解析:本题考查 scanf函数的格式化输入。scanf 函数的一般形式为 scanf(格式控制,变量 1地址,变量 2地址,)。其中,格式字符串要与数据类型保持一致,由于变量为 double型,所以格式字符串中应为1f,后面应该为变量地址,所以需要加上符号&,故 B选项正确。21.若有以下程序: #includestdioh main() int a=1,b=2,c=3,d=4; if(a=2)&(b=1)c

37、=2; if(c=3)(d=一 1)a=5; printf(“d,d,d,dn“,a,b,c,d); 则程序的输出结果是( )。(分数:2.00)A.2,2,2,4B.2,1,2,一 1C.5,1,2,一 1 D.1,2,3,4解析:解析:第一个 if语句的判断条件是逻辑与表达式,只有运算对象均非零,结果才为真。执行第一个 if判断条件,均为赋值表达式,第一个运算对象 a=2非零,判断第二个表达式 b=1也非零,所以条件成立,执行 c=2的赋值操作。执行第二个 if判断条件的逻辑或表达式,只要有一个对象非零,结果就是真。本条件中 c=3运算对象为假,所以需要判断第二个运算对象 d=一 1,结果

38、为一 1,非零,条件成立,执行 a=5的操作,所以 a值为 5,b 值为 1,c 值为 2,d 值为一 1。22.有以下程序: #includestdioh main() double x=20,y; if(x00)y=00; else if(x50)&(!x) y=10(x+20); else if(x100)y=10x; else y=100; printf(“fn“,y); 程序运行后的输出结果是( )。(分数:2.00)A.0000000B.0250000C.0500000 D.1000000解析:解析:本题重点考查 if语句,变量 x和 y均为 double类型,由于变量 x赋值为

39、20,因此执行if(x50)&(!x),即条件为 0,继续执行 if(x100),条件为真,即执行 y=10x;。依据printf()函数输出类型,f 是以小数形式输出单双精度实数。故 C选项正确。23.有以下程序: #includestdioh main() int a=一 2,b=0; while(a+&+b); printf(“d,dn“,a,b); 程序运行后输出结果是( )(分数:2.00)A.0,2B.0,3C.1,3D.1,2 解析:解析:本题考查 while语句。while 语句的语义是:计算表达式的值,当值为真(非 0)时,执行循环体语句。a+即 a先参与运算后,a 的值再自

40、增 1。+b 即 b先自增 1,然后再参与其他运算。当表达式的值为 0时,退出循环,最后输出 a和 b的值为 1和 2。故 D选项正确。24.若有以下程序: #includestdioh main() int a=6,b=0,c=0; for(;a;)b+=a;a 一=+c;) printf(“d,d,dn“,a,b,c); 则程序的输出结果是( )。(分数:2.00)A.1,14,3B.0,14,3 C.0,18,3D.0,14,6解析:解析:for 循环的判断条件是只要 a为 0就退出循环体。初始 a的值为 6,满足条件,执行完循环体,b 的值为 6,a 一=+c,即 a=a一(+c),所

41、以 a的值为 5,c 的值为 1。第二次循环后 b的值为 11,a的值为 3,c 的值为 2。第三次也是最后一次循环后,a 的值为 0,b 的值 14,c 的值为 3。故 B选项正确。25.以下叙述中正确的是( )。(分数:2.00)A.一条语句只能定义一个数组B.每个数组包含一组具有同一类型的变量,这些变量在内存中占有连续的存储单元 C.数组说明符的一对方括号中只能使用整型常量,而不能使用表达式D.在引用数组元素时,下标表达式可以使用浮点数解析:解析:A 选项中,一条语句只能定义一个数组是不准确的,可以通过一条语句定义多个数组;C 选项中,数组说明符的一对方括号中可以是整型常量,也可以是整型

42、常量表达式;D 选项中,在引用数组元素时,下标表达式必须是整型的。故 B选项正确。26.有如下程序: #includestdioh #includestringh main() char a=“1234“,*b=“ABC“; printf(“d d d dn“,strlen(a),sizeof(a),strlen(b),sizeof(b); 程序运行后的输出结果是( )。(分数:2.00)A.4 5 3 4 B.4 3 2 1C.4 5 3 3D.4 5 1 3解析:解析:对于字符数组 a,含有 4个元素,所以 strlen为 4,而 sizeof包括最后隐藏的0(结束符),故 sizeof有

43、 5个。对于字符串 b,strlen 为 3,关键是 sizeof,这里的 sizeof不再是指数组的长度,因为 b是一个地址值,整型数据,所以占用了 4个字节。27.有如下程序: #includestdioh main() if(0=0)putchar(X); if(0=0) putchar(Y); if(ab)putchar(Z); printf(“n“); 程序运行后的输出结果是( )。(分数:2.00)A.YZB.XYZC.X D.Y解析:解析:本题考查字符的 ASCII码值。其中字符0的 ASCII码值是 0,字符0的 ASCII码值是48,字符a和字符b的 ASCII码值分别是 9

44、7、98,所以程序当中的三个 if判断语句,只有第一个判断条件成立,然后执行 putchar函数,输出 X。故 C选项正确。28.以下叙述正确的是( )。(分数:2.00)A.语句 int a43=1,2,4,5;是错误的初始化形式B.语句 int a43=1,2,4,5;是错误的初始化形式C.语句 int a3=1,2,4,5;是错误的初始化形式D.在逻辑上,可以把二维数组看成是一个具有行和列的表格或矩阵 解析:解析:二维数组在初始化时,可以省略第 1维,但是不可以省略第 2维,可以为部分数组元素初始化。A 选项、B 选项和 C选项内的初始化都没有错误。故 D选项正确。29.设有某函数的说明

45、为: int *func(int a10,int n); 则下列叙述中,正确的是( )。(分数:2.00)A.形参 a对应的实参只能是数组名B.说明中的 a10写成 a或*a,效果完全一样 C.func的函数体中不能对 a进行移动指针(如 a+)的操作D.只有指向 10个整数内存单元的指针,才能作为实参传给 a解析:解析:考查数组名作为函数参数。数组名作为函数参数时,只传递数组的首地址而不检查形参数组的长度,所以形参表中可以不给出形参数组的长度,形参数组和实参数组长度也可以不同,选项 D错;a10、a、*a 做形参都是接受实参数组首地址,效果一样,B 正确。传递给形参的实参可以是数组名,还可以

46、是指向该数组的指针变量,选项 A错。数组名可以看做一个指针常量,对其进行自加自减运算相当于指针变量的自加自减,选项 C错。答案选 B。30.有以下程序: #includestdioh int fun(int x,int y) if(x!=y)return(x+y)2); else return(x); main() int a=4,b=5,c=6; printf(“dn“,fun(2*a,fun(b,c); 程序运行后的输出结果是( )。(分数:2.00)A.3B.6 C.8D.12解析:解析:考查函数的调用。输出结果为 fun(2*a,fun(b,c)=fun(8,5)=6,答案选 B。31.要求定义一个具有 6个元素的 int型一维数组,以下选项中错误的是( )。(分数:2.00)A.int N=6,aN; B.int a2*3=0;C.#define N 3 int aN+N;D.int a=1,2,3,4,5,6;解析:解析:数组定义中

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