二级C语言选择题专项强化真题试卷47
选择题
1.有以下程序(字母A的ASCII代码为65):
#include<stdio.h>
maln()
{
char c1=’A’,c2=’Y’t;
printf(\\(D)
A. 输出格式不合法,输出出错信息
B. A Y
C. 65 90
D. 65 89
解析:考查字符型数据。字符常量与其ASCII码值一一对应,在计算的时候,一般是字符数据对应的ASCII码参与运算,输出时会根据格式控制符输出对应的字符或者ASCII码。所以答案选D。
2.以下叙述正确的是( )。(C)
A. C语言函数不可以单独编译
B. C语言程序是由过程和函数组成的
C. C语言函数可以嵌套调用,例如:fun(fun(x))
D. C语言中除了main函数外,其他函数不可作为单独文件形式存在
解析:一个C语言程序由一个或多个函数组成,选项B错误;一个C程序可以有一个或多个程序文件,每个程序文件可以有一个或多个函数,并且每个程序文件可以单独编译,所以选项A、D错误;函数之间可以相互调用,函数体内调用自身的函数为递归函数,答案选C。
3.有以下程序段:
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。
4.有以下程序:
#include<stdio.h>
int fun(int x,int y)
{
if(x!=y)return((x+y)/2);
else return(x);
}
main()
{
int a=4,b=5,C=6;
printf(\\(B)
A. 3
B. 6
C. 8
D. 12
解析:考查函数的调用。输出结果为fun(2*a,fun(b,c))=fun(8,5)=6,答案选B。
5.下列关于算法复杂度叙述正确的是( )。(B)
A. 最坏情况下的时间复杂度一定高于平均情况的时间复杂度
B. 时间复杂度与所用的计算工具无关
C. 对同一个问题,采用不同的算法,则它们的时间复杂度是相同的
D. 时间复杂度与采用的算法描述语言有关
解析:算法的时间复杂度是指执行算法所需要的计算工作量,它与使用的计算机、程序设计语言以及算法实现过程中的许多细节无关,故B选项正确,D选项错误。最坏情况下的时间复杂度可以与平均情况的时间复杂度相同,故A选项错误。不同的算法时间复杂度一般不相同,故C选项错误。
6.面向对象方法中,继承是指( )。(D)
A. 一组对象所具有的相似性质
B. 一个对象具有另一个对象的性质
C. 各对象之间的共同性质
D. 类之间共享属性和操作的机制
解析:继承是面向对象的方法的一个主要特征,是使用已有的类的定义作为基础建立新类的定义技术。广义地说,继承是指能够直接获得已有的性质和特征,而不必重复定义它们,所以说继承是指类之间共享属性和操作的机制。
7.有以下程序:
#include
int add(int a,int b){return(a+b);}
main()
{ int k,(*f)(),13.=5,b=10;
f:add;
}
则以下函数调用语句错误的是( )。(D)
A. k=f(a,b);
B. k=add(a,b);
C. k=(*f)(a,b);
D. k=*f(a,b);
解析:*与()的优先级为()的优先级高于*,因此(*f)()定义函数指针f。f指向函数的指针,f=add,将函数add()的首地址赋给指针f,所以调用函数add()可以写为f(),其返回值是整型,不是指针类型,不能用*取指针指向的内存单元的数据,故k=*f(a,b)的调用方式错误。答案为D选项。
8.以下与存储类别有关的四组说明符中,全部属于静态类的一组是( )。(A)
A. extern和static
B. auto和static
C. register和static
D. re~ster和extern
解析:auto用于声明变量的生存期为自动,即不会将在任何类、结构、枚举、联合和函数中定义的变量视为全局变量,而将在函数中定义的变量视为局部变量。这个关键字通常会被省略,因为所有的变量默认就是auto的。
register定义的变量告诉编译器尽可能地将变量存在CPU内部寄存器中而不是通过内存寻址访问,这样可以提高效率。
static变量会被放在程序的全局存储区中,这样可以在下一次调用的时候还可以保持原来的赋值。这一点是它与堆栈变量和堆变量的区别。变量用static告知编译器,自己仅仅在变量的作用范围内可见。这一点是它与全局变量的区别。当static用来修饰全局变量时,它就改变了全局变量的作用域。
extem将变量作用域限制在了当前文件里,但是没有改变其存放位置,还是在全局静态储存区。extem外部声明,该变量在其他地方有被定义过。因此,答案为A选项。
9.以下程序拟实现计算sum=1+1/2+1/3+…+1/50。
#include
main()
{ int i;double 8um;
sum=1.0;
i=1;
do
{i++;sum+=1/i;}
while(i<50);
printf(\\(A)
A. sum+=1/i;
B. while(i<50);
C. sum=1,0;
D. i++;
解析:选项A中,sum+=1/i;i为整型,因此1/i是整型类型,当1/i有小数时,小数部分会被截断。因此1/i结果始终为0,导致结果出错,应改为sum+=1.0/i。因此答案为A选项。
10.在长度为n的有序线性表中进行二分查找,最坏情况下需要比较的次数是( )。(C)
A. O(n)
B. O(n2)
C. O(log2n)
D. O(nlog2n)
解析:当有序线性表为顺序存储时才能用二分法查找。可以证明的是对于长度为n的有序线性表,在最坏情况下,二分法查找只需要比较log2n次,而顺序查找需要比较n次。
11.在下列模式中,能够给出数据库物理存储结构与物理存取方法的是( )。(B)
A. 外模式
本文档预览:3600字符,共8717字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载