DS作业0-C语言基础知识复习(含指针与链表)

判断题:
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]

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://blog.csdn.net/2302_76949164/article/details/134192522

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
心中带点小风骚的头像心中带点小风骚普通用户
上一篇 2024年1月3日
下一篇 2024年1月3日

相关推荐