二级C语言选择题专项强化真题试卷10
选择题
1.有以下程序(注意:字母a的ASCII码值为97):
#include<stdio.h>
void fun(char*s)
{
while(*s)
{
if(*s%2==0)
printf(\\(A)
A. d
B. go
C. god
D. good
解析:good中g的ASCII码值为103,o的ASCII码值为111,d的ASCII码值为100。在fun函数中,if(*s%2==0)语句会挑选出ASCII码值为偶数的字母。在good中,只有d的ASCII码值为偶数,所以结果为d。
2.若函数中有定义语句:int k;则( )。(B)
A. 系统将自动给k赋初值0
B. 这时k中的值无定义
C. 系统将自动给k赋初值—1
D. 这时k中无任何值
解析:int k;这条语句是定义一个整型变量k,是动态定义,所以k中的值无定义。如果采用静态定义,则会自动初始化变量为默认值1。
3.下列与队列结构有关联的是( )。(D)
A. 函数的递归调用
B. 数组元素的引用
C. 多重循环的执行
D. 先到先服务的作业调度
解析:队列的修改是依“先进先出”的原则进行的,故D选项正确。
4.层次型、网状型和关系型数据库的划分原则是( )。(D)
A. 记录长度
B. 文件的大小
C. 联系的复杂程度
D. 数据之间的联系方式
解析:层次模型的基本结构是树形结构,网状模型是一个不加任何条件限制的无向图,关系模型采用二维表来表示,因此三种数据库的划分原则是数据之间的联系方式,选项D正确。
5.有以下程序段:
int m=33,n=66;
m=m^n;n=n^m;m=m^n;
执行上述语句后,m和n的值分别是( )。 .(A)
A. m=66,n=33
B. m=33,n=66
C. m=66,n=66
D. m=33,n=33
解析:m=m^n;n=n^m;m=m^n;语句实现了m和n的交换。故正确选项为A。
6.有以下程序:
#include<stdio.h>
main()
{double x=2.0,y;
if(x<0.0)y=0.0;
else if((x<5.0)&&(!x))
y=1.0/(x+2.0);
else if(x<10.0)y=1.0/x;
else y=10.0;
printf(\\(C)
A. 0.000000
B. 0.250000
C. 0.500000
D. 1.000000
解析:本题重点考查if语句,变量x和y均为double类型,由于变量x赋值为2.0,因此执行if((x<5.0)&&(!x)),即条件为0,继续执行if(x<1 0.0),条件为真,即执行y=1.0/x;。依据printf()函数输出类型,f是以小数形式输出单/双精度实数。故C选项正确。
7.面向对象方法中,继承是指( )。(D)
A. 一组对象所具有的相似性质
B. 一个对象具有另一个对象的性质
C. 各对象之间的共同性质
D. 类之间共享属性和操作的机制
解析:继承是面向对象的方法的一个主要特征,是使用已有的类的定义作为基础建立新类的定义技术。广义地说,继承是指能够直接获得已有的性质和特征,而不必重复定义它们,所以说继承是指类之间共享属性和操作的机制。
8.若某二叉树中的所有节点值均大于其左子树上的所有节点值,且小于右子树上的所有节点值,则该二叉树遍历序列中有序的是( )。(B)
A. 前序序列
B. 中序序列
C. 后序序列
D. 以上说法均可以
解析:二叉树遍历可以分为3种:前序遍历(访问根节点在访问左子树和访问右子树之前)、中序遍历(访问根节点在访问左子树和访问右子树两者之间)、后序遍历(访问根节点在访问左子树和访问右子树之后)。由于节点值均大于其左子树上的所有节点值,且小于右子树上的所有节点值,那么只要遍历时访问根节点在访问左子树和右子树之间,遍历序列有序,即中序序列有序。故选B选项。
9.下面不属于对象主要特征的是( )。(C)
A. 唯一性
B. 多态性
C. 可复用性
D. 封装性
解析:对象的基本特点如下:
10.设有定义:int x,y,z;,且各变量已赋正整数值,则以下能正确表示代数式“(A)
A. 1.0/x/y/z
B. 1/x*y*z
C. 1/(x*y*z)
D. 1/x/y/(double)z
解析:代数表达式1/(x.y.z)是小数,转为C语言的表达式必须是小数。A选项由于1.0为浮点数,计算结果自动转换为浮点数,故A选项正确。B、C、D选项的表达式均为0。答案为A选项。
11.设有定义:int a[10]={0,1,2,3,4,5,6,7,8,9},*p=a,i;,若0≤i≤9,则对a数组元素的引用错误的是( )。(A)
A. a[10]
B. *(&a[i])
C. p[i]
D. a[p-a]
解析:长度为n的数组其各个元素的下标应该是从0到n-1,因此,长度为10的数组a,第10个元素为a[9],而不是a[10],答案为A选项。
12.以下选项中关于程序模块化的叙述错误的是( )。(A)
A. 可采用自底向上、逐步细化的设计方法把若干独立模块组装成所要求的程序
B. 把程序分成若干相对独立、功能单一的模块,可便于重复使用这些模块
C. 把程序分成若干相对独立的模块,可便于编码和调试
D. 可采用自顶向下、逐步细化的设计方法把若干独立模块组装成所要求的程序
解析:程序模块化思想中,可以采用自顶向下、逐步细化的方法:所以选项A中“自底向上”的说法是错误的。
13.有以下程序:
#include<stdio.h>
void fun(int*s,int n1,int n2)
{
int i,j,t;
i=n1;j=n2;
while(i<j)
{
t=s[i];s[i]:s[j];s[j]=t;i++;j–;
}
}
main( )
{
int a[10]={1,2,3,4,5,6,7,8,9,0},k;
fun(a,0,3);fun(a,4,9);fun(a,0,9);
本文档预览:3600字符,共7482字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载