1:合法的数组说明语句是(D)
A:int a[] = “string”;
B:int a[5] = {0.1,2,3,4};
C:char a = “string”;
D:char a[] = {0,1,2,3,4,5};
解析: A中int型数组不能存放字符串;B中初始化数据不等于给定初始化数据;C中字符a不能存放字符串;D正确
2:静态链表中指针表示的是(C)
A:下一元素的地址
B:内存储器的地址
C:下一元素在数组中的位置
D:左链或右链指向的元素地址
解析:静态链表表现形式为结构体数组包含数据域和游标,指针指向下一个数组元素的位置所以选C。
3:在一个单链表中,若删除p所指节点的后续结点,则执行(C)
A:p=p->next;p->next=p->next->next;
B:p->next=p->next
C:p->next=p->next->next
D:p=p->next->next
解析:p->next=p->next->next是指将p的下一个结点指向p的下一个的下一个所指向的位置,所以删除掉p所指节点的下一个结点
4:下列叙述正确的是(C)
A:线性表链式存储结构的存储空间一般要少于顺序存储结构
B:线性表连式存储结构与顺序存储结构的存储空间都是连续的
C:线性表链式存储结构可以是连续的,也可以是不连续的
D:以上说法均错误
解析: A:链式存储结构空间大于顺序存储结构;B顺序存储结构的存储空间是连续的C:链式存储结构可以是不连续的存储空间,插入和删除比较方便
5:对一维整型数组a的正确说明是#define SIZE 10(换行)int a[SIZE];说法是否正确
解析:【正确】
宏定义的变量可以看做常量,所以int a[10];是正确的
6:若某线性表最常用的操作是存取任一指定元素和在最后进行插入和删除运算,则利用(A)存储方式最节省空间
A:顺序表
B:双链表
C:带头结点的双循环链表
D:单循环链表
解析:随机存取顺序存储方式最合适,在尾部进行插入和删除顺序表也很方便,如果要在中间插入、删除则可以选择链表
7:若有说明:int[3][4];则对a数组元素的正确引用是(C)
A:a[2][4]
B:a[1,3]
C:a[1+1][0]
D:a(2)(1)
解析:三行四列角标最大为2和3,A下标越界;B格式错误;C正确 D格式错误
8:对以下二位数组的正确声明是(C)
A:int a[3][];
B:float a(3,4);
C:double a[][4];
D:float a(3)(4);
解析:二维数组行数可以不规定,列数一定要规定
9:数组就是矩阵,矩阵就是数组,这种说法(B)
A:正确
B:错误
C:前句对,后句错
D:后句对
解析:数组中的元素可以是字符串也可以是数字 但是矩阵中只能是数字
10:有6个元素 6,5,4,3,2,1的顺序进栈,问下列哪一个不是合法的出栈序列(C)
A:5 4 3 6 1 2
B:4 5 3 1 2 6
C:3 4 6 5 2 1
D:2 3 4 1 5 6
解析:
A:6入5入5出4入4出3入3出6出2入1入1出2出5 4 3 6 1 2
B:6入5入4入4出5出3入3出2入1入1出2出6出 4 5 3 1 2 6
C:6入5入4入3入3出4出
D:6入5入4入3入2入2出3出4出1入1出5出6出2 3 4 1 5 6
编程题:
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
//类似于冒泡排序
for(int i=0;i<array.length-1;i++){
for(int j=0;j<array.length-1-i;j++){
if(array[j]%2==0&&array[j+1]%2==1){
int temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
}
}
}