二级C语言选择题专项强化真题试卷35
选择题
1.将E-R图转换为关系模式时,实体和联系都可以表示为( )。(C)
A. 属性
B. 键
C. 关系
D. 域
解析:E-R图转换为关系模式时,实体和联系都可以表示为关系。
2.设有定义语句int(*f)(int);,则以下叙述中正确的是( )。(A)
A. f是指向函数的指针变量,该函数具有一个int类型的形参
B. f是基类型为int的指针变量
C. f是指向int类型一维数组的指针变量
D. f是函数名,该函数的返回值是基类型为int类型的地址
解析:f是函数指针,它指向的函数接受一个int型的形参,并且返回值是int类型。
3.软件的生命周期是指( )。(A)
A. 软件产品从提出、实现、使用维护到停止使用退役的过程
B. 软件从需求分析、设计、实现到测试完成的过程
C. 软件的开发过程
D. 软件的运行维护过程
解析:一般将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。也就是说,软件产品从考虑其概念开始,到该软件产品不能使用为止的整个时期都属于软件生命周期。
4.与数学表达式x>=y>=z对应的C语言表达式是( )。(D)
A. (x>=y)||(y>=x)
B. (x>=y>=z)
C. (x>=y)!(y>=z)
D. (x>=y)&&(y>=z)
解析:本题考查关系表达式和逻辑表达式。y小于等于x,同时y大于等于z,因此x>=y和y>=z是逻辑与的关系。故D选项正确。
5.下列叙述中错误的是( )。(C)
A. 算法的时间复杂度与算法所处理数据的存储结构有直接关系
B. 算法的空间复杂度与算法所处理数据的存储结构有直接关系
C. 算法的时间复杂度与空间复杂度有直接关系
D. 算法的时间复杂度与算法程序执行的具体时间是不一致的
解析:算法的时间复杂度是指执行算法所需要的计算工作量。数据的存储结构直接决定数据输入,而这会影响算法所执行的基本运算次数,A项正确。算法的空间复杂度是指执行这个算法所需要的内存空间,其中包括输入数据所占的存储空间,B项正确。而算法的时间复杂度与空间复杂度没有直接关系,C项错误。算法程序执行的具体时间受到所使用的计算机、程序设计语言以及算法实现过程中的许多细节所影响,而算法的时间复杂度与这些因素无关,所以是不一致的,D项正确。
6.有以下程序:
#include<stdio.h>
main()
{
int y=9;
for(;y>0;y——)
if(y%3==0)
printf(\\(D)
A. 875421
B. 963
C. 741
D. 852
解析:该程序的运行过程是y从9开始自减,每次判定y是否能被3整除,若是,则输出——y后的值,能被3整除的y值分别为9、6、3,所以答案选D。
7.设fp为指向某二进制文件的指针,且已读到此文件末尾,则函数feof(fp)的返回值为( )。(A)
A. 非0值
B. ’\0’
C. 0
D. NULL
解析:本题考查的是文件指针feof的运用。当文件读到结尾时,feof(fp)为非零值,否则为0。
8.以下叙述中正确的是( )。(A)
A. 如果企图通过一个空指针来访问一个存储单元,将会得到一个出错信息
B. 即使不进行强制类型转换,在进行指针赋值运算时,指针变量的基类型也可以不同
C. 设变量p是一个指针变量,则语句p=0;是非法的,应该使用p=NULL;
D. 指针变量之间不能用关系运算符进行比较
解析:空指针意味着该指针没有指向任何具体的变量,所以不能访问一个存储单元,A正确。指针的赋值运算只能在同一数据类型之间进行,故选项B错。语句p=0和p=NULL是一样的,都是把一个空指针赋给指针变量p,故选项C错。指针之间能进行关系运算,比较的是地址值的大小,选项D错。答案选A。
9.下面能作为软件需求分析工具的是( )。(D)
A. PAD图
B. 程序流程图
C. 甘特图
D. 数据流程图(DFD图)
解析:软件需求分析方法包括结构化分析方法和面向对象的分析方法两大类,前者常用工具为数据流图(DFD)、数据字典(DD)、判定表、判定树等。故D选项正确。选项B,是软件功能实现时设计图。
10.有以下程序:
#include
main()
{ int x,y,z;
x=y=1;
z=x++,y++,++y;
printf(\\(C)
A. 2,3,3
B. 2,3,2
C. 2,3,1
D. 2,2,1
解析:z=x++,y++,++y;,因为赋值运算符的优先级高于逗号运算符的优先级,所以可以将上式表示成(z=x++),(y++),(++y)。然后从左向右先计算表达式z=x++,因为x++先使用后自增,所以z的值为1,x的值为2。再计算逗号表达式第二个表达式y++,此时y的值为2,最后计算第三个表达式++y,y的值为3。
11.以下选项中,合法的一组C语言数值常量是( )。(A)
A. 12.0Xa23 4.5e0
B. 028.5e-3 -0xf
C. 177 4e1.5 0abc
D. 0x8A 10,000 3.e5
解析:C语言中八进制整型常量的开头是数字0,十六进制整型常量的开头数字是0x。C语言中的实型常量有两种表示形式:小数形式,小数形式表示的实型常量必须要有小数点;指数形式,以“e”或“E”后跟一个整数来表示以10为底数的幂数,且规定字母e或E之前必须要有数字,且e或E后面的指数必须为整数。B)选项中028错误,八进制中没有数字8。C)选项中4e1.5中e后面的指数不是整数。D)选项中3.e5小数点后面缺少数字。
12.有如下程序:
#include
main()
{
int i,data;
scanf(\\(A)
A. 3—4一
B. 1—2—3一
C. 0—1—2一
D. 0一1—2—3一
解析:从键盘输入3,即给变量data赋值为3,进入for循环语句,满足if语句的条件i<3,运行con—tinue语句结束本次循环,而不是终止整个循环的执行。当i加到3时,if条件不满足,执行printf函数,输出3一,i再加到4,输出4一,i再加l等于5,退出for循环,程序运行后结果是:“3—4一”。因此答案为A选项。
13.有以下程序
#include<stdio.h>
main( )
{int a=6,i;
for(i=1;i<=3;i++)
{if(a>=5)break;
if(a%2){a+=2;continue;}
a=(a-3,a+4);
}
prinff(\\(B)
A. 0,6
B. 1,6
本文档预览:3600字符,共7943字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载