一 、选择题
(1)假设线性表的长度为n,则在最坏情况下,冒泡排序需要的比较次数为
A)log2n
B)n2
C)O(n1.5)
D)n(n-1)/2
正确答案: D
(2)算法分析的目的是
A)找出数据结构的合理性
B)找出算法中输入和输出之间的关系
C)分析算法的易懂性和可靠性
D)分析算法的效率以求改进
正确答案: D
(3)线性表L=(a1,a2,a3,…ai,…an),下列说法正确的是
A)每个元素都有一个直接前件和直接后件
B)线性表中至少要有一个元素
C)表中诸元素的排列顺序必须是由小到大或由大到小
D)除第一个元素和最后一个元素外,其余每个元素都有一个且只有一个直接前件和直接后件
正确答案: D
(4)在单链表中,增加头结点的目的是
A)方便运算的实现
B)使单链表至少有一个结点
C)标识表结点中首结点的位置
D)说明单链表是线性表的链式存储实现
正确答案: A
(5)软件工程的出现是由于
A)程序设计方法学的影响
B)软件产业化的需要
C)软件危机的出现
D)计算机的发展
正确答案: C
(6)软件开发离不开系统环境资源的支持,其中必要的测试数据属于
A)硬件资源
B)通信资源
C)支持软件
D)辅助资源
正确答案: D
(7)在数据流图(DFD)中,带有名字的箭头表示
A)模块之间的调用关系
B)程序的组成成分
C)控制程序的执行顺序
D)数据的流向
正确答案: D
(8)分布式数据库系统不具有的特点是
A)数据分布性和逻辑整体性
B)位置透明性和复制透明性
C)分布性
D)数据冗余
正确答案: D
(9)关系表中的每一横行称为一个
A)元组
B)字段
C)属性
D)码
正确答案: A
(10)下列数据模型中,具有坚实理论基础的是
A)层次模型
B)网状模型
C)关系模型
D)以上3个都是
正确答案: C
(11)以下叙述不正确的是
A)一个C源程序可由一个或多个函数组成
B)一个C源程序必须包含一个main函数
C)C程序的基本组成单位是函数
D)在C程序中,注释说明只能位于一条语句的后面
正确答案: D
(12)在C语言中,int,char和short三种类型数据在内存中所占用的字节数
A)由用户自己定义
B)均为2个字节
C)是任意的
D)由所用机器的机器字长决定
正确答案: D
(13)以下叙述正确的是
A)在C程序中,每行中只能写一条语句
B)若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数
C)在C程序中,无论是整数还是实数,都能被准确无误地表示
D)在C程序中,%是只能用于整数运算的运算符
正确答案: D
(14)C语言中的标识符只能由字母,数字和下划线三种字符组成,且第一个字符
A)必须为字母
B)必须为下划线
C)必须为字母或下划线
D)可以是字母,数字和下划线中任一字符
正确答案: C
(15)已知各变量的类型说明如下:
int k,a,b;
unsigned long w=5;
double x=1.42;
则以下不符合C语言语法的表达式是
A)x%(-3)
B)w+=-2
C)k=(a=2,b=3,a+b)
D)a+=a-=(b=4)*(a=3)
正确答案: A
(16)x,y,z被定义为int型变量,若从键盘给x,y,z输入数据,正确的输入语句是
A)INPUT x、y、z;
B)scanf("%d%d%d",&x,&y,&z);
C)scanf("%d%d%d",x,y,z);
D)read("%d%d%d",&x,&y,&z);
正确答案: B
(17)设x、y均为整型变量,且x=10 y=3,则以下语句的输出结果是
printf("%d,%d\n",x--,--y);
A)10,3
B)9,3
C)9,2
D)10,2
正确答案: D
(18)以下程序的输出结果是
main()
{ int a=4,b=5,c=0,d;
d=!a&&!b||!c;
printf("%d\n",d);}
A)1
B)0
C)非0的数
D)-1
正确答案: A
(19)执行下列程序时输入:123<空格>456<空格>789<回车> 输出结果是
main()
{ char s[100]; int c, i;
scanf("%c",&c); scanf("%d",&i); scanf("%s",s);
printf("%c,%d,%s\n",c,i,s);}
A)123,456,789
B)1,456,789
C)1,23,456,789
D)1,23,456
正确答案: D
(20)下面有关for循环的正确描述是
A)for循环只能用于循环次数已经确定的情况
B)for循环是先执行循环体语句,后判断表达式
C)在for循环中,不能用break语句跳出循环体
D)for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来
正确答案: D
(21)以下程序的输出结果是
main()
{ int i,j,x=0;
for(i=0;i<2;i++)
{ x++;
for(j=0;j<3;j++)
{ if(j%2)continue;
x++;
}
x++;
}
printf("x=%d\n",x);
}
A)x=4
B)x=8
C)x=6
D)x=12
正确答案: B
(22)设有以下程序段
int x=0,s=0;
while(!x!=0)s+=++x;
printf("%d",s);
则
A)运行程序段后输出0
B)运行程序段后输出1
C)程序段中的控制表达式是非法的
D)程序段执行无限次
正确答案: B
(23)对下Ⅰ,Ⅱ两个语句描述正确的是
Ⅰ.while(1)Ⅱ.for(;;)
A)都是无限循环
B)Ⅰ是无限循环,Ⅱ错误
C)Ⅰ循环一次,Ⅱ错误
D)以上答案都错
正确答案: A
(24)若有以下定义,则能使值为3的表达式是
int k=7,x=12;
A)x%=(k%=5)
B)x%=(k-k%5)
C)x%=k-k%5
D)(x%=k)-(k%=5)
正确答案: D
(25)设有:
int a=1,b=2,c=3,d=4,m=2,n=2;
执行 (m=a>b)&&(n=c>d)后n的值是
A)1
B)2
C)3
D)4
正确答案: B
(26)以下描述中正确的是
A)由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句
B)do-while循环由do开始,用while结束,在while(表达式)后面不能写分号
C)在do-while循环体中,是先执行一次循环,再进行判断
D)do-while循环中,根据情况可以省略while
正确答案: C
(27)以下函数返回a所指数组中最小的值所在的下标值
fun(int *a, int n)
{ int i,j=0,p;
p=j;
for(i=j;iif(a[i]return(p);}
在下划线处应填入的是
A)i=p
B)a[p]=a[i]
C)p=j
D)p=I
正确答案: D
(28)以下叙述正确的是
A)函数可以嵌套定义但不能嵌套调用
B)函数既可以嵌套调用也可以嵌套定义
C)函数既不可以嵌套定义也不可以嵌套调用
D)函数可以嵌套调用但不可以嵌套定义
正确答案: D
(29)若有说明语句
char a[]="It is mine";
char *p="It is mine";
则以下不正确的叙述是
A)a+1表示的是字符t的地址
B)p指向另外的字符串时,字符串的长度不受限制
C)p变量中存放的地址值可以改变
D)a中只能存放10个字符
正确答案: D
(30)以下程序的运行结果是
sub(int x,int y,int *z)
{*z=y-x;}
main()
{ int a,b,c;
sub(10,5,&a);
sub(7,a,&b);
sub(a,b,&c);
printf("M,M,M\n",a,b,c);}
A)5,2,3
B)-5,-12,-7
C)-5,-12,-17
D)5,-2,-7
正确答案: B
(31)若二维数组a有m列,则计算任一元素a[i][j]在数组中相对位置的公式为 (假设a[0][0]位于数组的第一个位置上)
A)i*m+j
B)j*m+i
C)i*m+j-1
D)i*m+j+1
正确答案: A
(32)下列说法正确的是
int i,x;
for(i=0,x=0;i<=9 &&x!=876;i++)scanf("%d",x);
A)最多的执行10次
B)最多执行9次
C)是无限循环
D)循环体一次也不执行
正确答案: A
(33)若有下面的程序片段:
int[12]={0},*p[3],**pp,i;
for(i=0;i<3;i)
p[i]=&a[i*4];
pp=p;
则对数组元素的错误引用是
A)pp[0][1]
B)a[10]
C)p[3][1]
D)*(*(p+2)+2)
正确答案: C
(34)若有说明:int a[3][4]={0};则下面正确的叙述是
A)只有元素a[0][0]可得到初值0
B)此说明语句不正确
C)数组a中各元素都可得到初值,但其值不一定为0
D)数组a中每个元素均可得到初值0
正确答案: D
(35)对下面程序描述正确的一项是 (每行程序前面的数字表示行号)
1 main()
2 {
3 float a[3]={0.0};
4 int i;
5 for(i=0;i<3;i++)scanf("%d",&a[i]);
6 for(i=1;i<3;i++)a[0]=a[0]+a[i];
7 printf("%f\n",a[0]);
8 }
A)没有错误
B)第3行有错误
C)第5行有错误
D)第7行有错误
正确答案: C
(36)以下不正确的说法是
C语言规定:
A)实参可以是常量,变量或表达式
B)形参可以是常量,变量或表达式
C)实参可以为任何类型
D)形参应与其对应的实参类型一致
正确答案: B
(37)已有如下数组定义和f函数调用语句,则在f函数的说明中,对形参数组array的正确定义方式为
int a[3][4];
f(a);
A)f(array[3][4])
B)f(int array[3][])
C)f(int array[][4])
D)f(int array[][])
正确答案: C
(38)下面程序的输出结果为
main()
{ int a,b;b=(a=3*5,a*4,a*5);
printf("%d",b);}
A)60
B)75
C)65
D)无确定值
正确答案: B
(39)在位运算中,操作数右移一位,其结果相当于
A)操作数乘以2
B)操作数除以2
C)操作数乘以4
D)操作数除以4
正确答案: B
(40)有以下结构体说明和变量的定义,且指针p指向变量a,指针q指向变量b。则不能把结点b连接到结点a之后的语句是
struct node
{ char data;
struct node *next;
} a,b,*p=&a,*q=&b;
A)a.next=q;
B)p.next=&b;
C)p->next=&b;
D)(*p).next=q;
正确答案: B