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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

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

1、国家二级 C语言机试(选择题)模拟试卷 54 及答案与解析 一、选择题 1 将 E R图转换为关系模式时,实体和联系都可以表示为 ( )。 ( A)属性 ( B)键 ( C)关系 ( D)域 2 按照 C语言规定的用户标识符命名规则,不能出现在标识符中的是 ( )。 ( A)大写字母 ( B)下划线 ( C)数字字符 ( D)连接符 3 数据库应用系统中的核心问题是 ( )。 ( A)数据库设计 ( B)数据库系统设计 ( C)数据库维护 ( D)数据库管理员培训 4 耦合性和内聚性是对 模块独立性度量的两个标准。下列叙述中正确的是 ( )。 ( A)提高耦合性降低内聚性有利于提高模块的独立性

2、 ( B)降低耦合性提高内聚性有利于提高模块的独立性 ( C)耦合性是指一个模块内部各个元素间彼此结合的紧密程度 ( D)内聚性是指模块间互相连接的紧密程度 5 下面叙述中错误的是 ( )。 ( A)软件测试的目的是发现错误并改正错误 ( B)对被调试的程序进行 “错误定位 “是程序调试的必要步骤 ( C)程序调试通常也称为 Debug ( D)软件测试应严格执行测试计划,排除测试的随意性 6 软件按功能可以分为:应用软件、系统软件和支撑软件 (或工具软件 )。下面属于应用软件的是 ( )。 ( A)编译程序 ( B)操作系统 ( C)教务管理系统 ( D)汇编程序 7 下列排序方法中,最坏情

3、况下比较次数最少的是 ( )。 ( A)冒泡排序 ( B)简单选择排序 ( C)直接插入排序 ( D)堆排序 8 某二叉树有 5个度为 2的结点,则该二叉树中的叶子结点数是 ( )。 ( A) 10 ( B) 8 ( C) 6 ( D) 4 9 支持子程序调用的数据结构是 ( )。 ( A)栈 ( B)树 ( C)队列 ( D)二叉树 10 下列叙述中正确的是 ( )。 ( A)栈是 “先进先出 ”的线性表 ( B)队列是 “先进后出 ”的线性表 ( C)循环队列是非线性结构 ( D)有序线性表既可以采用顺序存储结构,也可以采用链式存储结构 11 以下叙述中错误的是 ( )。 ( A)使用三种

4、基本结构构成的程序只能解决简单问题 ( B)结构化程序由顺序、分支、循环三种基本结构组成 ( C) C语言是一种结构化程序设计语言 ( D)结构化程序设计提倡模块化的设计方法 12 以下四个程序中, 完全正确的是 ( )。 ( A) #include main(); /*/ programming /*/ printf(“programming! n“); ( B) #include main() /* programming */ printf(“programming! n“); ( C) #include main() /*/* programming */*/ printf(“prog

5、ramming! n“); ( D) include main() /* programming */ printf(“programming! n“); 13 C源程序中不能表示的数制是 ( )。 ( A)十六进制 ( B)八进制 ( C)十进制 ( D)二进制 14 以下选项中,能用作用户标识符的是 ( )。 ( A) 0 ( B) 8 8 ( C) void ( D) unsigned 15 若有定义语句: intx 10;,则表达式 x x x的值为 ( )。 ( A) 0 ( B) 20 ( C) 10 ( D) 10 16 有以下程序: #include main() inta 1

6、, b 0; printf(“%d, “, b a b); printf(“%dn“, a 2*b); 输出结果是 ( )。 ( A) 1, 2 ( B) 1,0 ( C) 3,2 ( D) 0,0 17 有以下程序: #include main() inta1, a2; charc1, c2; scanf(“%d%c%d%c“, &a1, &c1, &a2, &c2); printf(“%d, %c, %d, %c“, a1, c1, a2, c2); 若想通过键盘输入,使得 a1的值为 12, a2的值为 34, c1的值为字符 a, c2的值为字符 b,程序输出结果是: 12, a,34

7、, b则正确的输入格式是 (以下代表空格,代表回车 )( )。 ( A) 12a34 b ( B) 12 a 34 b ( C) 12, a,34, b ( D) 12a34b 18 若变量已正确定义,在 if(W)printf(“%dn“, k);中,以下不可替代 W的是( )。 ( A) ab)a b, b c; c a; printf(“a %db %dc %dn“, a, b, c); 程序的输出结果是 ( )。 ( A) a 10 b 50 c 30 ( B) a 10 b 50 c 10 ( C) a 10 b 30 c 10 ( D) a 50 b 30 c 50 20 下列叙述

8、中 正确的是 ( )。 ( A)在 switch语句中,不一定使用 break语句 ( B)在 switch语句中必须使用 default ( C) break语句必须与 switch语句中的 case配对使用 ( D) break语句只能用于 switch语句 21 以下不构成无限循环的语句或语句组是 ( )。 ( A) n 0; do n; while (n =0); ( B) n 0; while (1) n; ( C) n 10; while (n); n; ( D) for(n 0, i 1; ; i ) n i; 22 有以下程序: #include main() intc 0,

9、k; for(k 1; k intf(intx, inty) return(y x)*x); main() inta 3, b 4, c 5, d; d f(f(a, b), f(a, c); printf(“%dn“, d); 程序运行后的输出结果是 ( )。 ( A) 7 ( B) 10 ( C) 8 ( D) 9 24 若有定义语句: doublea, *p &a;以下叙述中错误的是 ( )。 ( A)定义语句中的 *号是一个间址运算符 ( B)定义语句中的 *号是一个说明符 ( C)定义语句中的 p只能存放 double类型变量的地址 ( D)定义语句中, *p &a把变量 a的地址作

10、为初值赋给指针变量 p 25 若有定义语句: doublex, y, *px, *py;执行了 px &x; py &y;之后,正确的输入语句是 ( )。 ( A) scanf(“%lf %le“, px, py); ( B) scanf(“%f %f“ &x, &y); ( C) scanf(“%f %f“, x, y); ( D) scanf(“%lf %lf“, x, y); 26 以下定义数组的语句中错误的是 ( )。 ( A) int num3 1,2,3,4,5,6 ; ( B) int num24 1,2, 3,4, 5,6 ; ( C) int num 1,2,3,4,5,6

11、; ( D) int num4 1,2,3,4,5,6; 27 有以下程序: #include voidfun(inta, intb) intt; t a; a b; b t; main() intc10 1,2,3,4,5,6,7,8,9,0, i; for(i 0; i 10; i 2)fun(ci, ci 1); for(i 0; i 10; i )printf(“%d, “, ci); printf(“n“); 程序的运行结果是 ( )。 ( A) 1,2,3,4,5,6,7,8,9,0, ( B) 2,1,4,3,6,5,8,7,0,9, ( C) 0,9,8,7,6,5,4,3,2

12、,1, ( D) 0,1,2,3,4,5,6,7,8,9, 28 有以下程序: #include main() intx32 0, i; for(i 0; i 3; i )scanf(“%d“, xi); printf(“%3d%3d%3dn“, x00, x01, x10); 若运行时输入: 246,则输出结果为 ( )。 ( A) 2 0 4 ( B) 2 0 0 ( C) 2 4 0 ( D) 2 4 6 29 有以下程序段: #include intj; floaty; charname50; scanf(“%2d%f%s“, &j, &y, name); 当执行上述程序段,从键盘上输

13、入 555667777abc后, y的值为 ( )。 ( A) 566.0 ( B) 55566.0 ( C) 7777.0 ( D) 566777.0 30 下列语句组中,正确的是 ( )。 ( A) char *s; s “Olympic“; ( B) char s7; s “Olympic“; ( C) char *s; s “Olympic“; ( D) char s7; s “Olympic“; 31 有以下函数: intfun(char*s) char*t s; while(*t ); return(t s); 该函数的功能是 () ( A) 计算 s所指字符串的长度 ( B)比较

14、两个字符串的大小 ( C) 计算 s所指字符串占用内存字节的个数 ( D) 将 s所指字符串复制到字符串 t中 32 有以下程序 (注:字符 a的 ASCII码值为 97): #include main() char*s “abc“; do printf(“%d“, *s%10); s; while(*s); 程序运行后的输出结果是 ( )。 ( A) 789 ( B) abc ( C) 7890 ( D) 979899 33 设有如下函数定义: #include intfun(intk) if(k intf(intn); main() inta 3, s; s f(a); s s f(a);

15、 printf(“%dn“, s); intf(intn) staticinta 1; n a; returnn; 程序运行后的输出结果是 ( )。 ( A) 9 ( B) 8 ( C) 7 ( D) 10 35 设有定义: structcomplex intreal, unreal; data1 1,8, data2; 则以下赋值语句中错误的是 ( )。 ( A) data2 (2,6); ( B) data2 data1; ( C) data2.real data1.real; ( D) data2.real data1.unreal; 36 有以下程序: #include structS

16、intn; inta20; ; voidf(structS*p) inti, j, t; for(i 0; ip- aj)t p- ai; p- ai p- aj; p- aj t; main() inti; structSs 10, 2,3,1,6,8,7,5,4,10,9; f(&s); for(i 0; i s.n; i )printf(“%d, “, s.ai); 程序运行后的输出结果是 ( )。 ( A) 2,3,1,6,8,7,5,4,10,9, ( B) 10,9,8,7,6,5,4,3,2,1, ( C) 1,2,3,4,5,6,7,8,9,10, ( D) 10,9,8,7,

17、6,1,2,3,4,5, 37 有以下程序: #include #include typedefstructcharname9; charsex; intscore2; STU; STUf(STUa) STUb “Zhao“, m, 85, 90; inti; strcpy(a.name, b.name); a.sex b.sex; for(i 0; i main() FILE*fp; inta10 1,2,3, i, n; fp fopen(“d1.dat“, “w“); for(i 0; i前丢掉了 “#“号。所以选择 B。 13 【正确答案】 D 【试题解析】 在 C语言中整型常量可以用

18、十进制、八进制和十六进制等形式表示,但不包括二进制,所以选择 D。 14 【正确答案】 A 【试题解析】 C语言中标识符由字母、下划线、数字组成,且开头必须是字母或下划线。另外,关键字不能作为 标识符。 B 中以数字 8开头,所以错误。 C与 D中用的是关键字 void与 unsigned,所以错误。 15 【正确答案】 C 【试题解析】 算术运算符的优先级高于 ,且的结合方向为自右向左,所以表达式 x x x可以表示成 x x (x x) 10 (10 10) 10,选择C。 16 【正确答案】 A 【试题解析】 首先打印 b a b 1 0 1的值 1,此时已给 b赋值为 1。然后打印 a

19、 2*b=2*1=2的值 2。所以结果是 1,2。 17 【正确答案】 D 【试题解析】 在输 入多个数据时,若格式控制串中无非格式字符,则认为所有输入的字符均为有效字符。所以应按选项 D)的顺序输入数据。 18 【正确答案】 A 【试题解析】 选项 A)是非法的表达式, C语言中没有 运算符。 19 【正确答案】 B 【试题解析】 本题中 ab 的条件不满足,所以不执行逗号表达式 a b, b c;的操作,而是执行 c a操作,即 c的值为 10。 20 【正确答案】 A 【试题解析】 default语句在 switch语句中可以省略,所以 B)错误; switch语句中并非每个 case后

20、都需要使用 break 语句,所以 C错误; break 语句还可以用于 for等循环结构中,所以 D错误。 21 【正确答案】 A 【试题解析】 选项 A)中 do后面的语句只执行了一次便结束了循环; B)选项中条件 while(1)永远成立,所以是死循环; C选项中 n 的值为 10,而循环体为空语句,所以 while(n)永远为真,进入死循环; D)选项中 for语句第二个表达式为空,所以没有判别条件,进入死循环。 22 【正确答案】 C 【试题解析】 向 switch 语句块传送参数后,编译器会先寻找匹配的 case语 句块,找到后就执行该语句块,遇到 break 跳出;如果没有匹配的

21、语句块,则执行default语句块。 case与 default没有顺序之分。所以第一次循环 k的值为 1,执行c k, c的值为 1,再执行 case 2 后的语句 c, c的值为 2,遇到 break 语句跳出循环;第二次循环 k 的值为 2,执行 case 2 后面的语句 c, c的值为 3,跳出循环。 23 【正确答案】 D 【试题解析】 调用 f(a, b)函数返回 3,调用 f(a, c)函数返回 6,所以外层调用f(f(a, b), f(a, c);即调用 f(3,6)函数返回 9。 24 【正确答案】 A 【试题解析】 在变量定义 double a, *p &a ;中, * 号

22、是一个指针运算符,而非间址运算符,所以 A错误。 25 【正确答案】 A 【试题解析】 因为 x, y都是 double型数据,所以输入时的格式字符应为 %lf,所以 B)与 C)错误。 D)选项中 scanf(“%lf %lf“, x, y);应为 scanf(“%lf %lf“,&x, &y);。 26 【正确答案】 B 【试题解析】 B 选项中定义的数组为 2行 4列,而赋值时赋成了 3行所以出 错。 27 【正确答案】 A 【试题解析】 函数调用中发生的数据传送是单向的。即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。 因此在函数调用过程中,形参的值发生改变,而实参中的值

23、不会变化,所以数组 c中的元素的值并没有变化,选择A。 28 【正确答案】 A 【试题解析】 本题中输入的 3个数据 2,4,6分别赋值给了 x00, x10,x20。 x01仍为初始时的 0,所以打印输出时的结果为 A选项。 29 【正确答案】 A 【试题解析】 它是格 式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。其中的格式命令可以说明最大域宽。 在百分号 (%)与格式码之间的整数用于限制从对应域读入的最大字符数。所以 j的值为 55, y的值为 566.0,字符数组 name为 7777abc。 30 【正确答案】 A 【试题解析】 字符型指针变量可以用选项 A)的赋

24、值方法: char*s; s“Olympic“,选项 C)的写法: char*s, s “Olympic“;是错误的。字符数组可以在定义的时候初始化: char s “Olympic“;? 或者 char s “Olympic“,都是正确的。但是不可以在定义字符数组后,对数组名赋值。 (数组名是常量,代表数组首地址 )所以选项 B)和选项 D)都是错误的。对于本例,选项 B)、 D)中字符数组 s的大小至少为 8,才能存放下字符串。 (字符串的末尾都有结束标志 “0“)。 31 【正确答案】 A 【试题解析】 首先 char *s 接受一个字符型数组的首地址并将这个首地址赋给另一个字符型指针

25、char*t , while(*t )不断循环直到 *t 为 0,再将 t 1 ,这时字符指针 t 指 向字符串的最后一个字符,又因为 s 指向字符数组的首地址即字符串的首地址所以 return(t s) 便是返回字符数组中字符串的长度。 32 【正确答案】 A 【试题解析】 因为小写字符 a, b, c的 ASCII的值分别为 97,98,99,而在do while循环语句中,每次对字符的 ASCII 的值取余数并输出,所以分别输出7,8,9。 33 【正确答案】 B 【试题解析】 首先 n fun(3),3被当作参数传递进去,这就进行了一次调用, 3被当做参数传进去后,程序会执行这句 el

26、se return fun(k 1) 1; 这就调用了第二次,而参数是 3 1也就是 2。 2被当做参数传进去后,程序会执行这句 else return fun(k 1) 1; 这就调用了第三次,而参数是 2 1也就是 1。 1被当做参数传进去后,程序会执行这句 else if(k 1) return 1; 不再递归调用,所以最终结果为 3次。 34 【正确答案】 A 【试题解析】 题目中静态局部变量 a,在静态存储区内分配存储单元,在程序整个运行期间都不释放。所以第一次调用函数执行 n a;时 a先与 n相加在再进行自 增。 n 的值为 4, a的值为 2,且 a变量执行完后空间没有释放。再

27、执行 s s f(a)时 , s的值为 4,调用 f(a)函数时 n的返回值为 n 3 2 5,且此时 a的值为 3了。所以 s的值为 9。 35 【正确答案】 A 【试题解析】 A)选项中可以在声明变量的同事为 data2赋值,但是 data2(2,6);应写作 data2 2,6。所以选择 A。 36 【正确答案】 C 【试题解析】 本题的子函数 f的功能是对结构体变量 s中第二个成员数组中所有的数据进行从小到大的冒泡排序,所以结果是 C。 37 【正确答案】 A 【试题解析】 本题考查的是函数调用时的参数传递问题。程序在调用函数 f时,传给函数 f 的参数只是结构变量 c在栈中的一个拷贝

28、,函数 f 所做所有操作只是针对这个数据拷贝进行的修改,这些都不会影响变量 c的值。 38 【正确答案】 A 【试题解析】 宏定义写在函数的花括号外边,作用域为其后的程序,通常在文件的最开头,所以 B)选项中宏定义必须位于源程序中所有语句之前是错误的。宏名一般用大写,但不是必须用大写,所以 C选项错误。宏展开不占运行时间,只占编译时间,函数调用占运行时间 (分配内 存、保留现场、值传递、返回值 ),所以 D选项错误。 39 【正确答案】 B 【试题解析】 b 为 2,二进制为 00000010,执行左移两位操作后为 00001000,然后与 a 00000001做异或操作结果为 00001001,即十进制的 9。 40 【正确答案】 D 【试题解析】 程序首先将数组 a10中的元素 1、 2、 3分别写入了文件 d1.dat文件中,然后又将 d1.dat文件中的数据 123,整体写入到了变量 n的空间中,所以打印 n时输出的数据为 123。

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