判断题:
1.直接访问就是直接利用变量的地址直接进行访问。T
2.可以用一个指针变量指向一个函数,然后通过该指针变量调用此函数。T
3.int (*p)[4]它表示p是一个指针数组,它包含4个指针变量元素。F
(是int类型数组,里面有4个指针变量元素)
4.结构体变量可以作数组元素。T
5.函数名代表该函数的入口地址。因此,可用函数名给指向函数的指针变量赋值。T
6.结构体成员的类型必须是基本数据类型。F
(可有指针变量)
7.指针数组的每个元素都是一个指针变量。T
8.结构体类型本身不占用内存空间,结构体变量占用内存空间。T
9.char *s="C Language";表示s是一个指向字符串的指针变量,把字符串的首地址赋予s。T
10.结构体成员的类型必须是基本数据类型。F
单选题:
1.若p1、p2都是整型指针,p1已经指向变量x,要使p2也指向x, ( )是正确的。
A.p2 = p1;
B.p2 = **p1;
C.p2 = &p1;
D.p2 = *p1;
2.设变量定义为 int a[2]={1,3}, *p=&a[0]+1;,则*p的值是( )。
A.2
B.3
C.4
D.&a[0]+1
3.根据声明int a[10], *p=a; ,下列表达式错误的是( )。
A.a[9]
B.p[5]
C.a++
D.*p++
4.已知表头元素为c的单链表在内存中的存储状态如下表所示:
现将f存放于1014H处,并插入到单链表中,若f在逻辑上位于a和e之间,则a、e、f的“链接地址”依次是:
A.1010H, 1014H, 1004H
B.1010H, 1004H, 1014H
C.1014H, 1010H, 1004H
D.1014H, 1004H, 1010H
5.根据声明int (*p)[10], p是一个( )。
A.数组
B.指针
C.函数
D.数组的元素
6.若定义pf为指向float类型变量f的指针,下列语句中__是正确的。
A.float f, *pf = f;
B.float f, *pf = &f;
C.float *pf = &f, f;
D.float f, *pf =0.0;
7.若变量已正确定义并且指针p已经指向某个变量x,则(*p)++相当于____。
A.p++
B.x++
C.*(p++)
D.&x++
8.若p1、p2都是整型指针,p1已经指向变量x,要使p2也指向x, ____是正确的。
A.p2=p1
B.p2=**p1
C.p2=&p1
D.p2=*p1
9.链表不具有的特点是:
A.插入、删除不需要移动元素
B.方便随机访问任一元素
C.不必事先估计存储空间
D.所需空间与线性长度成正比
10.设h为不带头结点的单向链表。在h的头上插入一个新结点t的语句是:
A.h=t; t->next=h->next;
B.t->next=h->next; h=t;
C.h=t; t->next=h;
D.t->next=h; h=t;
11.在单链表中,若p所指的结点不是最后结点,在p之后插入s所指结点,则执行
A.s->next=p; p->next=s;
B.s->next=p->next; p=s;
C.s->next=p->next; p->next=s;
D.p->next=s; s->next=p;
12.线性表若采用链式存储结构时,要求内存中可用存储单元的地址
A.必须是连续的
B.连续或不连续都可以
C.部分地址必须是连续的
D.一定是不连续的
13.线性表L在什么情况下适用于使用链式结构实现?
A.需不断对L进行删除插入
B.需经常修改L中的结点值
C.L中含有大量的结点
D.L中结点结构复杂
14.以下scanf函数调用语句中不正确的是__。
struct pupil {
char name[20];
int age;
int sex;
} pup[5], *p=pup;
A.scanf("%s", pup[0].name);
B.scanf("%d", &pup[0].age);
C.scanf("%d", p->age);
D.scanf("%d", &(p->sex));
15.下列程序段的输出是____。
int c[]={1, 3, 5};
int *k=c+1;
printf("%d", *++k);
A.3
B.4
C.5
D.6
16.对于如下说明,语法和语义都正确的赋值是_____。
int c, *s, a[]={1, 3, 5};
A.c=*s;
B.s[0]=a[0];
C.s=&a[1];
D.c=a;
17.设有如下定义的链表,则值为7的表达式是()。
struct st{
int n;
struct st *next;
} a[3] = {5, &a[1], 7, &a[2], 9, NULL}, *p = &a;
A.p->n
B.(p->n)++
C.++p->n
D.p->next->n
18.下列语句定义 x 为指向 int 类型变量 a 的指针,正确的是()。
A.int a, *x = a;
B.int a, *x = &a;
C.int *x = &a, a;
D.int a, x = a;
19.若有以下说明,且0<=i<10,则对数组元素的错误引用是()。
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])
20.下面定义结构变量的语句中错误的是()。
A.struct student{ int num; char name[20]; } s;
B.struct { int num; char name[20]; } s;
C.struct student{ int num; char name[20]; }; struct student s;
D.struct student{ int num; char name[20]; }; student s;
21.设有如下定义,则对data中的a成员的正确引用是()。
struct sk{ int a; float b; } data, *p=&data;
A.(*p).data.a
B.(*p).a
C.p->data.a
D.p.data.a
22.对于以下变量定义,正确的赋值是()。
int *p[3], a[3];
A.p = a
B.*p = a[0]
C.p = &a[0]
D.p[0] = &a[0]文章来源:https://www.toymoban.com/news/detail-763383.html
23.有如下说明:
int a[10]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, *P=a;
则数值为 9 的表达式是( )。
A.*P+9
B.*(P+8)
C.*P+=9
D.P+8
文章来源地址https://www.toymoban.com/news/detail-763383.html
到了这里,关于DS作业0-C语言基础知识复习(含指针与链表)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!