计算机等级二级C语言模拟试题1(十)
1.选择题(1)-(10)各2分,(11)-(50)各1分,共60分)
下列问题A)、B)、C)、D)中的四个选项只有一个是正确的。请在答题卡的相应位置涂上正确选项,答案不会在试卷上计分。
(1)算法能够正确实现预定功能的特性称为_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _的特性 _ _ _ _ _ _ _ _ _ _ _ _
A)确定性B)可读性C)健壮性D)效率
答案:A
评价:算法的确定性是指算法中的每一步都必须定义清楚,不能有模棱两可的解释或歧义,即每一步都是预先定义好的。
(2)当数据在计算机内存中表示时,物理地址与逻辑地址相同,并且是连续的, 哪一种被称为_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
A)存储结构B) 逻辑结构
C)顺序存储结构D)链式存储结构
答案:C
点评:如果数据在逻辑上是相互相邻的,并且能够反映在物理位置上,那么这种存储结构就叫做顺序存储结构。 如果在存储时用存储地址的指针来表示数据之间的逻辑邻接关系,则称之为链式存储结构。
(3)从未排序的序列中取出一个元素,依次与排序后的序列中的元素进行比较,然后放入排序后的序列中合适的位置。这种排序方法叫做_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
A)希尔排序B)冒泡排序C)插入排序D) 选择排序
答案:C
点评:基本排序方式有三种,即选择排序、交换排序和插入排序。
(4)对半查找线性表时,要求线性表必须是_ _ _ _ _ _ _ _。
A)按顺序存储
B)按链接存储
C)按顺序存储,且节点按关键字排序
D)按关键字排序存储
答案:C
评论:50%
(5)链表不具备的特征是_ _ _ _ _ _ _ _ _ _ _。
A)可以随机访问任意节点
B)不需要移动任何元素就可以插入和删除
C)不用提前预估存储空
D)所需的空与其长度成正比
答案
(6)下列描述中正确的一项是_ _ _ _ _ _ _ _ _ _ _ _ _ _。
A)软件是实物产品
B)程序是软件
C)软件工程由方法、工具和过程三部分组成
D)软件工程是机械工程
答案:B
评价:软件是与计算机系统运行有关的程序。计算机是逻辑产品,不是物理产品。软件工程是用工程学、科学和数学的原理和方法开发和维护计算机软件的相关技术和管理方法。软件工具可以自动或半自动地生成软件文档。软件过程是管理者控制软件开发各个方面的基本方法。
(7)软件测试是保证软件质量最关键的一步。下列关于白盒测试的技术描述不正确的是_ _ _ _ _ _ _ _ _。
A)确保模块中每个独立路径至少执行一次
B)确保所有判断分支至少执行一次
C)确保每个循环在边界条件和一般条件下最多执行一次
D)验证所有内部数据结构的有效性
答案:C [/br]白盒测试技术有四个原则:确保模块中每个独立路径至少执行一次;确保所有判决的每个分支至少执行一次;确保每个循环在边界条件和一般条件下至少执行一次;验证所有内部数据结构的有效性。
(8)客观世界中的任何事物都可以看作是物体。但是从计算机的角度来看,一个对象应该包含两个元素:一个是_ _ _ _ _ _ _ _ _,一个是要执行的操作。
A)语句B)命令C)算法D)数据
回答:D
点评:在面向对象编程中,从计算机的角度来看,一个对象应该包含两个元素:数据,它相当于家族中的成员;操作,相当于家庭成员的活动。对象是与数据相关的操作的集合。
(9)下列概念中,不是数据库管理系统必须提供的数据控制功能的是_ _ _ _ _ _ _ _。
A)安全性B)完整性C)可移植性D)一致性
答案:C
备注:数据库管理系统提供的数据控制功能是指在数据库的建立、运行和维护过程中,对DBMS进行统一的管理和控制,以保证数据的安全性、完整性和一致性。
(10)设关系R和关系S中的元素个数分别为3和4,关系T是R和S的笛卡尔积,即T=R×S,则关系T中的元素个数为_ _ _ _ _ _ _ _ _。
A)7 B)9 C)12 D)16
答案:A
点评:笛卡尔积的定义是关系R和S的元素分别是R和S。R和S的笛卡尔积是(r ten s)个元属性的集合,每个元组的mr分量来自R中的一个,所以关系T的属性元素个数为3+4=7。
(11)下列说法正确的是_ _ _ _ _ _ _ _。
A)C语言中所有的数据类型都是基本类型
B)C语言中所有的数据类型都是构造类型
C)C语言中只有两种数据类型,即基本类型和构造类型
D)以上都不成立
回答:D
(12)下列在C语言中可以用作赋值语句的是_ _ _ _ _ _ _ _。
A)x=3,y = 5 B)A = B = 6 C)I-;D)y=6
答案:C
点评:这个问题其实是考察对C语言中“句子”概念的理解。一个表达式只能在分号后成为一个语句。所以a)、b)、d)都是表达式,只有c)是陈述。且通过使用自减量算子将I值减少l。
(13)以下可以定义为用户标识符_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _。
a)print FB)net C)3com d)int
答案:B
注释:C语言中有两种类型的标识符。一种是系统标识符,即系统定义中使用的关键字标识符等。另一种是用户自定义标识符。两个类标识符只能由字母、数字和下划线组成。第一个字母必须是字母或下划线。并且用户定义的标识符不能使用与系统关键字相同的标识符。
(14)下列选项中,不能作为法定常数的是_ _ _ _ _ _ _ _ _。
A)0x2ab)015c). 2.8 e9d)123.6 e 0.4
回答:D
评价:C程序中的基本数据类型有整数、实数和字符。整数常量有三种形式,分别是八进制、十进制和十六进制。实数常数有两种类型:小数形式和指数形式。
(15)有以下程序
main()
{
int a;char c = 10:
float f =-100.0;双x;
clr scro;
a = f/= c * =(x = 6.5);
printf("%d,%c,%3.1C%3.1f\n ",a,c,Cx);
}
程序运行后的输出结果是_ _ _ _ _ _ _ _ _。
A)1,65,1,6.5 B)1,A,1.5,6.5 C)1,65,1.5,6.5 D)2,65,1.5,6.5
答案:B
备注:,可以得到x = 6.5。将x的值乘以10得到C,即65。然后将f=100的值除以65,按照四舍五入的原理重新赋给f’得到f =-i.5,最后将f的值赋给A,由于A是整数,所以得到A = L。
(16)下列语句顺序中错误的是_ _ _ _ _ _ _ _。
A)int x = l;b)int x = 0;c)int x = 2.3;D)int x=l,y = l;
x++;(x+1)++;(x++)+1;(x++)+(y one);
答案:B
点评:C语言中的自加自减运算只能用于变量,不能用于常量或表达式。(17)有定义的语句:im.a;char b[10],c;那么错误的输入语句是_ _ _ _ _ _ _ _ _。
A)scanf("%d%s%c ",&a,D,& C);B)scanf("%d%s%c ",&a,&b,& C);
C)scanf("%d%s%d ",& a;b,& C);D)scanf("%d%s"&c,a,% & C);
回答:D
注释:在scanf()语句中,给整型变量和字符类型赋值时,必须在变量名前加一个地址符号(&),而给字符数组赋值时,可以不在变量名前加一个地址符号。此外,字符变量既可以赋给整数值,也可以赋给字符值。
(18)有定义的语句:int x,y;,x =% d,y =% n&x,&y)如果您想通过扫描。语句使变量X得到数值11,变量Y得到数值12。以下四组输入形式中,正确的是_ _ _ _ _ _ _ _
A)1l 12 B)ll,12
C)x=l l,y=12 D)x=ll,12,
答案:C
注释:在scanf()语句中,变量的赋值必须与数据的输入有关。尤其是一些人物描写。
(19)有如下程序段:
int x=6,y = 4;
printf("%d\n ",(x%y,x & & y));
那么下列说法中正确的是_ _ _ _ _ _ _ _ _。
A)Output语句中格式说明符的数量小于输出项的数量,因此无法正确输出
B)运行时生成错误消息
C)输出值为2
D)输出值为l
答案:D
注释:在逗号表达式中
(20)有以下程序
main()
{
int I = 1 . j = 2,k = 3;
clrscr();
if(i++ = = j & & k-= = j)
printf(" %d,%d,% d ",i++'j,k);
else
printf("%d,%d,%d ",++i,++j,k-);
}
程序运行后,输出结果是_ _ _ _ _ _ _ _ _。
A)l,2,3 B)2,2,3 C)2,3,2 D)3,3
回答:D
备注:根据运算符的优先级,先计算关系运算i++==j,因为这个关系表达式无效。此时,变量I的值从加1变为加2,然后执行else语句后的printf语句。
(21)有定义的语句:int a=l,b=l,c=3,x;,那么在执行下列选项中的每个程序段后,x的值不等于3而是_ _ _ _ _ _ _ _ _ _ _。
A)if(C else if(b C)if(A % b > A)x = 3;D) If (a if (a注释:在各种运算符中,算术运算是运算级别。如果有括号,当然要先计算括号中表达式的值。
(22)有以下程序,其输出结果是_ _ _ _ _ _ _ _ _ _ _ _ _ _。
main()
{ float x = l;int y;
x++:
y = X+l;
printf("x=%d,y=%f ",x,y);
}
A)x=2,y=3 B)x=2,y = 3.0
c) x = 2.0,y = 3d) x = 0.y = 0.000000
答案但是,当整型和实型数据混合时,它们的数据类型可以自动转换。如本题中y = x+l;语句,系统自动将实数表达式x+l的结果转换为整数并赋给整数变量Y,但整数变量Y只能得到实数的整数部分。
(23)有以下程序
main()
{
int a[6]= { 5,6,7,8,9,10},s=0,I = 0;
clrserO;
do
{
if(a[I]% 2i-0)
s+= a[I];
}while(++i primf("%d\n ",s);
}
程序运行后,输出结果是_ _ _ _ _ _ _ _ _。
A)21 B)22 C)23 D)24
答案:A
备注:引用数组中的元素时,可以直接使用数组名加下标的形式。比如p[1]是数组中下标为1的元素,它是顺序中的第二个元素,因为数组的下标是从0开始的。这个题目其实就是求数组中所有奇数元素的和。
(24)如果有以下程序段,
main()
{
char a[7]= " 123 \ 010 \ 032 ";
int i,j = 0;
clrscr 0;
for(I = 0;I j+= sizeof(a);
printf("%d,%d\n ",I,J);
}
程序运行后,输出结果是_ _ _ _ _ _ _ _ _。
A) 5,30b) 5,35c) 5,25d) 5,20
答案:B
评价:数组的存储空是在定义后分配的。数组A [7] = "123 \ 010 \ 032 "的存储空中有7个单元。即sizeof(a)=7。而函数strlen()就是求字符串的长度。在A [7] = "123 \ 010 \ 032 "中,有两个转义字符,所以字符串的长度实际上是5个字符。所以strlen(a)=5。在程序的for循环中,循环次数为5,J每次增加7,所以最终结果是35。I的值是循环次数。
(25)如果要在C程序中使用库函数中的字符串比较函数strcmp(),那么应该加在程序前面的头文件是_ _ _ _ _ _ _ _ _。
a)stdio . HB)string . h C)alloc . h d)math . h
答案:B
备注:库函数不是C语言的一部分,它是人们根据自己的需要编译出来提供给用户的。调用不同类别的库函数时,必须在程序前添加相应的头文件。
(26)如果一个已定义的函数有返回值,下列关于该函数调用的说法中错误的是_ _ _ _ _ _ _ _ _ _ _ _ _ _。
A)函数调用可以嵌套和递归
B)函数调用可以作为函数的自变量
C)函数调用可以出现在表达式中
D)函数调用可以作为函数的参数
回答:D
点评:函数调用一是将函数作为语句调用。其次,函数出现在_ expressions中。第三是作为函数的自变量。但是没有函数调用作为形参。而且,调用函数时有嵌套和递归两种特殊情况。
(27)下列关于C语言中字符常量和字符串常量的说法中,错误的是_ _ _ _ _ _。
A)字符常量是用单撇号括起来的字符
B)空大小写字符也可以用作字符常量
C)字符串常量是用单撇号括起来的字符序列
D)字符串常量是用双撇号括起来的字符序列[/br]除了常见字符之外,常量还包括特殊空大小写字符和以“\”开头的转义字符。字符串常量是由双撇号括起来的字符序列。
0条评论