如果你的浏览器没有弹出通告界面,请你首先点击上方的刷新通告按钮获取最新的比赛通告!
1
设有以下声明:
int a[ 4 ] [ 4 ] = { 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 } ;
则以下对数组 a 的访问不正确的是
A.*(a[2]+3)
B.*(*(a+2)+3)
C.*(a+2)[3]
D.以上均正确
2
设 p 指针指向单链表(单链表长度为n)中的某个结点(p!=NULL
),若只知道指向该单链表第一个结点的指针和 p 指针,则在 p 指针所指结点之前和 p 指针所指结点之后插入一个结点的时间复杂度分别是。
A. 和 B. 和 C. 和 D. 和
3
设某⼀非空的单循环链表的头指针(指向第一个结点的指针)为 Head
,尾指针(指向最后一个结点的指针)为 Rear
,则下列列条件判断结果一定为真的是
A. Head==Rear->link
B. Head==Rear->link->link
C. Rear==Head->link
D. Rear==Head->link->link
4
若有以下说明和语句:
struct elevator {
int id;
int floor;
struct {
char name[ 20 ] ;
char tar;
} passenger;
} ;
struct elevator elevators[ 2 ] = { { 1 , 2 , { "Red" , 'q' } } , { 4 , 5 , { "X_ele" , 'e' } } } ;
struct elevator * p = elevators;
则以下对语句与输出不符的是
A. printf("%d\n", (p+1)->id);
,输出 4
B. printf("%d\n", strlen(p->passenger.name));
,输出 3
C. printf("%c\n", *((*p).passenger.name+2));
,输出 e
D. printf("%c\n", (*(p+1)).passenger.tar);
,输出 e
5
已知函数 void printA(int)
、void printB(int)
,下列给函数指针数组 fp
定义赋值正确的是
A. void *fp(int)[] = {printA, printB};
B. void (*fp)[](int) = {printA, printB};
C. void (*fp[])(int) = {printA, printB};
D. void *fp[](int) = {printA, printB};
6
以下删除链表中 p 指针所指结点的下一个结点的语句正确的是
A. free(p->link); p->link = NULL;
B. p->link = p->link->link; free(p->link);
C. free(p->link); p->link = p->link->link;
D. q = p->link; p->link = q->link; free(q);
7
下面能正确进行字符串赋值,并且能确保字符串以’\0’结尾的操作是()
A. char s; s = "ABCDE";
B. char s[6] = {"ABCDE"};
C. char s[5] = {'A', 'B', 'C', 'D', 'E'};
D. char *s; scanf("%s", s);
8
栈和队分别是什么类型的数据结构?
A. 先进先出 先进后出
B. 先进后出 先进先出
C. 后进先出 随机读取
D. 随机读取 后进后出
9
若 solve(int x)
函数的时间复杂度为 ,则下列语句的时间复杂度为
for ( int i = 0 ; i < ( 1 << n) ; i++ )
for ( int j = 0 ; j < n; j++ )
if ( i & ( 1 << j) )
solve ( j) ;
A. B. C. D.
10
若五个元素的出栈序列为 1,2,3,4,5,则下列出栈序列不可能是该栈的入栈序列的是
A. 1,2,3,4,5
B. 3,2,1,5,4
C. 2,3,1,4,5
D. 1,2,4,3,5