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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

[计算机类试卷]国家二级(C语言)机试模拟试卷157及答案与解析.doc

1、国家二级( C语言)机试模拟试卷 157及答案与解析 一、选择题 1 下列叙述中正确的是 ( )。 ( A)算法的效率只与问题的规模有关,而与数据的存储结构无关 ( B)算法的时间复杂度是指执行算法所需要的计算工作量 ( C)数据的逻辑结构与存储结构是一一对应的 ( D)算法的时间复杂度与空间复杂度一定相关 2 栈和队列的共同点是 ( )。 ( A)都是先进后出 ( B)都是先进先出 ( C)只允许在端点处插入和删除元素 ( D)没有共同点 3 对于现实世界中事物的特征,在实体 -联系模型中 使用 ( )。 ( A)属性描述 ( B)关键字描述 ( C)二维表格描述 ( D)实体描述 4 下列

2、关于队列的叙述中正确的是 ( )。 ( A)在队列中只能插入数据 ( B)在队列中只能删除数据 ( C)队列是 “先进先出 ”的线性表 ( D)队列是 “先进后出 ”的线性表 5 下列选项中属于面向对象设计方法主要特征的是 ( )。 ( A)继承 ( B)自顶向下 ( C)模块化 ( D)逐步求精 6 关系表中的每一横行称为一个 ( )。 ( A)元组 ( B)字段 ( C)属性 ( D)码 7 下列对软件测试和软件调试叙述中错误的是 ( )。 ( A)严格执行测试计划,排除测试的随意性 ( B)软件调试的目的是改正软件错误 ( C)软件测试不需要考虑测试成本 ( D)正确的执行测试用例 8

3、下列测试方法中, ( )均属于白盒测试的方法。 ( A)语句覆盖法和边界值分析法 ( B)条件覆盖法和基本路径测试法 ( C)边界值分析法和代码检查法 ( D)等价类划分和错误推测法 9 负责数据库中查询操作的数据库语言是 ( )。 ( A)数据定义语言 ( B)数据管理语言 ( C)数据操纵语言 ( D)数据控制语言 10 一般情况下,当对关系 R和 S进行自然连接时,要求 R和 S含有一个或者多个共有的 ( )。 ( A)记录 ( B)行 ( C)属性 ( D)元组 11 以下说法中正确的是 ( )。 ( A) C语言程序总是从第一个定义的函数开始执行 ( B)在 C语言程序中,要调用的函

4、数必须放在 main()函数中定义 ( C) C语言程序总是从 main()函数开始执行 ( D) C语言程序中的 main()函数必须放在程序的开始部分 12 以下叙述中正确的是 ( )。 ( A)在算法设计时,可以把复杂任务分解成一些简单的子任务 ( B)在 C语言程序设计中,所有函数必须保存在一个源文件中 ( C)只要包含三种基本结构的算法就是结构化程序 ( D)结构化程序必须包含所有三种基本结构,缺一不可 13 以下叙述中正确的是 ( )。 ( A)字符变量在定义时不能赋初值 ( B)字符常量可以参与任何整数运算 ( C)同一英文字母的大写和小写形式代表的是同一个字符常量 ( D)转义

5、字符用 符号开头 14 表达式 a+=a-=a=9的值是 ( )。 ( A) 0 ( B) -9 ( C) 18 ( D) 9 15 以下各项中,当 x为大于 1的奇数时,值为 0的表达式是 ( )。 ( A) x 2=0 ( B) x 2 ( C) x 21=0 ( D) x 2=1 16 若有定义语句: int x=12, y=8, z; 在其后执行语句: z=0 9+x y: 则 z的值为 ( )。 ( A) 1 ( B) 1 9 ( C) 2 ( D) 2 4 17 有以下程序段: int m=33, n=66; m=m n; n=n m; m=m n; 执行上述语句后, m和 n的值

6、分别是 ( )。 ( A) m=66, n=33 ( B) m=33, n=66 ( C) m=66, n=66 ( D) m=33, n=33 18 设有定义: double x=2 12;,以下不能完整输出变量 x值的语句是 ( )。 ( A) printf(“x= 5 0f n“, x); ( B) printf(“x= f n“, x); ( C) printf(“x= 1f n“, x); ( D) printf(“x= 0 5f n“, x); 19 有以下程序: #include stdio h main() intx =1, y=0; if(!x)y+; rise if(x=0

7、) if(x)y+=2; else y+=3; printf(“ d n“, y); 程序运行后的输出结果是 ( )。 ( A) 0 ( B) 2 ( C) 1 ( D) 3 20 有以下程序: #include stdio h void fun(int*p, int*q) p=p+1; *q=*q+1; main() int m=1, n=2, *r=&m; fun(r, &n); printf(“ d, d n“, m, n); 程序运行后的输 出结果是 ( )。 ( A) 1, 3 ( B) 2, 3 ( C) 1, 4 ( D) 1, 2 21 有以下程序: #include stdi

8、o h #define S(x)x*x void main() int k=5, j=2; printf(“ d, d n“, S(k+j+2), S(j+k+2); 程序的运行结果是 ( )。 ( A) 21, 18 ( B) 81, 81 ( C) 21, 21 ( D) 18, 18 ( E) D 22 有以下程序 #include stdio h main() int i=1; for(printf(“ d“, i); i 4; i+) printf(“ d“, i); printf(“ n“); 程序运行后的输出结果是 ( )。 ( A) 0123 ( B) 123 ( C) 112

9、3 ( D) 001 23 有以下程序: #include stdio h main() int i, array6=1, 5, 0, 4; for(i=0; i 5; i+) printf(“ d“, arrayi); printf(“ n“); 程序运行后的输出结果是 ( )。 ( A) 0 4 0 4 0 ( B) 1 5 0 4 0 ( C) 1 5 5 4 0 ( D) 1 2 1 2 0 24 以下数组定义中错误的是 ( )。 ( A) int x23=1, 2, 3, 4, 5, 6; ( B) int x 3=0; ( C) int x 3=1, 2, 3, 4, 5, 6;

10、( D) int x23=1, 2, 3, 4, 5, 6; 25 C语言程序中,运算对象必须是整型数的运算符是 ( )。 ( A) & ( B) ( C) ( D) * 26 对于函数声明: void fun(float array , int*ptr); 以下叙述中正确的是 ( )。 ( A)函数参数 array、 ptr都是指针变量 ( B)函数声明有语法错误,参数 array缺少数组大小定义 ( C)调用函数时, array数组中将存储从实参中复制来的元素值 ( D)调用函数时, array数组的元素和 ptr都是按值传送 27 下列定义数组的语句中,正确的是 ( )。 ( A) in

11、t x ; ( B) int N=10; int xN; ( C) int x010 ; ( D) #define N10 int xN; 28 有以下程序: #include stdio h main() int b33=0, 1, 2, 0, 1, 2, 0, 1, 2, i, j, t=1; for(i=0; i 3; i+) for(j=i; j =i; j+) t+=bij; pfinff(“ d n“, t); 程序运行后的输出结果是 ( )。 ( A) 4 ( B) 3 ( C) 1 ( D) 9 29 有以下程序段: int x, i; mr(i=1; i =100; i+)

12、$canf(“ d“, &x); if(x 0)continue; pfinff(“ 4d n“, x); 下列各项中,针对上述程序段的描述正确的是 ( )。 ( A)最多可以输出 100个非负整数 ( B)当 x 0时结束整个循环 ( C)当 x =0时没有任何输出 ( D) pfinff函数调用语句总是被跳过 30 有以下程序: #include stdio h #define N4 void fun(int aN) int i; mr(i=0; i N; i+) a0i+=aN-1N-1-i; void main() int xNN: 1, 2, 3, 4, 5, 6, 7, 8, 9,

13、 10, 11, 12, 13, 14, 15,16, i; fun(x); mr(i=0; i N; i+) pfintf(“ d“, xii); pfinff(“ n“); 程序运行后的输 ( A) 17 6 11 16 ( B) 1 6 11 16 ( C) 4 7 10 13 ( D) 5 13 21 29 31 有以下程序: #include stdio h int a=1, b=2; void fun1(int a, int b) pnnff(“ d d“, a, b); void fun2() a=3; b=4; main() fun1(5, 6); fun2(); pfintf

14、(“ d d n“, a, b); 程序运行后的输出结果是 ( )。 ( A) 5 6 3 4 ( B) 3 4 5 6 ( C) 1 2 5 6 ( D) 5 6 1 2 32 有以下程序: #include stdio h void fun(char*a, char*b) while(*a=*)a+; while(*b=*a) b+; a+; main() char *s=“*a*b*“ t80; fun(s, t); puts(t); 程序的运行结果是 ( )。 ( A) a*b* ( B) a*b ( C) *a*b ( D) ab 33 以下叙述中正确的是 ( )。 ( A)语句 p

15、=NULL;执行后,指针 p指向地址为 0的存储单元 ( B)指针变量只能通过求地址运算符 &来获得地 址值 ( C)语句 p=NULL;与 p= 0;是等价的语句 ( D) int*p1;、 int*p2;、 int*p3;都是合法的定义指针变量的语句 34 设有定义: int a=64, b=8;,则表达式 (a&b)和 (a|b)&(a|b)的值分别为 ( )。 ( A) 1和 1 ( B) 1和 0 ( C) 0和 1 ( D) 0和 0 35 有以下程序: #include stdio h main() int a=2, c=5; printf(“a= d, b= d n“, a,

16、c); 程序的输出结果是 ( )。 ( A) a=2, b=5 ( B) a= 2, b= 5 ( C) a= d, b= d ( D) a= d, b= d 36 有以下程序: #include stdio h main() char*s=“12134“; int k=0, a=0; while(sk+1) k+; if(k 2=O) a=a+(sk-0+1); continue; a=a+(sk-0); printf(“k= d a= d n“, k, a); 程序运行后的输出结果是 ( )。 ( A) k=5 a=15 ( B) k=4 a=12 ( C) k=6 a=11 ( D) k

17、=3 a=14 37 有以下程序段: struet float weight; char sex; char name10; rec, *ptr; ptr=&rec; 从键盘读入字符串给结构体变量 Fee的 name成员,错误的输入语句是 ( )。 ( A) scanf(“ s“, rec- name); ( B) scanf(“ s“, tec name); ( C) scanf(“ s“, (*ptr) name); ( D) scanf(“ s“, ptr- name); 38 若有以下程序: #include stdio h void fun(int a, int n) int i,

18、j, t; for(i=1; i n; i+=2) for(j=i+2; j n; j+=2) if(ai aj) t=ai; ai=aj; aj=t; main() int c10=10, 9, 8, 7, 6, 5, 4, 3, 2, 1, i; fun(c, 10); for(i=0; i 10; i+) printf(“ d, “, ci); printf(“ n“); ( A) 1, 10, 3, 8, 5, 6, 7, 4, 9, 2, ( B) 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, ( C) 2, 9, 4, 7, 6, 5, 8, 3, 10, 1, (

19、 D) 10, 1, 8, 3, 6, 5, 4, 7, 2, 9, 39 有以下程序: #include stdio h int sum(int m) static intn=1; return n+=m: main() int i; for(i=1; i =1; i+) printf(“ d, “, sum(i); printf(“ n“); 程序运行后的输出结果是 ( )。 ( A) 2, ( B) 1, ( C) 4, ( D) 3, 40 设文件指针 fp已定义,执行语句 fp=fopen(“file“, “w“);后,以下针对文本文件 file操作叙述选项中正确的是 ( )。 (

20、A)只能写不能读 ( B)写操作结束后可以从头开始读 ( C)可以在原有内容后追加写 ( D)可以随意读和写 二、程序填空题 41 下列给定程序中,函数 fun的功能是:把形参 s所指字符串中 下标为奇数的字符右移到下一个奇数位置,最右边被移出字符串的字符绕回放到第一个奇数位置,下标为偶数的字符不动 (注:字符串的长度大于等于 2)。 例如,形参 s所指字符串为 “abcdefgh“,执行结果为 “ahcbedgf“。 请在下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。 注意:不得增行或删行,也不得更改程序的结构 ! 试题程序: #include stdio h void fun

21、(char*s) int i, n, k; char c; 三、程序修改题 42 下列给定程序中,函数 fun的 功能是:找出一个大于给定整数 m且紧随 m的素数,并作为函数值返回。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构 ! 试题程序: #include stdlib h #include conio h #include stdio h int fun(int m) int i, k; for(i=m+1; i+) for(k=2; k i; k+) *found* if(i k!=0) 四、程序设计题 43 编写函数

22、 fun,其功能是:求出 1 1000之间能被 7或 11整除,但不能同时被7和 11整除的所有整数,并将其放在 a所指的数组中,通过 n返回这些数的个数。 注意:请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 试题程序: #include stdio h void fun(int*a, int*n) main() int aa1000, n, k; void NONO( ); fun(aa, &n); for(k=0; k n; k+) if(k+1) 国家二级( C语言)机试模拟试卷 157答案与解析 一、选择题 1 【正确答案】 B 【试

23、题解析】 采用不同的存储结构,数据处理效率是不同的, A选项错误;算法的时间复杂度是指算法在计算机内执行时所需时间的度量,空间复杂度是指算法在计算机内执行时所需存储空间的度量,二者不一定相关, B选项正确, D选项错误;数据的逻辑结构在计算机存储空间的存放形式称为数据的存储结构,二者并非一一对应, C选项错误。 2 【正确答案】 C 【试题解析】 栈和队列都是一种特殊的操作受限的线性表,只允许在端点 处进行插入和删除。二者的区别是:栈只允许在表的一端进行插入或删除操作,是一种“后进先出 ”的线性表;而队列只允许在表的一端进行插入操作,在另一端进行删除操作,是一种 “先进先出 ”的线性表。 3

24、【正确答案】 A 【试题解析】 在实体一联系模型中,用属性来描述现实世界中对象的属性所表示的对象的性质、特征和行为。 4 【正确答案】 C 【试题解析】 队列是一种操作受限的线性表。它只允许在线性表的一端进行插入操作,另一端进行删除操作。其中,允许插入的一端称为队尾 (rear),允许删除的一端称为队首 (front)。队列具有 “先进先出 ”的特点,它是按 “先进先出 ”的原则组织数据的。 5 【正确答案】 A 【试题解析】 面向对象设计方法的基本概念有对象、类和实例、消息、继承与多态性,所以答案为 A。 6 【正确答案】 A 【试题解析】 关系表中,每一行称为一个元组,对应表中的一条记录;

25、每一列称为一个属性,对应表中的一个字段;在二维表中凡能唯一标识元组的最小属性集称为该表的键或码。 7 【正确答案】 C 【试题解析】 软件测试定义:使用人工或自动手段来运行或测定某个系统的过程,其目 的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。软件测试的目的:发现错误而执行程序的过程,是评测软件质量的重要过程和手段。软件调试的目的是诊断并改正程序中的错误。测试必须对整个软件总体进行评估。软件测试需要考虑测试成本,软件测试成本也要计入软件开发成本中。故 C选项不正确。 8 【正确答案】 B 【试题解析】 白盒测试也称结构测试或逻辑驱动测试,它是按照程序内部的结构测试程序,

26、通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进行,检验程序中的每条通路是否都能按预定要求正 确工作。白盒测试的测试方法有代码检查法、静态结构分析法、静态质量度量法、逻辑覆盖法、基本路径测试法、域测试、符号测试、路径覆盖和程序变异。黑盒测试也称为功能测试,着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。黑盒测试方法包括等价类划分法、边界值分析法、错误推测法、因果图法、判定表驱动法、正交试验设计法、功能图法等。故 B选项正确。 9 【正确答案】 C 【试题解析】 数据定义语言:负责数据的模式定义与数据的物理存取构建;数据操纵语言:负责数据的操纵,包括查询及

27、增、删、改 等操作;数据控制语言:负责数据完整性、安全性的定义与检查,以及并发控制、故障恢复等功能。 10 【正确答案】 C 【试题解析】 进行自然连接时要求两个关系具有相同列,即属性。 11 【正确答案】 C 【试题解析】 C程序总是从 main()函数开始执行, A选项错误, C选项正确;要调用的函数必须放在 main()函数中是函数嵌套,所有程序执行是从 main()函数开始的,被调用的函数在调用之前要进行声明, B选项错误;调用的函数可以放在main()函数之前, D选项错误。故正确答案为 C。 12 【正确答案】 A 【试题解析】 C语言程序中,函数不一定都放在同一个源文件中,可以分

28、别放在不同源文件中,通过 #include命令来引用,所以 B错误;结构化程序可以包含三种基本结构中的一种或几种,所以 C、 D选项错误。 13 【正确答案】 B 【试题解析】 A选项中,字符变量在定义时可以赋初值; C选项中,同一英文字母的大写和小写形式代表地是不同的字符常量; D选项中,转义字符以反斜线“ ”开头的。故 B选项正确。 14 【正确答案】 A 【试题解析】 赋值语句,从右向左执行,先执行 a=9, 再执行 a-=a, a为 0,再执行 a+=a,结果仍为 0。 15 【正确答案】 A 【试题解析】 当 x为大于 1的奇数时, x 2=0表达式为 0,所以答案为 A。 16 【

29、正确答案】 A 【试题解析】 x、 y为整数, x y值为 1,加上 0 9为 1 9,赋值给整型变量z,接收后为 1。 17 【正确答案】 A 【试题解析】 m=m n; n=n m; m=m n;语句实现了 m和 n的交换。故答案为 A。 18 【正确答案】 A 【试题解析】 本题考查 printf函数的格式输出。 “格式控制字符 串 ”部分为 “ f”表示按照浮点型输出,选项 B正确;加入长度格式符 1即 “ 1”表示按照双精度浮点型输出,选项 C正确;若要控制输出精度,则需以 “ ”开头,后跟十进制整数,如 “ 2f”或 “ 0 2f”,选项 D正确;控制输出宽度则是用整数表示,如 “

30、5f”。选项 A中 “ 5 0f”表示输出宽度为 5,右对齐,小数点后保留位数为 0,所以结果输出为 2,不能完整输出 x,答案选 A。 19 【正确答案】 A 【试题解析】 在该题中,选择结构的表达式都不成立,所以整个选择语句都没有执行, y值没有发生改变,答案选 A。 20 【正确答案】 A 【试题解析】 语句 p=p+1;只改变指针 p的地址,与 p的内容无关,所以 m没有改变,而语句 *q=*q+1;是改变该指针所指地址中的内容,所以 n变为 3, m不变。 21 【正确答案】 A 【试题解析】 带参数的宏的调用格式:宏名 (实参表 ),替换过程是:用宏调用提供的实参字符串,直接替换宏

31、定义命令行中相应形参字符串,非形参字符保持不变。 s(k+j+2)被 S换成 k+j+2*k+j+2,计算时先计算 2*k,结果为 21; S(j+k+2)被S换成 j+k+2*j+k+2,计算时先计算 2*j,结果为 18。程序的运行结果是 21, 18。 22 【正确答案】 C 【试题解析】 for语句的一般形式为 “for(表达式 1;表达式 2;表达式 3)循环体语句 ”,其执行流程是先计算表达式 1,之后计算表达式 2,根据表达式 2的值来判定是否进行循环,若为真,则执行循环体,循环体执行完毕之后再计算表达式 3的值。整个循环过程中,表达式的值只会执行一次,而表达式 2、 3以及循环

32、体每次循环都会执行,所以答案选 C。 23 【正确答案】 B 【试题解析】 本题主要考查一维数组的输出。由于数组中有 6个元 素,但初始化数组的时候只给出 4个元素,所以 array5=0, array6=0,前面几位元素依次输出,不够位数补 0,所以选项 B正确。 24 【正确答案】 D 【试题解析】 二维数组的第一维数据表示行数,第二维数据表示列数,所以x23中的数据应为两行三列,和定义内容不符,选项 D错误,答案选 D。 25 【正确答案】 C 【试题解析】 取余运算是二目运算符,且要求运算对象必须为整数,故 C选项正确。 26 【正确答案】 A 【试题解析】 本题考查函数声明的具体规则

33、。 27 【正确答案】 D 【试题解析】 定义一维数组 (没有初始化 )时,数组的维数需为常量或者常量表达式,不可以用变量,更不可以省略,所以答案选 D。 28 【正确答案】 A 【试题解析】 考查二维数组的遍历。 t=t+b0b00+b1b11+b2b22=t+b00+b11+b22=1+0+1+2=4,所以答案选 A。 29 【正确答案】 A 【试题解析】 continue语句的功能是结束本次循环,而不是终止整个循环 的执行,所以 B选项错误;当 x =0时,程序执行 printf(“ 4d n“, x);语句,所以C、 D选项错误。因为 for循环的循环次数 i是从 1到 100,如果先

34、后输入 100个非负整数,则这些数将全部输出。 30 【正确答案】 A 【试题解析】 按照二维数组的访问方式逐个查找,然后总结规律是这种题型常用的解决方法。 31 【正确答案】 A 【试题解析】 在一个源文件中,如果外部变量和局部变量同名,则在该局部变量的作用域内,该外部变量会被 “屏蔽 ”,所以函数 fun1()输出的是局部变量 a、 b的值: 5 6; fun2()改变的是全局变量 a、 b的值,输出结果为 3 4,答案选 A。 32 【正确答案】 A 【试题解析】 注意两个 while,第一个是判断相等 “=”,第二个是赋值 “=”,第一个循环终止的条件是指针指向的字符不为 “*”,就会

35、在遇到字符 “a”时停止,第二个循环把 a指针所指的内容依次赋给了 b指针指向的内容,直到字符串结束时终止。所以结果就是字符串的后半段,选项 A正确。 33 【正确答案】 D 【试题解析】 考查指针变量。指针变量的定义形式为:类型名 *指针变量名,表示指向某一个变量的 指针,如果定义形式为:类型名 *指针变量名,则表示指向某一个指针变量的指针,所以 D选项正确。指针变量本身存储的是其指向的变量的地址值,不需要使用求地址运算符 &来获得地址, B选项错误。 p=NULL;是将空指针赋给指针变量,表示该指针变量当前未指向任何变量,语句 p= 0;本身不正确,两者不等,故选项 A、 C错。答案选 D

36、。 34 【正确答案】 A 【试题解析】 常用的位运算符有: “ ”按位求反, “ ”左移, “ ”右移,“&”按位与, “ ”按位异或, “|”按位或。 逻辑或运算符 “|”,计算左表达式值,如 果为真,则不计算右表达式值,而整个表达式为真;若左表达式为假,再计算右表达式值,然后做或运算。逻辑与运算符“&”,计算左表达式值,如果为假,则不计算右表达式值,而整个表达式为假;若左表达式为真,再计算右表达式值,然后做与运算。 a=64换算为二进制为 1000000, b=8换算为二进制为 1000, a&b=0为假, a&b为真, (a&b)|(a&b)为真,值为 1。 a|b=1001000为真

37、, a|b为真,则 (a|b)&(a|b)为真,值为 1。故 A选项正确。 35 【正确答案】 C 【试题解析】 C语言中用 “ ”输出字符 “ ”,所以 d输出为 d两个普通字符,而不是根据格式控制符 “ d”的含义来输出,故 C选项正确。 36 【正确答案】 B 【试题解析】 当 k=0时,执行 while一次,得到 k=1, a为 2;当 k=1时,执行while一次,得到 k=2, a为 4;当 k=2时,执行 while一次,得到 k=3, a为 7;当 k=3时,执行 while一次,得到 k=4, a为 12。故 B选项正确。 37 【正确答案】 A 【试题解析】 本题中声明了一

38、个结构体类型 person,定义了两个结构体变量,分别是 rec和指针变量 ptr。 A选项中, rec是一个结构体变量,结构体变量访问结构成员的方式应该是 rec name,故答案选 Ao 38 【正确答案】 D 【试题解析】 该题首先对一维数组进行初始化, c0到 c9依次赋值为 10到 1。fun(c, 10);语句调用 fun函数, fun函数的功能是将一维数组偶数位元素的数值由小到大排序,最后将排好序的新的一维数组进行输出。故 D选项正确。 39 【正确答案】 A 【试题解析】 在输出函数中,调用 sum函数, sum函数的作用是定义一个常数n=1, 对 n进行叠加主函数传递的 m值

39、,随后将和返回给主函数,因此输出为2,。 40 【正确答案】 A 【试题解析】 文件打开方式为 “w”表示只写不读,选项 A正确。 二、程序填空题 41 【正确答案】 (1)1 (2)sk或 *(s+k) (3)c 【试题解析】 本题考查:指针型变量; ifelse 语句;赋值语句。 填空 1:函数 fun中变量 n统计字符的长度,假如长度为偶数,则 k=n-1;假如长度为奇数,则 k=n-2,使得下标为奇数的最后一个元素有效 (不是 0)。 填空 2:了解变量 k的作用后 ,则将最右边的奇数位置的数赋值给变量 c。 填空 3:将最后一个下标为奇数的元素移到第一个奇数位置。 三、程序修改题 4

40、2 【正确答案】 (1)if(i k=0) (2)if(k=i) 【试题解析】 (1)判断当前数是否为素数,若存在一个数 (除 1和其自身 )能整除当前数,则跳出本次循环,所以 if条件应为 i k=0。 (2)如果 i是素数,则循环结束时 k=i,将该值返回。 四、程序设计题 43 【正确答案】 void fun(int*a, int*n) int i, j=0; for(i=1; i =1000; i+) *求 1到 1000之内能被 7或 11整除,但不能同时被 7和11整除的所有整数,并放入数组 a中 * if(i 7=0|i 11=0)&i 77!=0) aj+=i; *n=j; 【试题解析】 本题考查: if语句,用来判断能被 7整除或者能被 11整除,但是又不能同时被 7和 11整除的数,在这里要充分理解 “逻辑与 ”和 “逻辑或 ”的区别;for循环语句的循环变量用来控制取值范围。 本题需要运用循环判断结构来实现,其中循环语句比较容易,只要确定循环变量的范围即可。下面来看判 断语句,题目要求找出能被 7或 11整除,但不能同时被7和 11整除的所有整数。能同时被 7和 11整除的整数一定能被 77整除,且不能被 77整除的数不一定就是能被 7或 11整除的数所以可得出程序中的 if()语句。注意: (i 7=0|i 11=0

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