您好,欢迎访问三七文档
12008年4月真题1.程序流程图中带有箭头的线段表示的是________。A)图元关系B)数据流C)控制流D)调用关系参考答案:C【解析】程序流程图是人们对解决问题的方法、思路或算法的一种描述。其中,图框表示各种操作的类型,图框中的文字和符号表示操作的内容,流程线表示操作的先后次序。带箭头的线段在数据流程图中表示数据流,而在程序流程图中表示控制流。在所给出的选项中,在图元之间用带有箭头的线段表示图元关系。在模块之间用带有箭头的线段表示调用关系。构成程序流程图的基本图符及其含义是:→或↓表示控制流;□表示加工步骤;◇表示逻辑条件。2.结构化程序设计的基本原则不包括________。A)多态性B)自顶向下C)模块化D)逐步求精参考答案:A【解析】结构化程序设计的原则包括:自顶而下,逐步求精的设计思想,独立功能,单出口、单入口的模块化设计等。多态性是面向对象程序语言的特征。3.软件设计中模块划分应遵循的准则是________。A)低内聚低耦合B)高内聚低耦合C)低内聚高耦合D)高内聚高耦合参考答案:B【解析】模块划分应遵循的准则包括模块之间的耦合和内聚。一般来说,要求模块之间的耦合尽可能地低,即模块尽可能独立,要求模块的内聚程度尽可能地高,即高内聚、低耦合的原则。4.在软件开发中,需求分析阶段产生的主要文档是________。A)可行性分析报告B)软件需求规格说明书C)概要设计说明书D)集成测试计划参考答案:B【解析】需求分析阶段的工作主要包括需求获取、需求分析、编写需求规格说明书和需求评审等四方面。产生的主要文档为软件需求规格说明书,它可以为用户、分析人员和设计人员之间的交流提供方便,可以直接支持目标软件系统的确认,又可以作为控制软件开发进程的依据。5.算法的有穷性是指________。A)算法程序的运行时间是有限的B)算法程序所处理的数据量是有限的C)算法程序的长度是有限的D)算法只能被有限的用户使用参考答案:A【解析】算法具有6个特性。①有穷性:一个算法必须总是(对任何合法的输入值)在执行有穷步之后结束,且每一步都可在有限时间内完成,即运行时间是有限的。②确定性:算法中每一条指令必须有确切的含义,读者理解时不会产生歧义。③可行性:一个算法是可行的,即算法中描述的操作都是可以通过已经实现的基本运算执行有限次来实现。④输入:一个算法有零个或多个输入,这些输入取自某个特定的对象的集合。⑤输出:一个算法有一个或多个输出。26.对长度为n的线性表排序,在最坏情况下,比较次数不是n(n-1)/2的排序方法是________。A)快速排序B)冒泡排序C)直接插入排序D)堆排序参考答案:D【解析】在最坏情况下,快速排序、冒泡排序和直接插入排序需要的比较次数都是n(n-1)/2,堆排序需要比较的次数为nlog2n。7.下列关于栈的叙述正确的是________。A)栈按先进先出组织数据B)栈按先进后出组织数据C)只能在栈底插入数据D)不能删除数据参考答案:B【解析】在栈中,允许插入与删除的一端称为栈顶,而不允许插入与删除的一端称为栈底。栈顶元素总是最后被插入的元素,从而也是最先被删除的元素;栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素。因而栈是按照先进后出或后进先出的原则组织数据的。8.在数据库设计中,将E-R图转换成关系数据模型的过程属于________。A)需求分析阶段B)概念设计阶段C)逻辑设计阶段D)物理设计阶段参考答案:C【解析】数据库的逻辑设计分为:①将概念模型转换成一般的数据模型;②将一般的数据模型转换为特定的数据库管理系统所支持的数据模型。把概念模型转换成关系数据模型就是把E-R图转换成一组关系模式。9.有三个关系R、S和T如下:RBCDa0k1b1n1SBCDf3h2a0k1n2x1TBCDa0k1由关系R和S通过运算得到关系T,则所使用的运算为________。A)并B)自然连接C)笛卡尔积D)交参考答案:D【解析】在关系运算中,交的定义如下:设R1和R2为参加运算的两个关系,它们具有相同的度n,且相对应的属性值取自同一个域,则R1∩R2为交运算,结果仍为度等于n的关系,其中,3交运算的结果既属于R1又属于R2。10.设有表示学生选课的三张表,学生S(学号,姓名,性别,年龄,身份证号),课程C(课号,课名),选课SC(学号,课号,成绩),则表SC的关键字(键或码)为________。A)课号,成绩B)学号,成绩C)学号,课号D)学号,姓名,成绩参考答案:C【解析】选课SC表是学生S表和课程C表的映射表,主键是两个表主键的组合。11.以下叙述中正确的是A)C程序中的注释只能出现在程序的开始位置和语句的后面B)C程序书写格式严格,要求一行内只能写一个语句C)C程序书写格式自由,一个语句可以写在多行上D)用C语言编写的程序只能放在一个程序文件中参考答案:C【解析】在C语言中,注释可以加在程序中的任何位置,选项A)错误。C程序可以分模块写在不同的文件中,编译时再将其组合在一起,选项D)错误。C程序的书写风格很自由,不但一行可以写多个语句,还可以将一个语句写在多行中。所以正确答案为选项C)。12.以下选项中不合法的标识符是A)printB)FORC)&aD)_00参考答案:C【解析】C语言合法标识符的命名规则是:标识符只能由字母、数字和下划线组成,并且第一个字符必须为字母或下划线。因为选项C)中的标识符的第一个字符为&,所以选项C)为本题的正确答案。13.以下选项中不属于字符常量的是A)′C′B)′′C′′C)′\xCC′D)′\072′参考答案:B【解析】在C语言程序中,用单引号把一个字符或反斜线后跟一个特定的字符括起来表示一个字符常量。选项A)、C)和D)为正确的字符常量;而选项B)是用双引号括起来的字符,表示一个字符串常量,所以正确答案为选项B)。14.设变量已正确定义并赋值,以下正确的表达式是A)x=y*5=x+zB)int(15.8%5)C)x=y+z+5,++yD)x=25%5.0参考答案:C【解析】求余运算符%两边的运算对象必须是整型,而选项B)和D)中%两边的运算对象有浮点整数据,所以选项B)和D)是错误的表达式;在选项A)中赋值表达式的两边出现相同的变量x,也是错误的;选项C)是一个逗号表达式,所以正确答案为C)。15.以下定义语句中正确的是A)inta=b=0;4B)charA=65+1,b=′b′;C)floata=1,*b=&a,*c=&b;D)doublea=0.0;b=1.1;参考答案:B【解析】本题考查变量的定义方法。如果要一次进行多个变量的定义,则在它们之间要用逗号隔开。因此选项A)和D)错误;在选项C)中,变量c是一个浮点型指针,它只能指向一个浮点型数据,不能指向指针变量b;所以正确答案为B)。16.有以下程序段:charch;intk;ch=′a′;k=12;printf(%c,%d,,ch,ch,k);printf(k=%d\n,k);已知字符a的ASCII码值为97,则执行上述程序段后输出结果是A)因变量类型与格式描述符的类型不匹配输出无定值B)输出项与格式描述符个数不符,输出为零或不定值C)a,97,12k=12D)a,97,k=12参考答案:D【解析】输出格式控制符%c表示将变量以字符的形式输出;输出格式控制符%d表示将变量以带符号的十进制整型数输出。所以第一个输出语句输出的结果为a,97,第二个输出语句输出的结果为k=12,所以选项D)为正确答案。17.已知字母A的ASCII码值为65,若变量kk为char型,以下不能正确判断出kk中的值为大写字母的表达式是A)kk=′A′&&kk=′Z′B)!(kk=′A′||kk=′Z′)C)(kk+32)=′a′&&(kk+32)=′Z′D)isalpha(kk)&&(kk91)参考答案:B【解析】C语言的字符以其ASCII码的形式存在,所以要确定某个字符是大写字母,只要确定它的ASCII码在'A'和'Z'之间就可以了,选项A)和C)符合此要求。在选项D)中,函数isalpha用来确定一个字符是否为字母,大写字母的ASCII码值的范围为65到90,所以如果一个字母的ASCII码小于91,那么就能确定它是大写字母。本题答案选B)。18.当变量c的值不为2、4、6时,值也为真的表达式是A)(c==2)||(c==4)||(c==6)B)(c=2&&c=6)||(c!=3)||(c!=5)C)(c=2&&c=6)&&!(c%2)D)(c=2&&c=6)&&(c%2!=1)参考答案:B【解析】满足表达式(c=2&&c=6)的整型变量c的值是2,3,4,5,6。当变量c的值不为2,4,6时,其值只能为3或5,所以表达式c!=3和c!=5中至少有一个为真,即不论c为何值,选项B)中表达式的值都为真。正确答案为B)。19.若变量已正确定义,有以下程序段:5inta=3,b=5,c=7;if(ab)a=b;c=a;if(c!=a)c=b;printf(%d,%d,%d\n,a,b,c);其输出结果是A)程序段有语法错B)3,5,3C)3,5,5D)3,5,7参考答案:B【解析】两个if语句的判断条件都不满足,程序只执行了c=a这条语句,所以变量c的值等于3,变量b的值没能变化,程序输出的结果为3,5,3。所以正确答案为选项B)。20.有以下程序:#includestdio.hmain(){intx=1,y=0,a=0,b=0;switch(x){case1:switch(y){case0:a++;break;case1:b++;break;}case2:a++;b++;break;case3:a++;b++;}printf(a=%d,b=%d\n,a,b);}程序的运行结果是A)a=1,b=0B)a=2,b=2C)a=1,b=1D)a=2,b=1参考答案:D【解析】本题考查了switch结构的内容。在C语言中,程序执行完一个case标号的内容后,如果没有break语句,控制结构会转移到下一个case继续执行,因为case常量表达式只是起语句标号作用,并不是在该处进行条件判断。本题程序在执行完内部switch结构后,继续执行了外部switch结构的case2分支。最后a和b的值分别为2和1。21.有以下程序:#includestdio.hmain(){intx=8;for(;x0;x--){if(x%3){printf(%d,,x--);continue;}printf(%d,,--x);6}}程序的运行结果是A)7,4,2,B)8,7,5,2,C)9,7,6,4,D)8,5,4,2,参考答案:D【解析】在本题中,程序每执行一次循环x的值就减2,循环共执行4次。当x的值为8,4,2时,printf语句先输出x的值,再将x的值减1。而当x为6时,if语句条件成立,程序先将x的值减1,再将其输出。所以输出结果为选项D)。22.以下不构成无限循环的语句或语句组是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;参考答案:A【解析】项A)中变量n的值,先自加1,再进行循环条件判断,此时循环条件n=0不成立,跳出循环。所以正确答案为A)。23.有以下程序:#includestdio.hmain(){inta[]={1,2,3,4},y,*p=&a[3];--p;y=*p;printf(y=%d\n,y);}程序的运行结果是A)y=0B)y=1C)y=2D)y=3参考答案:D【解析】在程序中指针变量p初始指向a[3],执行p减1后,p指向a[2],语句y=*p的作用是把a[2]的值赋给变量y,所以输出为y=3。正确答案为D)。24.以下错误的定义语句是A)intx[][3]={{0},{1},{1,2,3}};B)intx[4][3]={{1,2,3},{1,2,3},
本文标题:国二C语言历年真题
链接地址:https://www.777doc.com/doc-2555748 .html