2009年9月计算机二级c语言试题及详细解答答案.doc_第1页
2009年9月计算机二级c语言试题及详细解答答案.doc_第2页
2009年9月计算机二级c语言试题及详细解答答案.doc_第3页
2009年9月计算机二级c语言试题及详细解答答案.doc_第4页
2009年9月计算机二级c语言试题及详细解答答案.doc_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一、选择题在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确的选项涂写在答题卡相应位置上,答在试卷上不得分。(1)下列数据结构中,属于非线性结构的是_。A)循环队列 B)带链队列 C)二叉树 D)带链栈(2)下列数据结构中,能够按照先进后出原则存取数据的是_。A)循环队列 B)栈 C)队列 D)二叉树(3)对于循环队列,下列叙述中正确的是_。A)队头指针是固定不变的B)队头指针一定大于队尾指针C)队头指针一定小于队尾指针 D)队头指针可以大于队尾指针,也可以小于队尾指针(4)算法的空间复杂度是指_。A)算法在执行过程中所需要的计算机存储空间B)算法所处理的数据量C)算法程序中的语句或指令条数D)算法在执行过程中所需要的临时工作单元数(5)软件设计中划分模块的一个准则是_。A)低内聚低耦合 B)高内聚低耦合 C)低内聚高耦合 D)高内聚高耦合(6)下列选项中不属于结构化程序设计原则的是_。A)可封装 B)自顶向下 C)模块化 D)逐步求精(7)软件详细设计产生的图如下:该图是。A)N-S图 B)PAD图 C)程序流程图 D)ER图(8)数据库管理系统是_。A)操作系统的一部分 B)在操作系统支持下的系统软件C)一种编译系统 D)一种操作系统(9)在ER图中,用来表示实体联系的图形是_。A)椭圆形 B)矩形C)菱形 D)三角形(10)有三个关系R,S和T如下:RABCa12b21c31SABCd32TABCa12b21c31d32其中关系T由关系R和S通过某种操作得到,该操作为_。A)选择 B)投影 C)交 D)并(11)以下叙述中正确的是_。A)程序设计的任务就是编写程序代码并上机调试B)程序设计的任务就是确定所用数据结构C)程序设计的任务就是确定所用算法 D)以上三种说法都不完整(12)以下选项中,能用作用户标识符的是_。A)void B) 8_8C)_0_ D)unsigned(13)阅读以下程序:#include main()int case;float printF;printf(请输入2个数:);scanf(%d%f,&case,&printF);printf(% d%fn,case,printF);该程序在编译时产生错误,其出错原因是_。A)定义语句出错,case是关键字,不能用作用户自定义标识符B)定义语句出错,printF不能用作用户自定义标识符C)定义语句无错,scanf不能作为输入函数使用D)定义语句无错,printf不能输出case的值(14)表达式:(int)(double)9/2)(9)%2的值是_。A)0 B)3 C)4 D)5(15)若有定义语句:intx10;,则表达式xxx的值为_。A)20 B)10 C)0 D)10(16)有以下程序:#include main()inta1,b0;printf(%d,bab);printf(%dn,a2程序运行后的输出结果是_。A)0,0 B)1,0 C)3,2 D)1,2(17)设有定义:inta1,b2,c3;,以下语句中执行效果与其他三个不同的是_。A)if(ab)ca,ab,bc;B)if(ab)ca,ab,bc;C)if(ab)ca;ab;bc; D)if(ab)ca;ab;bc;(18)有以下程序:#includemain()intc0,k;for(k1;kb?(bc?1:0):0;功能相同的是_。A)if(ab)&(bc)k1;elsek0; B)if(ab)(bc)k1;else k0;C)if(ab)k0;else if(bb)k1;elseif(bc)k1;elsek0;(20)有以下程序:#include main()char s012xy;int i,n0;for(i0;si!0;i) if (sia&siz)n;printf(%dn,n);程序运行后的输出结果是_。A)0 B)2 C)3 D)5(21)有以下程序:#include main()intn2,k0;while(k&n2);printf(%d%dn,k,n);程序运行后的输出结果是_。A)02 B)13 C)57 D)12(22)有以下定义语句,编译时会出现编译错误的是_。A)charaa;B)charan;C)charaaa; D)charax2d;(23)有以下程序:#include main()char cl,c2;clA84;c2A85;printf(%c,%dn,cl,c2);已知字母A的ASCIl码为65,程序运行后的输出结果是_。A)E,68 B)D,69 C)E,D D)输出无定值(24)有以下程序:#include voidfun(int p)int d2;pd;printf(%d,p);main()inta1;fun(a);printf(%dn,a);程序运行后的输出结果是_。A)32 B)12C)21 D)22(25)以下函数findmax拟实现在数组中查找最大值并作为函数值返回,但程序中有错导致不能实现预定功能。#define MIN 2147483647int findmax(intx,int n)inti,max;for(i0;in;i)maxMIN; if(maxxi) maxxi;returnmax;造成错误的原因是_。A)定义语句int i,max;中max未赋初值B)赋值语句maxMIN;中,不应给max赋MIN值C)语句if(maxxi)maxxi;中判断条件设置错误 D)赋值语句maxMIN;放错了位置(26)有以下程序:#include main()int m1,n2,*p&m,*q&n,*r;rp;pq;qr;printf(%d,%d,%d,%dn,m,n,*p,*q);程序运行后的输出结果是_。A)1,2,1,2 B)1,2,2,1 C)2,1,2,1 D)2,1,1,2(27)若有定义语句:inta410,*p,*q4;且0i4,则错误的赋值是_。A)pa B)qiai C)pai D)p&a21(28)有以下程序:#include #include main()char str20Qne*World,one*Dream!,*pstr1;printf(%d,strlen(p);printf(%sn,p);程序运行后的输出结果是_。A)9,One*World B)9,One*Dream! C)10,One*Dream! D)10,One*World(29)有以下程序:#include main()inta2,3,5,4,i;for(i0;i4;i)switch(i%2)case 0:switch(ai%2)case 0:ai;break; case 1:ai;break;case 1:ai0;for(i0;i4;i)printf(%d,ai);printf(n);程序运行后的输出结果是_。A)3 3 4 4 B)2 0 5 0 C)3 0 4 0 D)0 3 0 4(30)有以下程序:#include #include main()char a10abcd; printf(%d,%dn,strlen(a),sizeof(a);程序运行后的输出结果是_。A)7,4 B)4,10 C)8,8 D)10,10(31)下面是有关C语言字符数组的描述,其中错误的是_。A)不可以用赋值语句给字符数组名赋字符串B)可以用输入语句把字符串整体输入给字符数组C)字符数组中的内容不一定是字符串 D)字符数组只能存放字符串(32)下列函数的功能是_。fun(char*a,char*b)while(*b*a)!0)a;b;A)将a所指字符串赋给b所指空间B)使指针b指向a所指字符串C)将a所指字符串和b所指字符串进行比较 D)检查a和b所指字符串中是否有0(33)设有以下函数:void fun(int n,char*s) 则下面对函数指针的定义和赋值均正确的是_。A)void(*pf)();pffun;B)void*pf(); pffun;C)void*pf();*pffun;D)void(*pf)(int,char);pf&fun;(34)有以下程序:#include int f(int n);main()int a3,s;sf(a);ssf(a);printf(%dn,s);int f(int n)static int a1;na;return n;程序运行后的输出结果是_。A)7 B)8 C)9 D)10(35)有以下程序:#include #define f(x) x*x*xmain()int a3,s,t;sf(a1);tf(a1);printf(%d,%dn,s,t);程序运行后的输出结果是_。A)10,64 B)10,10C)64,10 D)64,64(36)下面结构体的定义语句中,错误的是_。A)structordintx;inty;intz;structorda;B)structordintx;inty;intz;structorda;C)structordintx;inty;intz;a; D)structintx;inty;intz;)a;(37)设有定义:char*c;,以下选项中能够使字符型指针c正确指向一个字符串的是_。A)char strstring;cstr;B)scanf(%s,c);C)cgetchar(); D)*cstring;(38)有以下程序:#include#includestruct Aint a;char b10;double c;struct A f(struct A t);main()struct A a1001,ZhangDa,1098.0);af(a); printf(%d,%s,%6.1fn,a.a,a.b,a.c);struct A f(struct A t)ta1002;strcpy(t.b,changRong);t.c1202.0;return t;程序运行后的输出结果是_。A)1001,ZhangDa,1098.0B)1002,ZhangDa,1202.0C)1001,ChangRong,1098.0 D)1002,ChangRong,1202.0(39)若有以下程序段:intr8;printf(%dn,r1);输出结果是_。A)16 B)8 C)4 D)2(40)下列关于C语言文件的叙述中正确的是_。A)文件由一系列数据依次排列组成,只能构成二进制文件B)文件由结构序列组成,可以构成二进制文件或文本文件C)文件由数据序列组成,可以构成二进制文件或文本文件 D)文件由字符序列组成,其类型只能是文本文件二、填空题请将每一个空的正确答案写在答题卡序号的横线上,答在试卷上不给分。(1)某二叉树有5个度为2的结点以及3个度为1的结点,则该二叉树中共有_【1】_个结点。(2)程序流程图中的菱形框表示的是_【2】_。(3)软件开发过程主要分为需求分析、设计、编码与测试四个阶段,其中 _【3】_ 阶段产生软件需求规格说明书。(4)在数据库技术中,实体集之间的联系可以是一对一或一对多或多对多的,那么学生和可选课程的联系为_【4】_。(5)人员基本信息一般包括:身份证号,姓名,性别,年龄等。其中可以作为主关键字是_【5】_。(6)若有定义语句:int a5;,则表达式:a的值是_【6】_。(7)若有语句double x17;int y;,当执行y(int)(x/5)%2;之后y的值为_【7】_。(8)以下程序运行后的输出结果是 _【8】_。#include main()intx20;printf(%d,0x20);printf(%dn,0x&x20);(9)以下程序运行后的输出结果是_【9】_。#include main()int a1,b7;dobb/2; ab; while(b1);printf(%dn,a);(10)有以下程序:#includemain()int f,fl,f2,i;f10;f21;printf(%d%d,f1,f2);for(i3;i5;i) ff1f2;printf(%d,f);f1f2;f2f;printf(n);程序运行后的输出结果是_【10】_。(11)有以下程序:#include int a5;void fun(int b)int a10;ab;printf(%d,a);main()int c20;fun(c);ac;printf(%dn,a);程序运行后的输出结果是_【11】_。(12)设有定义:struct personint ID;char name12;p;请将scanf(%d,_【12】_);语句补充完整,使其能够为结构体变量p的成员ID正确读入数据。(13)有以下程序:#include main()char a20How are you?,b20;scanf(%s,b);printf(%s %sn,a,b);程序运行时从键盘输入:How are you?则输出结果为_【13】_。(14)有以下程序:#include typedef structint num;double s;REC;void funl(REC x)x.num23;x.s88.5;main()REC a16,90.0);fun1(a);printf(%dn,a.num);程序运行后的输出结果是_【14】_。(15)有以下程序:#include fun(int x)if(x/20) fun(x/2);printf(%d.,x);main() fun(6),printf(n);程序运行后的输出结果是_【15】_。一、选择题(1)C【解析】 根据数据结构中各数据元素之间前后关系的复杂程度,一般将数据结构分为两大类型:线性结构与非线性结构。线性结构表示数据元素之间为一对一的关系,非线性结构表示数据元素之间为一对多或者多对一的关系。根据各种结构的定义知二叉树是一种非线性结构。(2)B【解析】 栈是限定只在一端进行插入与删除的线性表,通常称插入、删除的这一端为栈顶,另一端为栈底。栈顶元素总是后被插入的元素,也是最先被删除的元素;栈底元素总是最先被插入的元素,也是最后才能被删除的元素。栈是按照先进后出或后进先出的原则组织数据的。(3)D【解析】 循环队列是将顺序队列首尾相连形成的,随着插入元素或删除元素的进行,其队头指针及队尾指针是在不断变化的,有时可能会出现队头指针大于队尾指针的情况,也可能是队尾指针大于队头指针,故答案为D)。(4)A【解析】 算法的空间复杂度是指:算法执行过程中所需的存储空间。一个算法所占用的存储空间包括算法程序所占的空间、输入的初始数据所占的存储空间以及算法执行过程中所需要的额外空间。(5)B【解析】 模块划分应考虑的因素包括模块之间的耦合和内聚。一般来说,要求模块之间的耦合尽可能地低,即模块尽可能独立,要求模块的内聚程度尽可能地高,即遵循高内聚、低耦合的原则。(6)A【解析】 模块化、自顶向下、逐步求精都是结构化程序设计的原则;可封装是面向对象程序设计原则。(7)C【解析】 NS图是由若干基本框图构成的流程图,其特点是没有流程线;PAD图即问题分析图(Problem Analysis Diagram),它是一种由左往右展开的二维树形结构;程序流程图用于描述问题解决的过程和步骤,其中方框表示处理步骤,菱形框表示逻辑判断,箭头表示控制流向;ER图即实体联系图(Entity Relationship Diagram),用来描述现实世界的概念模型,构成元素有实体、属性和联系,分别用矩形、椭圆形和菱形表示。本题答案为C)。(8)B【解析】 数据库管理系统是指位于用户与操作系统之间的数据管理软件。数据库管理系统是为数据库建立、使用和维护而配置的软件。(9)C【解析】 ER图中用矩形表示实体(等同于表),用椭圆形表示实体的属性(等同于表中字段),用菱形表示实体关系(等同于外键)。(10)D【解析】 两个相同结构关系的并是由属于这两个关系的元组组成的集合。(11)D【解析】 程序设计通常分为问题建模、算法设计、编写代码和编译调试四个阶段。所以选项A)、B)、C)说法都不完整。(12)C【解析】 C语言的标识符命名规则为:只能由字母、数值和下划线3种字符组成;第一个字符必须是字母或下划线;不能与C语言中的关键字或保留字相同。(13)A【解析】 标识符不能与C编译系统已经预定义的、具有特殊用途的保留标识符(即关键字)同名,否则程序在编译时会出现错误。题目源程序中使用了已经预定义的关键字case,所以将出现错误。(14)B【解析】 (int)(double)9/2)的值为4,(9)%2的值为1,因此(int)(double)9/2)(9)%2的值为3。(15)B【解析】 xxx可化为:xx(xx),由于x初始值为10,所以计算后,x102010,因此选B)。(16)D【解析】 执行第一个printf语句时,bab1,所以输出1,执行第二个printf语句时,a2*b=2,所以输出结果为2。(17)C【解析】 逗号表达式的求解过程是:按表达式顺序从左往右依次求解。本题中由于判断条件ab的值为假,所以选项A)、B)、D)中if语句后面的语句均未被执行,而C)中的后两条语句ab和bc被执行,因此选项C)的执行效果与其他三个不同。(18)A【解析】 第一次循环时,k1,在switch语句中,先执行default后面的语句,即cck1,因为没有break语句,所以不会跳出switch结构,会接着执行case2后面的语句,即cc12,然后跳出switch;第二次循环时,k2,直接执行case2后面的语句,即cc13,然后跳出switch语句,结束循环,执行输出语句。(19)A【解析】 表达式kab?(bc?10)0表示:如果(ab)条件为真,则k取值(bc?10),否则k取值0;当ab的情况下,如果bc,则k值为1,否则为0。所以该表达式与选项A)功能相同。(20)B【解析】 在字符串数组si中,只有当下标i3和i4时,才满足if条件,所以n的值从0增加两次,结果为2。(21)D【解析】 本题考查逻辑运算符的短路现象,由于k的值为0,表达式首先去求k的值,因为表达式k的值为0,系统完全可以确定逻辑表达式的运算结果总是为0,因此将跳过n2,不再对它进行求值,即k的值加1,n的值不变。(22)C【解析】 aa是字符串,不用加上单引号。(23)A【解析】 c1输出字符的ASCII码比字母A大4,即字母E;c2以十进制数字形式输出,因此可以判断本题答案为A)。(24)C【解析】 程序运行后,首先输出的是p的值,然后输出a的值。pd,得到p的值为d的初始值2;a的值不变,仍为1。(25)D【解析】 对max赋初值,应该放在循环语句之前,不然每次循环都将是从MIN开始比较。(26)B【解析】 m和n的值不变,输出结果为1,2。指针*p和*q交换了指向的位置,即*p&n,*q&m,输出结果分别为2,1。(27)A【解析】 直接将二维数组a赋给p不合法,两者类型不匹配。(28)C【解析】 可以将二维数组str看成是一个特殊的一维数组,其元素也是一个数组。那么,str0为One*World,str1为One*Dream!。(29)C【解析】 第一次循环,i0,i%20,a0%20,a0a013;第二次循环,i1,1%21,a10;第三次循环,i2,a2%21,a2a214;第四次循环,i3,i%21,a30。(30)B【解析】 strlen()用来返回字符串的长度,而sizeof()返回的是一个对象或者类型所占的内存字节数,即数组所占的内存。(31)D【解析】 字符数组中的内容既可以是字符,也可以是字符串,选项D)说法不正确。(32)A【解析】 表达式*b*a是将a所指的字符赋给b所指的空间,然后,指针a和b依次后移,直到到达指针a所指字符串的结尾。(33)A【解析】 函数指针的定义形式是:数据类型标识符(*指针变量名)()。void(*pf)()定义了一个没有返回值的函数指针pf,在给函数指针变量赋值时,只需给出函数名而不必给出参数。所以给pf赋值时,只把函数名fun赋给pf即可。所以正确答案为选项A)。(34)C【解析】 sf(a)表达式第一次调用f(n)函数时,f(n)函数运行结果为n4,a2,即s等于4;ssf(a)表达式第二次调用f(n)函数时,f(n)函数运行结果为n5,所以得到s值为9。(35)A【解析】 s=f(a+1)=a+1*a+1*a+1=10;s=f(a+1)=(a+1)*(a+1)*(a+1)=64。(36)B【解析】 定义结构体变量有三种方式:先声明结构体类型,再定义变量名,如选项A)所示;在声明类型的同时定义变量,如选项C)所示;直接定义结构体类型变量,如选项D)所示。(37)A【解析】 选项B)、D)中,没有为字符串分配空间,因此不能用c指向字符串。选项C)中getchar()函数返回一个字符,不能将字符赋给字符指针c。选项A)中首先定义了字符数组str,然后将str的首地址赋给指针c,这样就使指针c指向了字符串string。(38)D【解析】 在主函数中,通过af(a)实现函数调用,所以输出的结构体变量相应变为1002,ChangRong,1202.0。(39)C【解析】 8用二进制表示为1000,右移1位后为0100,即十进制4。(40)C【解析】 文件由数据序列组成,可以构成二进制文件,也可以构成文本文件。二、填空题(1)【1】14【解析】 在二叉树中,度为0的结点数是度为2的结点数加1,故二叉树中结点数的总和为度为0的结点数、度为1的结点数及度为2的结

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论