二级C语言 2套 选择题的副本.docx
- 文档编号:29193903
- 上传时间:2023-07-21
- 格式:DOCX
- 页数:25
- 大小:26.55KB
二级C语言 2套 选择题的副本.docx
《二级C语言 2套 选择题的副本.docx》由会员分享,可在线阅读,更多相关《二级C语言 2套 选择题的副本.docx(25页珍藏版)》请在冰豆网上搜索。
二级C语言2套选择题的副本
(1)算法空间复杂度的度量方法是
A)算法程序的长度
B)算法所处理的数据量
C)执行算法所需要的工作单元
D)执行算法所需要的存储空间
答案:
D
【解析】算法的空间复杂度是指执行这个算法所需要的内存空间,。
算法执行期间所需的存储空间包括3个部分:
输入数据所占的存储空间;程序本身所占的存储空间;算法执行过程中所需要的额外空间。
D选项正确。
(2)下列叙述中正确的是
A)循环队列属于队列的链式存储结构
B)双向链表是二叉树的链式存储结构
C)非线性结构只能采用链式存储结构
D)有的非线性结构也可以采用顺序存储结构
答案:
D
【解析】循环队列是队列的一种顺序存储结构,A选项错误。
双向链表为顺序存储结构,二叉树通常采用链式存储结构,B选项错误。
完全二叉树是属于非线性结构,但其最佳存储方式是顺序存储方式,C选项错误,D选项正确。
(3)下列叙述中正确的是( )。
A)顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的
B)顺序存储结构只针对线性结构,链式存储结构只针对非线性结构
C)顺序存储结构能存储有序表,链式存储结构不能存储有序表
D)链式存储结构比顺序存储结构节省存储空间
答案:
A
【解析】链式存储结构既可以针对线性结构也可以针对非线性结构,所以B)与C)错误。
链式存储结构中每个结点都由数据域与指针域两部分组成,增加了存储空间,所以D)错误。
(4)下列关于栈的叙述中,正确的是
A)栈底元素一定是最后入栈的元素
B)栈顶元素一定是最先入栈的元素
C)栈操作遵循先进后出的原则
D)以上说法均错误
答案:
C
【解析】栈顶元素总是后被插入的元素,从而也是最先被删除的元素;栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素。
栈的修改是按后进先出的原则进行的。
因此,栈称为先进后出表,或"后进先出"表,所以选择C。
(5)在软件设计中不使用的工具是( )。
A)系统结构图
B)PAD图
C)数据流图(DFD图)
D)程序流程图
答案:
C
【解析】系统结构图是对软件系统结构的总体设计的图形显示。
在需求分析阶段,已经从系统开发的角度出发,把系统按功能逐次分割成层次结构,是在概要设计阶段用到的。
PAD图是在详细设计阶段用到的。
程序流程图是对程序流程的图形表示,在详细设计过程中用到。
数据流图是结构化分析方法中使用的工具,它以图形的方式描绘数据在系统中流动和处理的过程,由于它只反映系统必须完成的逻辑功能,所以它是一种功能模型,是在可行性研究阶段用到的而非软件设计时用到,所以选择C)。
(6)下面对类-对象主要特征描述正确的是()。
A)对象唯一性
B)对象无关性
C)类的单一性
D)类的依赖性
答案:
A
【解析】对象的基本特点是:
标识唯一性、分类性、多态性、封装性、模块独立性好。
类是具有共同属性、共同方法的对象的集合,是关于对象的抽象描述,反映属于该对象类型的所有对象的性质。
对象具有的性质,类也具有。
故A选项正确。
(7)在软件开发中,需求分析阶段产生的主要文档是( )。
A)可行性分析报告
B)软件需求规格说明书
C)概要设计说明书
D)集成测试计划
答案:
B
【解析】A)错误,可行性分析阶段产生可行性分析报告。
C)错误,概要设计说明书是总体设计阶段产生的文档。
D)错误,集成测试计划是在概要设计阶段编写的文档。
B)正确,需求规格说明书是后续工作如设计、编码等需要的重要参考文档。
(8)下面对软件测试描述错误的是()。
A)严格执行测试计划,排除测试的随意性
B)随机地选取测试数据
C)测试根本目的是尽可能多地发现并排除软件中隐藏的错误
D)软件测试是保证软件质量的重要手段
答案:
B
【解析】在测试之前制定测试计划,并严格执行,测试用例的选择不可随意,应选择有代表性的,尽可能发现迄今为止尚未发现的错误,A选项叙述正确,B选项叙述错误。
测试根本目的是尽可能多地发现并排除软件中隐藏的错误,C选项叙述正确。
软件测试是保证软件质量、可靠性的关键步骤,D选项叙述正确。
故正确答案为B选项。
(9)在数据库系统中,用于对客观世界中复杂事物的结构及它们之间的联系进行描述的是
A)概念数据模型
B)逻辑数据模型
C)物理数据模型
D)关系数据模型
答案:
A
【解析】数据模型按照不同的应用层次分为以下3种类型:
概念数据模型,着重于对客观世界复杂事物的描述及对它们内在联系的刻画;逻辑数据模型,是面向数据库系统的模型,着重于在数据库系统一级的实现;物理数据模型,是面向计算机物理实现的模型,此模型给出了数据模型在计算机上物理结构的表示。
A选项正确。
(10)公司中有多个部门和多名职员,每个职员只能属于一个部门,一个部门可以有多名职员。
则实体部门和职员间的联系是
A)1:
1联系
B)m:
1联系
C)1:
m联系
D)m:
n联系
答案:
C
【解析】两个实体集间的联系实际上是实体集间的函数关系,主要有一对一联系(1:
1)、一对多联系(1:
m)、多对一联系(m:
1)、多对多联系(m:
n)。
对于每一个实体部门,都有多名职员,则其对应的联系为一对多联系(1:
m),答案选C。
(11)关于程序中的注释,以下叙述正确的是()。
A)注释的内容必须放在一对/*和*/之间
B)注释必须置于所说明的语句前或语句后
C)注释中间可以嵌套另一个注释
D)注释内容错误会导致编译出错
答案:
A
【解析】程序中,注释可以出现在程序的任何位置,B选项错误;注释中间不能嵌套另一个注释,C选项错误;注释内容不影响程序编译,D选项错误,答案为A选项。
(12)有以下程序
#include
main()
{intk=-17;
printf("%d,%o,%x\n",k,1-k,1-k);
}
程序的运行结果是()。
A)-17,22,12
B)-17,12,22
C)-17,-22,-12
D)17,22,12
答案:
A
【解析】整型常量有3种表示方法,分别是十进制数表示法、八进制数表示法和十六进制数表示法。
十进制整常量没有前缀,输出格式控制符为%d;八进制整常量以0作为前缀,输出格式控制符为%o;十六进制整常量以0X或0x作为前缀,输出格式控制符为%x。
1-k=18,整型常量18用八进制表示为22,十六进制表示为12,A选项正确。
(13)以下定义语句中正确的是()。
A)inta=b=0;
B)charA=65+1,b='b';
C)floata=1,*b=&a,*c=&b;
D)doublea=0.0;b=1.1;
答案:
B
【解析】A选项语句中b变量还没有定义不能直接用于给a变量赋值。C选项语句中*b、*c表示的是一个实型变量的地址,不能再将&b赋值给指针型变量c。D选项语句中a=0.0后面应该为逗号,不能是分号。
(14)有以下程序:
#include
main()
{ ints,t,A=10;doubleB=6;
s=sizeof(A);t=sizeof(B);
printf("%d,%d\n",s,t);
}
在VC6.0平台上编译运行,程序运行后的输出结果是( )。
A)10,6
B)4,4
C)2,4
D)4,8
答案:
D
【解析】C语言中利用sizeof()函数判断数据类型长度,在VC6.0平台中,整型int占有4个字节,double型数据占有8个字节。
(15)表达式:
(int)((double)9/2)-9%2的值是()。
A)0
B)3
C)4
D)5
答案:
B
【解析】先将整型数据9强制转换成double型,然后除以2得到的结果与double型保持一致,即为4.5,然后将4.5强制转换成整型数据4,然后计算9%2的值为1,最后计算4-1的值为3,所以选择B选项。
(16)设有定义:
intx=11,y=12,z=0;,以下表达式值不等于12的是()。
A)(z,x,y)
B)(z=x,y)
C)z=(x,y)
D)z=(x==y)
答案:
D
【解析】逗号表达式的计算过程是从左到右逐个求每个表达式的值,取最右边一个表达式的值作为该逗号表达式的值。
赋值运算结合性为由右向左结合,赋值运算符左值为变量,右值为变量或常量,且左右两边数据类型相同才能实现赋值。
成功实现赋值后以左值为返回值。
逻辑表达式成立则返回1,不成立返回0。
A选项逻辑表达式x==y不成立,则z=0,表达式值为0。
B选项中逗号表达式x,y取y值为表达式值,然后赋值给z=12,表达式值为12。
C选项逗号表达式(x,y)取y值为表达式值,然后赋值给z=12,表达式值为12。
D选项逗号表达式(z,x,y)取y值为表达式值12。
选择D选项。
(17)若有定义:
inta=0,b=0,c=0,d=0;,有C语言表达式(a++&&b++)?
c++:
d++,以下关于其执行顺序的叙述正确是()。
A)先执行a++,表达式a++的值为0,由此即可确定(a++&&b++)的值为0,因此执行d++
B)先执行a++,表达式a++的值为0;再执行b++,表达式b++的值为0,由此可确定(a++&&b++)值为0,因此执行d++
C)先执行a++,表确定(a++&&b++)值为1,因此执行c++达式a++的值为1;再执行b++,表达式b++的值为1,由此可
D)先执行b++,表达式b++的值为1;再执行a++,表达式a++的值为1,由此可确定(a++&&b++)值为1,因此执行c++
答案:
A
【解析】表达式1?
表达式2:
表达式3,若表达式1为真,则执行表达式2,否则执行表达式3。
逻辑与运算符遵循"短路求值"策略,即只有在仅靠左操作数的值无法确定该逻辑表达式的结果时,才会求解右操作数,表达式(a++&&b++)中,左操作数a++的值为0,已经可以确定整个逻辑表达式的结果为0,因此右操作数b++不再求解,直接执行表达式3,即d++,答案为A选项
(18)有以下程序:
#include
main()
{unsignedchara=2,b=4,c=5,d;
d=a|b;d&=c;printf("%d\n",d);}
程序运行后的输出结果是( )。
A)3
B)4
C)5
D)6
答案:
B
【解析】&按位与,如果两个相应的二进制位都为1,则该位的结果值为1,否则为0。
|按位或,两个相应的二进制位中只要有一个为1,该位的结果值为1。
2的二进制为00000010,4的二进制为00000100,所以做或运算结果为00000110,该数与5即00000101做与操作结果为00000100,即4
(19)有以下程序
#include
main()
{charc;
c=getchar();
do{
putchar(c++);
}while((c=getchar())!
='#');
}
程序运行时从第一列开始输入:
abcdefg##<回车>,则输出结果是()。
A)bcdefgh$
B)bcdefgh
C)abcdefg#
D)abcdefg
答案:
D
【解析】运算符"++"放在变量后面时,先参与其他操作,再对变量+1。
putchar(c++)表示先输出当前c值,再对c值+1,当输入abcdef##时,在while语句中,程序输入"#",循环退出。
因此输出为abcdefg,答案为D选项。
(20)若有定义:
charc;intd;,程序运行时输入:
1,2<回车>,能把值1输入给变量c、值2输入给变量d的输入语句是
A)scanf("%c,%d",&c,&d);
B)scanf("%c%d",&c,&d);
C)scanf("%d,%f",&c,&d);
D)scanf("%d%d",&c,&d);
答案:
A
【解析】scanf函数的调用格式为:
scanf(格式控制串,地址列表);,格式控制串,由%开头,后跟格式字符,如c对应字符型变量,d对应整型变量。
地址表列需要读入的是所有变量的地址或字符串的首地址。
如果除了格式说明字符和附加格式字符外,如果还有其他字符,则在输入数据时要求按一一对应的位置原样输入这些字符,比如两个格式说明之间有一个逗号,则从键盘输入时输入量之间也应照原样输入逗号。
A选项正确。
(21)有以下程序
#include
main()
{inta=1,b=2,c=3,d=0;
if(a==1&&b++==2)
if(b!
=2||c--!
=3)
printf("%d,%d,%d\n",a,b,c);
elseprintf("%d,%d,%d\n",a,b,c);
elseprintf("%d,%d,%d\n",a,b,c);
}
程序运行后的输出结果是()。
A)1,3,2
B)1,3,3
C)1,2,3
D)3,2,1
答案:
B
【解析】else总是和最近的if配对,所以进入第一个if语句中条件判断时,因为是逻辑与操作需要两边运算对象的值均为非零值,才为真,所以需要逐个执行判断的结果为1,不再执行第二个case语句中的操作。而是进入第二个if语句条件判断,因为b!
=2条件成立所以整个条件表达式的值为真,所以不再执行逻辑或的第二个运算对象(c--!
=3)c的值不变,也不再执行第一个else语句。打印a的值1,b的值3,c的值3。
(22)有以下程序
#include
main()
{ints;
scanf("%d",&s);
while(s>0)
{switch(s)
{case1:
printf("%d",s+5);
case2:
printf("%d",s+4);break;
case3:
printf("%d",s+3);
default:
printf("%d",s+1);break;
}
scanf("%d",&s);
}
}
运行时,若输入123450<回车>,则输出结果是()。
A)66656
B)6566456
C)66666
D)6666656
答案:
B
【解析】switch语句的执行流程是:
首先计算switch后面圆括号中表达式的值,然后用此值依次与各个case的常量表达式比较,若圆括号中表达式的值与某个case后面的常量表达式的值相等,就执行此case后面的语句,执行后遇break语句就退出switch语句;若圆括号中表达式的值与所有case后面的常量表达式都不等,则执行default后面的语句。然后退出。所以输入1时打印65,输入2时打印6,输入3时打印64,输入4时打印5,输入5时打印6。
(23)设有以下代码
do{
while(条件表达式1)
循环体A;
}while(条件表达式2);
while(条件表达式1)
{
do{
循环体B;
}while(条件表达式2);
}
其中,循环体A与循环体B相同,以下叙述正确的是()。
A)循环体A与循环体B的执行次数相同
B)循环体A比循环体B的执行次数多一次
C)循环体A比循环体B的执行次数少一次
D)循环体A与循环体B的执行次数不确定
答案:
A
【解析】while循环语句一般形式为:
while(表达式){循环体},执行过程为:
首先判断表达式,成立(非0)则执行循环体,不成立(0)则退出循环。
do…while循环语句一般形式为:
do{循环体}while(表达式),执行过程为:
首先执行循环体,之后判断表达式,成立(非0)则再一次执行循环体,不成立(0)则退出循环。
假设表达式1与表达式2成立次数为n1与n2。
若n1>n2,则循环体A执行次数为n2+1,B执行次数n2+1;若n1 (24)有以下程序 #include main() {inta=0,b=0; for(;a<5;a++) {if(a%2==0)continue; b+=a; break; } printf("%d\n",b); } 程序运行后的输出结果是()。 A)1 B)4 C)0 D)10 答案: A 【解析】for语句中,当a=0时,满足for循环中if语句的条件,执行continue继续下一次循环,a+1后再进入for语句循环,此时a=1不满足if语句,执行b=b+a为1,接着执行break语句,终止循环,最后输出b=1,故答案为A选项。 (25)有以下程序 #include main() {inti=5; do {if(i%3==1) if(i%5==2) {printf("*%d",i);break;} i++; }while(i! =0); printf("\n"); } 程序的运行结果是 A)*2*6 B)*3*5 C)*5 D)*7 答案: D 【解析】do...while语句是先执行后判断,所以第一次先执行循环体,判断i%3==1的条件,由于i为5所以余数为2,条件不成立,执行i++,i的值为6,判断while条件为真,第二次执行循环体,同第一次循环体的执行过程一样,i的值变为7,判断while条件为真,第三次执行循环体,此时i%3==1条件成立,判断i%5==2也成立,打印*与i的值,即*7,然后执行break语句,跳出循环。所以选择D选项。 (26)有以下程序 #include main() {intc[6]={10,20,30,40,50,60},*p,*s; p=c;s=&c[5]; printf("%d\n",s-p); } 程序运行后的输出结果是()。 A)5 B)50 C)6 D)60 答案: A 【解析】首先初始化一维数组c[6],语句p=c;指将c[0]元素的地址赋给指针变量p;语句s=&c[5];指将c[5]元素的地址赋给指针变量s。 程序最后输出s-p,即结果为5。 因此A选项正确。 (27)有以下程序 #include voidfun(inta[],intn,intflag) {inti=0,j,t;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二级C语言 2套 选择题的副本 二级 语言 选择题 副本