计算机等级考试二级C语言考前密卷[1]上
一、选择题(1) ~ (10)每小题2分,(11) ~ (50)每小题1分,共60分)
以下四个选项a)、b)、c)、d)只有一个是正确的。请在答题卡的相应位置涂上正确的选项。
(1)在数据结构中,数据结构在逻辑上可以分为_ _ _ _ _ _ _ _。
A)动态结构和静态结构B)紧凑结构和非紧凑结构
c)线性结构和非线性结构D)内部结构和外部结构
答案:C
点评:逻辑结构反映数据元素之间的逻辑关系,线性结构代表数据元素之间的一对一关系,非线性结构代表数据元素之间的一对多或多对一关系。
(2)如果堆码顺序为L,2,3,4,并且在堆码过程中可以进行堆码,下列不可能的堆码顺序是_ _ _ _ _ _ _ _ _。
A)1,4,3,2 B)2,3,4,l
C)3,1,4,2 D)3,4,2,1
答案:C
注释:Stack是一种后进先出
(3)在排序方法中,将整个无序序列分成若干个小的子序列,分别插入排序的方法称为_ _ _ _ _ _ _ _ _。
A) Hill排序b) Bubble排序c) Insert排序d) Select排序
答案:A
点评:Hill排序法的基本思想是将整个无序序列分成若干个小的子序列进行Insert排序。
(4)在序列表(3,6,8,10,12,15,16,18,21,25,30)中,用二分法求键值11,需要比较的键值个数是_ _ _ _ _ _ _ _ _。
A)2 B)3 C)4 D)5
答案:C
点评:二分搜索法是将键与线性表的中间元素进行比较,然后根据比较结果用同样的方法判断是结束查找还是继续在左或右子表中查找。在这个问题中,与ll相比的键码分别是15,8,10,12。
(5)对于有n个节点(没有头节点)的单向链表,指针单元的个数至少要有_ _ _ _ _ _ _ _。
A)n-1 B)n C)n+1D)2n
答案:C
备注:在n个节点(无头节点)的单向链表中,每个节点都有一个指针单元(即指针字段),添加头指针时至少需要n+1个指针单元。
(6)在软件开发过程中,软件结构设计是为了描述_ _ _ _ _ _。
A)数据存储结构B)软件架构C)软件结构测试D)软件控制过程
答案:B
评价:从项目管理的角度来看,软件设计分两步完成:概要设计和详细设计。概要设计(也称为结构设计)将软件需求转化为软件架构,确定系统级接口、全局数据结构或数据库模式。
(7)模块本身的内聚性是衡量模块独立性的重要因素之一。在七种衔接方式中,具有衔接作用的是_ _ _ _ _ _ _ _。
A)顺序衔接B)程序衔接C)逻辑衔接D)功能衔接
回答:D
点评:衔接是衡量一个模块中的元素相互结合的紧密程度。衔接有七种类型,其中从弱到强的顺序是:偶然衔接、逻辑衔接、时间衔接、过程衔接、交际衔接、顺序衔接和功能衔接。
(8)数据存储和数据流动是_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _的 _ _ _ _
A)分析结果B)事件C)动作D)数据
回答:D
评价:数据流图有四个组成部分:源点或端点、处理、数据存储和数据流。 存储是静态的数据,数据流是动态的数据。
(9)数据的完整性是指正确性, 有效性和_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
A)可维护性B)独立性C) 安全性D)兼容性
回答:D
点评:数据模型的完整性规则是给定数据模型中数据及其关系的约束和依赖规则,用于限制符合数据模型的数据库状态及其状态变化,以保证数据的正确性、有效性和兼容性。
(10)关系代数运算是基于_ _ _ _ _ _ _ _ _的运算。
A)关系运算B)谓词运算C)集合运算D)代数运算
答案:C
点评:关系代数运算是以关系代数为运算对象的一组高级运算。它的基本运算是并、交、差、笛卡尔积,还包括垂直除法(投影)、水平除法(选择)、关系组合(连接)等等。(11)是_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
A)调试程序B)解释程序C)编译程序D)编辑程序
答案:C
点评:用高级语言编写的程序称为“源程序”,而计算机只能识别和执行由0和l组成的二进制指令,因此, 高级语言首先要用一种叫“编译器”的软件把源程序翻译成
(12)_ _ _ _ _ _ _ _ _是C语言程序的基本单位。
A)函数B)进程C)子程序D)子程序
答案:A
评价:C程序是由函数组成的。一个C源程序至少包含一个主函数,也可以包含一个主函数和几个其他函数。因此,函数是C程序的基本单位。
(13)C语言中可以用作用户标识符的是_ _ _ _ _ _ _ _。
a)void B)as _ b3c)for d)2c
define _ 123-ABC do
word if cas SIG
答案:B
注释:C语言规定标识符只能由字母、数字和下划线组成。还应注意,关键字不能用作标识符。选项A中Void,for在c中是关键字,d中2c以字母开头。
(14)如果有以下类型的解释性声明:
char w;int x;浮点y,z;
那么表达式w*x+z-y的结果就是_ _ _ _ _ _ _ _类型。
A)float b)char c)int d)double
答案:A
备注:在执行运算时,不同类型的数据参与运算,因此在执行运算前需要将它们转换成同一类型的数据。从低到高的转换顺序是:char,short→int→unsigned→long→double→float,所以结果是float。
(15)main(()
{ float x = 123 a56;
printf("%-5.2f\n ",x);
}
上述程序的输出结果是_ _ _ _ _ _ _ _。
A)123.4 b)123.5 c)123.45d)123.46
答案:D
注释:F格式字符,用于输出实数和小数形式。“%-m.nf”的意思是输出数据占用M列,其中N个小数位,如果输出位数小于M,右端用空补充。如果总长度大于列数,则根据实际情况对输出进行四舍五入。
(16)下列语句的输出结果是_ _ _ _ _ _ _ _。
Printf("%d\n ",ST rlen(" \ t \ " \ 065 \ xff \ n "));
A)14 B)8
C)5 D)输出项非法,没有正常输出
答案:C
点评:C语言中,以“\”开头的字符都是转义字符,其中“\”后面可以跟L ~ 3位数字。
(17)下列程序的输出结果是_ _ _ _ _ _ _ _ _。
main()
{ int a=0,b=0,c = 0;
if(++a > 0lI ++ b > 0)++ c;
printf("\na=%d,b=%d,c=%d ",a,b,c);
}
A)a=0,b=0,c=0 B)a=l,b=l,c = 1
c) a = l,b = o,c = id) a = 0,b = 1
(18)下列程序的输出结果是_ _ _ _ _ _ _ _ _。
Main()
{ int I;
for(I = 1;I+l;i++)
{ if(i>4){printlf("%d ",i++);打破;}
}
printf("%d ",i++);
}
A)55 B)56
c)程序出错,无输出D)循环条件始终为真,无限循环
答案:B
备注:本程序中有一个for循环,但注意,for循环的条件是“I+”当i=l时,i+l的值为真。如果判断条件不为真,则执行i++,I的值为5。(19)下列程序的输出结果是_ _ _ _ _ _ _ _ _。
#定义一个100
main()
{ int i=O,sum = O;
do{ if(I==(i/2)*2)继续;
sum+= I;
}while(++i printf("%d\n ",sum);
}
A)2500 b)2050 c)4d)O
答案:A
评价:这个问题程序的作用是求1到_99(包括1和99)所有奇数的和。程序中while循环的终止条件是++i=100。在while循环中,如果I是偶数,执行continue,跳过这个循环执行下一个,否则sum。最终输出值是1到99之间所有奇数的和(包括L和99) (1+99) * 50/2 = 2500。
(20)下列程序的输出结果是_ _ _ _ _ _ _ _ _。
main()
{ int I = 3;
switch(i)
{案例一:
案例二:printf("%d ",I);
情况三:
情况四:破;
默认值:printf(" OK ");
}
}
A)0b)3c)OK D)无输出
回答:D
点评:问题中,I的值为3。由于“案例3:”后没有break语句,继续执行“down”
(21)下面这个程序执行后的输出结果是_ _ _ _ _ _ _ _ _。
main()
{ int m[][3]= { 1,4,7,2,5,8,3,6,9 };
int i,k = 2:
for(I = 0;i{printf("%d ",m[k][I]);}
}
A)456 b)258 C)369d)789
答案:C
点评:根据二维数组的定义,得出m[O][O]=1,m [o] [1]。M[2][l]=6,m[2][2]=9,所以这个问题的输出就是第3行的值m[2][0],m[2][1],m[2][2],也就是369。
(22)如果定义的Erkou k是一个int类型变量,下面for循环语句_ _ _ _ _ _ _ _ _ _。
for(I = 0;k=-1,k = 1;i++,k++)
printf(" * * * * \ n ");
A)判断循环结束的条件非法;b)它是一个无限循环;
C)循环不会执行一次;d)循环将只执行一次;
答案:B
点评:本题定义了一个for循环,循环变量为I,但由于本题没有设置循环条件,循环条件将始终默认为
(23)下面程序的输出结果为_ _ _ _ _ _ _ _ _ _ _。
unsigned fun(unsigned num)
{ unsigned k = 1;
do {
k * = num % lO;
num/= lO;
} while(num);
return(k);
}
main()
{ unsigned n .26;
printf("%d\n ",fun(n));
}
A)0 B)4 c)12 D)无限循环
答案:C
点评:本题定义了一个fun函数,用来求和num。具体实现过程如下:
NUM = 26:k = k .
NUM = 2:k = k *(NUM % 10)= 6 *(2% 10),所以k=12,NUM = NUM/lo = o;
num = o:while的条件不成立,所以k的值返回12。
(24)已知字母A的ASCII码值为65,字母A的ASCII码值为97。下面的程序_ _ _ _ _ _ _ _
main()
{ char A = ' A ';
int b = 20;
printf("%d,%o ",(a=a+a,a+b,b),a+'a'-'A ',b);
}
A)表达式非法,输出为零或不确定
B)输出项太多,没有输出或不确定值
C)输出结果为20,141
D)输出结果为20,141,20 [然后,a+'a'-'A '的值对应的八进制数141以八进制形式输出,最后一个表达式B不会输出,因为有
(25)C语言函数返回值的类型是由_ _ _ _ _ _ _ _ _ _决定的。
a)返回语句中的表达式类型b)调用函数类型
c)函数被调用时的临时函数d)函数定义时指定的函数类型
答:D
备注:函数定义时应指定函数值的类型。定义函数时,函数值的类型一般应与return语句中的表达式类型一致。如果不是,则以函数类型为准,即函数类型决定返回值的类型。(11)是_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
A)调试程序B)解释程序C)编译程序D)编辑程序
答案:C
点评:用高级语言编写的程序称为“源程序”,而计算机只能识别和执行由0和l组成的二进制指令,因此, 高级语言首先要用一种叫“编译器”的软件把源程序翻译成
(12)_ _ _ _ _ _ _ _ _是C语言程序的基本单位。
A)函数B)进程C)子程序D)子程序
答案:A
评价:C程序是由函数组成的。一个C源程序至少包含一个主函数,也可以包含一个主函数和几个其他函数。因此,函数是C程序的基本单位。
(13)C语言中可以用作用户标识符的是_ _ _ _ _ _ _ _。
a)void B)as _ b3c)for d)2c
define _ 123-ABC do
word if cas SIG
答案:B
注释:C语言规定标识符只能由字母、数字和下划线组成。还应注意,关键字不能用作标识符。选项A中Void,for在c中是关键字,d中2c以字母开头。
(14)如果有以下类型的解释性声明:
char w;int x;浮点y,z;
那么表达式w*x+z-y的结果就是_ _ _ _ _ _ _ _类型。
A)float b)char c)int d)double
答案:A
备注:在执行运算时,不同类型的数据参与运算,因此在执行运算前需要将它们转换成同一类型的数据。从低到高的转换顺序是:char,short→int→unsigned→long→double→float,所以结果是float。
(15)main(()
{ float x = 123 a56;
printf("%-5.2f\n ",x);
}
上述程序的输出结果是_ _ _ _ _ _ _ _。
A)123.4 b)123.5 c)123.45d)123.46
答案:D
注释:F格式字符,用于输出实数和小数形式。“%-m.nf”的意思是输出数据占用M列,其中N个小数位,如果输出位数小于M,右端用空补充。如果总长度大于列数,则根据实际情况对输出进行四舍五入。
(16)下列语句的输出结果是_ _ _ _ _ _ _ _。
Printf("%d\n ",strlen(" \ t \ " \ 065 \ xff \ n "));
A)14 B)8
C)5 D)输出项非法,没有正常输出
答案:C
点评:C语言中,以“\”开头的字符都是转义字符,其中“\”后面可以跟L ~ 3位数字。
(17)下列程序的输出结果是_ _ _ _ _ _ _ _ _。
main()
{ int a=0,b=0,c = 0;
if(++a > 0lI ++ b > 0)++ c;
printf("\na=%d,b=%d,c=%d ",a,b,c);
}
A)a=0,b=0,c=0 B)a=l,b=l,c = 1
c) a = l,b = o,c = id) a = 0,b = 1
(18)下列程序的输出结果是_ _ _ _ _ _ _ _ _。
Main()
{ int I;
for(I = 1;I+l;i++)
{ if(i>4){printlf("%d ",i++);打破;}
}
printf("%d ",i++);
}
A)55 B)56
c)程序出错,无输出D)循环条件始终为真,无限循环
答案:B
备注:本程序中有一个for循环,但注意,for循环的条件是“I+”当i=l时,i+l的值为真。如果判断条件不为真,则执行i++,I的值为5。(23)下列程序的输出结果是_ _ _ _ _ _ _ _ _ _ _ _ _ _。
unsigned fun(unsigned num)
{ unsigned k = 1;
do {
k * = num % lO;
num/= lO;
} while(num);
return(k);
}
main()
{ unsigned n .26;
printf("%d\n ",fun(n));
}
A)0 B)4 c)12 D)无限循环
答案:C
点评:本题定义了一个fun函数,用来求和num。具体实现过程如下:
NUM = 26:k = k .
NUM = 2:k = k *(NUM % 10)= 6 *(2% 10),所以k=12,NUM = NUM/lo = o;
num = o:while的条件不成立,所以k的值返回12。
(24)已知字母A的ASCII码值为65,字母A的ASCII码值为97。下面的程序_ _ _ _ _ _ _ _
main()
{ char A = ' A ';
int b = 20;
printf("%d,%o ",(a=a+a,a+b,b),a+'a'-'A ',b);
}
A)表达式非法,输出为零或不确定
B)输出项太多,没有输出或不确定值
C)输出结果为20,141
D)输出结果为20,141,20 [然后,a+'a'-'A '的值对应的八进制数141以八进制形式输出,最后一个表达式B不会输出,因为有
(25)C语言函数返回值的类型是由_ _ _ _ _ _ _ _ _ _决定的。
a)返回语句中的表达式类型b)调用函数类型
c)函数被调用时的临时函数d)函数定义时指定的函数类型
答:D
备注:函数定义时应指定函数值的类型。定义函数时,函数值的类型一般应与return语句中的表达式类型一致。如果不是,则以函数类型为准,即函数类型决定返回值的类型。
0条评论