1.给定N×N×N的三维数组A,则在不改变数组的前提下,查找最小元素的时间复杂度是:D
A.O(N2)
B.O(NlogN)
C.O(N3logN)
D.O(N3)
2.For the following piece of code
for(i=0; i<n; i++)for(j=i; j>0; j/=2)printf(“%d\n”, j);
the time complexity is:D
A.O(N×i)
B.O(N)
C.O(N2)
D.O(NlogN)
3.若p1、p2都是整型指针,p1已经指向变量x,要使p2也指向x, ____是正确的。A
A.p2=p1
B.p2=**p1
C.p2=&p1
D.p2=*p1
4.一个递归算法必须包括( )。B
A.递归部分
B.终止条件和递归部分
C.迭代部分
D.终止条件和迭代部分
5.若有以下说明,且0<=i<10,则对数组元素的错误引用是()。C
int a[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, *p = a, i;
A.*(a+i)
B.a[p-a+i]
C.p+i
D.*(&a[i])
6.执行下面程序,正确的输出是()。A
int x = 5, y = 7;
void swap ( )
{int z ;z = x ; x = y ; y = z ;
}
int main(void)
{int x = 3, y = 8;swap ( ) ;printf ("%d,%d \n", x , y ) ;return 0 ;
}
A.3,8
B.8,3
C.5,7
D.7,5
解析:因为swap()只是交换了全局定义的x和y,对主函数定义的x,y并不影响
swap函数没有带任何参数,所以呢,只能找到全局变量。
swap函数用的是全局的x和y,但是不会发生交换 注意:printf函数在进行输出的时候是就近原则的,所以输出的x和y是main函数里面的,而不是全局的x和y
7.有以下定义:char x[ ]=“abcdefg”; char y[ ]={‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’, ‘g’}; 则正确的叙述为()。C
A.数组x和数组y等价
B.数组x和数组y的长度相同
C.数组x的长度大于数组y的长度
D.数组x的长度小于数组y的长度
解析:
字符串以’\0’结束,数组x的长度为8,数组y的长度为7
8.单链表又称为线性链表,在单链表上实施插入和删除操作( )。B
A.不需移动结点,不需改变结点指针
B.不需移动结点,只需改变结点指针
C.只需移动结点,不需改变结点指针
D.既需移动结点,又需改变结点指针
9.有一函数x>0,y=1;x=0,y=0;x<0,y=-1,以下程序段中错误的是()。C
A.if(x > 0) y = 1; else if(x == 0) y = 0; else y = -1;
B.y = 0; if(x > 0) y = 1; else if(x < 0) y = -1;
C.y = 0;
if(x >= 0);
if(x > 0) y = 1;
else y = -1;
D.if(x >= 0) if(x > 0) y = 1; else y = 0; else y = -1;
10.链表不具有的特点是()。B
A.插入、删除不需要移动元素。
B.可随机访问任一元素。
C.不必事先估计存储空间。
D.所需空间与线性表长度成正比。