[计算机类试卷]国家二级(C语言)机试历年真题试卷汇编24及答案与解析.doc
《[计算机类试卷]国家二级(C语言)机试历年真题试卷汇编24及答案与解析.doc》由会员分享,可在线阅读,更多相关《[计算机类试卷]国家二级(C语言)机试历年真题试卷汇编24及答案与解析.doc(30页珍藏版)》请在麦多课文档分享上搜索。
1、国家二级( C语言)机试历年真题试卷汇编 24及答案与解析 一、选择题 1 设数据结构 B=(D, R),其中 D=a, b, c, d, e, f R=(f, A), (d, B), (e, D), (c, e), (a, C) 该数据结构为 ( )。 ( A)线性结构 ( B)循环队列 ( C)循环链表 ( D)非线性结构 2 下列叙述中错误的是 ( )。 ( A)循环队列空的条件是队头指针与队尾指针相同 ( B)若二叉树没有叶子结点,则为空二叉树 ( C)带链栈的栈底指针是随栈的操作而动态变化的 ( D)若带链 队列中只有一个元素,则队头指针与队尾指针必定相同 3 某带链栈的初始状态为
2、top=bottom=NULL,经过一系列正常的入栈与退栈操作后, top=bottom=20。该栈中的元素个数为 ( )。 ( A) 1 ( B) 0 ( C) 20 ( D)不确定 4 设一棵度为 3的树,其中度为 2, 1, 0的结点数分别为 3, 1, 6。该树中度为 3的结点数为 ( )。 ( A) 1 ( B) 2 ( C) 3 ( D)不可能有这样的树 5 下面描述错误的是 ( )。 ( A)模块的独立性与模块的信息隐蔽和局部 化无关 ( B)内聚性和耦合性是模块独立程度的定性度量标准 ( C)一个模块的内聚性越高则该模块的独立性越强 ( D)一个模块的耦合性越高则该模块的独立性
3、越弱 6 下面属于黑盒测试方法的是 ( )。 ( A)错误推测法 ( B)基本路径测试 ( C)判定覆盖 ( D)条件覆盖 7 下面模型中为概念模型的是 ( )。 ( A)实体一联系模型 ( B)层次模型 ( C)关系模型 ( D)网状模型 8 学生关系模式中有 D(D#, Dn, Dl, DAddr)(其属性分别为系编号、系名称、系主任和系地 址 )和 S(S#, Sn, SG, Date, Mai, D#)(其属性分别为学号、姓名、性别、入学日期、专业和系编号 )两个关系,关系 S的主键 (码 )是 S#,关系 S的外键(码 )是 ( )。 ( A) D# ( B) Maj ( C) Dl
4、 ( D) Dn 9 关系的实体完整性要求关系中不能为空的属性是 ( )。 ( A)主键属性 ( B)外键属性 ( C)全部属性 ( D)候选键属性 10 学生选修课程的关系模式为 SC(S#, Sn, Sd, Sa, C#, G)(其属性分别为学号、姓名、所在系、年龄、课程号和成绩 ); C(C#, Cn, P#)(其属性分别为课程号、课程名、先选课 )。关系模式中包含对主属性部分依赖的是 ( )。 ( A) S#Sd ( B) (S#, C#)G ( C) C#Cn ( D) C#P# 11 以下叙述中错误的是 ( )。 ( A) main( )是 C语言主函数的起始 ( B) main(
5、 )作为主函数必须位于源程序的起始位置行 ( C) main( )是 C程序执行的起始行 ( D) main是不可替代的主函数名 12 以下叙述中错误的是 ( )。 ( A)在一个程序中,每个模块均可以独立编 译运行 ( B)程序 “模块化 ”有利于仟务的分解简化 ( C)允许对函数单独进行编译,是 C语言实现 “模块化 ”的基础 ( D)采用模块化结构,可以提高编程效率 13 以下关于注释的叙述中错误的是 ( )。 ( A)注释的边界符号 “ ”和 “*”之间不允许加入空格 ( B) C语言允许注释出现在程序中任意合适的地方 ( C)注释的内容仅用于阅读,对程序的运行不起作用 ( D)注释的
6、边界符号 “ *”和 “* ”必须成对出现且可以嵌套 14 以下是正确 C语言标识符的是 ( )。 ( A) _8_ ( B) 8 ( C) 8 ( D) -8- 15 算术运算符和圆括号有不同的运算优先级,对于表达式: a+b+c*(d+e),关于执行顺序,以下说法正确的是 ( )。 ( A)先执行 (d+e)得 r2,再执行 c*r2得 r3,再执行 a+b得 r1,最后执行 r1+r3得表达式最后结果 ( B)先执行 a+b得 r1,再执行 (d+e)得 r2,再执行 c*r2得 r3,最后执行 r1+r3得表达式最后结果 ( C)先执行 (d+e)得 r2,再执行 c*r2得 r3,再
7、执行 b+r3得 r4,最后执行 a+r4得表达式最后结果 ( D)先执行 a+b得 r1,再执行 r1+c得 r5,再执行 (d+e)得 r2,最后执行 r5*r2得表达式最后结果 16 设有定义语句: d(mble x=123 456: 则语句 printf(“ 6 2f, 3 0f n“, x, x); 的输出结果是 ( )。 ( A) 123 46, 123 0 ( B) 123 45, 123 ( C) 123 46, 123 ( D) 123 45, 123 0 17 有如下程序 #include stdio h main( ) int x=072; printf(“ d n“,
8、x+1); 程序运行后的输出结果是 ( )。 ( A) 073 ( B) 73 ( C) 142 ( D) 59 18 有以下程序 #include stdio h void main( ) double x=3 14159; printf(“ f n“, (int)(x*1000+0 5) (double)1000); 程序运行后的输出结果是 ( )。 ( A) 3 142000 ( B) 3 141000 ( C) 3 143000 ( D) 3 140000 19 以下选项中 错误的是 ( )。 ( A) printf(“ s n“, s); ( B) pfintf(“ d c n“,
9、s, s); ( C) printf(“ c n“, s-32); ( D) printf(“ c n“, 65); 20 若有定义: int a, b, c;,想通过语句: scanf(“ d, d d“, &a, &b,&e);把 1、 2、 3分别输入给变量 a、 b、 c,则正确的键盘输入是 ( )。 ( A) 1, 2, 3回车 ( B) 1, 2 tab 3回车 ( C) 1回车 tab 2 tab 3 ( D) 1回车 2回车 3 21 有以下程序 #include stdio h main( ) int a=1, b=2, c=3, d=4, r=0; if(a!=1)r=1;
10、 if(b=2)r=2; else if(c!=3)r=3; else if(d=4)r=4; pfintf(“ d n“, r); 执行后的输出结果是 ( )。 ( A) 0 ( B) 4 ( C) 1 ( D) 2 22 若有如下形式的函数 int fun(int a, int*p, int n) 调用 函数之前需要对函数进行声明,则以下选项中错误的是 ( )。 ( A) int fun(int, int, int); ( B) int fun(int a, int*p, int n); ( C) int fun(int a, int*, int); ( D) int fun(int, i
11、nt*, int); 23 有以下程序 #include stdio h main( ) int i, j=0; char a=“abl23c4d56ef7gh89“; for(i=0; ai; i+) if(ai =0&ai =9) aj+=ai; aj= 0; prinff(“ s“, a); 程序执行后的输出结果是 ( )。 ( A) 123456789abcdefgh ( B) abcdefgh ( C) 123456789 ( D) 1234567896effgh89 24 有以下程序 #include stdio h main( ) int a=-2, b=2; for(; +a&
12、-b; ) prinff(“ d, d, “, a, b); 程序执行后的输出结果是 ( )。 ( A) 0, 1, ( B) -1, 1, 0, 1, ( C) -1, 1, 0, 0, ( D) -1, 1, 25 若有以下程序 #include stdio h int fun(int y) int y; y=x+: return y; main( ) int k; for(k=0; k 3; k+)prinff(“ d, “, fun(k)+k); k+; 执行后的输出结果是 ( )。 ( A) 1, 5, ( B) 0, 6, ( C) 0, 4, ( D) 1, 7, 26 有以下程
13、序 #include stdio h int*f(int*s) s+=2; s1+=6; *s=7; return s; main( ) int a5=1, 2, 3, 4, 5, *p=a; p=f(p); prinff(“ d, d, d, d“, a0, a1, *p, p1); 程序执行后的输出结果是 ( )。 ( A) 1, 2, 7, 10 ( B) 7, 8, 7, 8 ( C) 1, 2, 1, 2 ( D) 7, 10, 7, 10 27 有以下程序 #include stdio h main( ) int a=6, i; for(i=1; i =3; i+) if(a =5
14、)break; if(a 2)a+=2; continue; a=(a-3, a+4); prinff(“ d, d“, i, a); 程序执行后的输出结果是 ( )。 ( A) 0, 6 ( B) 1, 6 ( C) 8, 6 ( D) 4, 2 28 以下表达式中,其值不等于数值 3的是 ( )。 ( A) 0+3 ( B) D-A ( C) 3-0 ( D) d-a 29 有以下程序 #include stdio h void fun(int a int n, int flag) int i=0, j, t; for(i: 0; i n-1; i+) for(j=i+1; j n; j+
15、) if(flag) if(ai aj) t=ai; ai=aj; aj=t; else if(ai aj) t=ai; ai=aj; aj=t; main( ) int c10=7, 9, 10, 8, 3, 5, 1, 6, 2, 4, i; fun(c, 10, 0); fun(c, 5, 1); for(i=0; i 10; i+) prinff(“ d, , ci); 程序运行结果正确的是 ( )。 ( A) 6, 7, 8, 9, 10, 5, 4, 3, 2, 1, ( B) 5, 4, 3, 2, 1, 6, 7, 8, 9, 10, ( C) 6, 7, 8, 9, 10,
16、1, 2, 3, 4, 5, ( D) 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 30 下面关于编译预处理的命令行中,正确的是 ( )。 ( A) #define int INT ( B) #define eps0 001 ( C) #DEFINE TRUE ( D) #define E2 88 31 有如下程序 #include stdio h main( ) int i, data; seailf(“ d“, &data); for(i=0; i 5; i+) if(i data&i 2)|(i data&i 3=0)continue; printf(“ d, “, i
17、); 程序运行时,从键盘输入: 13回车后,程序输出结果为 ( )。 ( A) 0, 2, 4, ( B) 1, 3, 5, ( C) 0, 1, 2, 3, 4, 5, ( D) 0, 1, 2, 3, 32 设变量 n已正确定义并赋值,以下不能实现自然数 1到 n累加求和的程序段是( )。 ( A) int sum=1, i=0; while(i =n) i+; sum+=i; ( B) int sum=0, i=1; while(i =n) snm+=i; i+; ( C) int sum=0, i=0; while(i n) i+; sum+=i; ( D) int sum=1, i=
18、1; while(i n) i+; sum+=i; 33 关于数组和指针,以下说法错 误的是 ( )。 ( A)数组名本身就是一个指针,指向数组内存的起始位置 ( B)既可以读入数据到数组中,也可以读入数据到未赋初值的指针中 ( C)可以让一个指针指向一个同类型的数组 ( D)指针可以指向同类型的数组中的任意一个元素 34 有下列程序 #include stdio h int*f(int*s) s+=1; s1+=6; *s+=7; return s; main( ) int a5=1, 2, 3, 4, 5, *p; p=f(&a1); prinff(“ d, d, d, d“, a1, a
19、2, *p, p1); 程序执行后的输出结果是 ( )。 ( A) 3, 9, 10, 5 ( B) 2, 16, 4, 5 ( C) 2, 10, 10, 5 ( D) 10, 9, 4, 5 35 有以下程序 #include stdio h double funl(double a, int n) int i; double sum=0 0; for(i=0; i n; i+) SHm+=ai n; return sum; void fun2(double a, int n, double*p, double*q) int i; *p=*q=a0; for(i=1; i n; i+) i
20、f(ai *p)*p=ai; else if(ai *q)*q=ai; void main( ) double a=1, 2, 3, 4, 5; double mx, mn, av; av=fun1(a, 5); fun2(a, 5, &mx, &mn); printf(“ f f f n, av, mx, mn); 程序的运行结果是 ( )。 ( A) 5 0000003 0000001 000000 ( B) 3 0000005 0000001 000000 ( C) 1 0000005 0000003 000000 ( D) 3 0000001 0000005 000000 36 设有函
21、数说明语句: int fun(int, int); 以及函数指针定义语句: int(*f)(int, int); 若要使函数指针指向函数 fun的入口地址,以下选项中正确的是 ( )。 ( A) f=fun( ); ( B) *f=fun; ( C) f=fun; ( D) *f=fun( ); 37 有如下程序 #include stdio h struct group int first, second, third; ; struct group get_min_max_sum(int*array, int len) int i; struct group res; res first=
22、array0; res second=array0; res third=array0; for(i=1; i len; i+) if(arrayi res first) res first=arrayi; if(arrayi res second) res second=arrayi; res third+=arrayi; return res; main( ) int array5=9, 1, 3, 4; struct group res=get_min_max_sum(array, 5); prinff(“min= d, max= d, sum= d n“, res first, res
23、 second, res third); 程序运行后的输出结果是 ( )。 ( A) min=0, max=9, sum=17 ( B) min=1, max=9, sum=16 ( C) min=1, max=4, sum=15 ( D) min=0, max=4, sum=16 38 若有语句: void*p=malloc(80);,则以下叙述错误的是 ( )。 ( A)可以通过指针 p直接访问 malloc开辟的这块内存 ( B)所指内存可以通过强制类型转换当作具有 20个 int型元素的一维数组来使用 ( C) p所指内存可以通过强制类型转换当作具有 10个 double型元素的一维数
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 试卷 国家 二级 语言 历年 汇编 24 答案 解析 DOC
