数组练习试题2

一、单项选择题  
1.下面给出的是使用typedef 定义一个新数据类型的4项工作,如果要正确定义一个新的数据类型,进行这4项工作的顺序应当是______。

  1.把变量名换成新类型名 2.按定义变量的方法写出定义体

  3.用新类型名定义变量 4.在最前面加上关键字 typedef

  A. 2,4,1,3   B. 1,3,2,4 C. 2,3,4,1 D. 4,2,3,1

2. 设有以下链表,则不能将q所指的结点插入到链表末尾的是______。

A. q->next=NULL;p=p->next;p->next=q;

B. p=p->next;q->next= p->next; p->next=q;

C. p=p->next;q->next= p; p->next=q;

D. p=(*p).next;(*q).next= (*p).next; (*p).next=q;

3. 阅读程序,选择正确的输出结果______。

  #include <stdio.h>

  void main()

  {  union

     {  int i[2];   long k;   char c[4]; }  t, *s = &t;

     s->i[0] = 0x39;     s->i[1] = 0x38;

     printf("%c\n",s->c[0]);  }

  A. 39       B. 9          C. 38         D. 8

4. 设有以下定义,则不正确的引用是______。

  struct student

  {int age;

 int num;

}stu,*p;

p=&stu;

A. stu.age      B. p->age     

C. (*p).age     D. *p.age

5. 设有以下说明union {  int i;  char c;   float f; }a;

则错误的叙述是______。

A. a所占的内存长度等于成员f的长度

B. a的地址和它的各成员地址都是同一地址

C. a可以作为函数参数

D. 不能对a赋值,也不能在定义a时对它初始化

6. 阅读程序,选择正确的输出结果______。

  #include <stdio.h>

  void main()

  {    union

       {  char c;   int i;  }t;

       t.c = 'A'; t.i = 1;

       printf("%d,%d",t.c , t.i); }

  A. 65,1   B. 65,65 C. 1,1      D. 以上都不对

7. 结构体类型变量所占内存是______。

A. 各成员所需内存的总和

B. 结构体中第一个成员所需内存量

C. 结构体中占内存量最大者所需内存量

D. 结构体中最后一个成员所需内存量

8. 对结构体类型变量定义不正确的是______。

  A. #define STUDENT  struct student       B.struct student

     STUDENT                               { char name;

          {char name;                           int num;

           int num;                             }stu;   

}std;

C. struct                               D. struct    

{char name;                              {char name;

int num;                                 int num;

}std;                                     }student;

                      struct student stu;

9. 设有以下定义,则不正确的引用是______。

struct student

{int age;

 int num;

}*p;

A. ( p++)->num     B. p++     

C. (*p).num      D. p=&student.age

10. 设有以下定义,p指向num域的是______。

struct student

{int num;

 char name[10];

}stu,*p;

A. p=&stu.num; B. *p=stu.num;     

C. p=(struct student *)&(stu.num);     D. p=(struct student *)stu.num;

11. 设有以下定义,则不正确的引用是______。

struct student

{int age;

 char sex;

char name[10];

}stu[5],*p;

p=stu;

A. scanf("%s",stu[0].name); B. scanf("%d",&stu[0].age);     

C. scanf("%c",&(p->sex));      D. scanf("%d", p->age);

12. 阅读程序,选择正确的输出结果______。

  #include <stdio.h>

  void main()

  {  union

     {  short int i[2];  long k;  char c[4];  }  t, *s = &t;

     s->i[0] = 0x39;     s->i[1] = 0x38;

     printf  ("%x\n",s->k); }

  A. 390038   B. 380039     C. 3938       D. 3839

13. 以下对C语言中共用体类型数据的正确叙述是______。

  A. 一旦外定义了一个共用体变量,即可引用该变量或该变量中的任意成员。

  B. 一个共用体变量中可以同时存放其所有成员。

  C. 一个共用体变量中不能同时存放其所有成员。

  D. 共用体类型数据可以出现在结构体类型定义中,但结构体类型数据不能出现在共用体类型定义中。

14. C语言中结构体类型变量在程序执行期间______。

A. 所有成员一直驻留在内存中

B. 只有一个成员驻留在内存中

C. 部分成员驻留在内存中

D. 没有成员驻留在内存中

15.选择一种格式填入,使下面程序段中指针p指向一个整型变量。

int *p;

p=_______maclloc(sizeof(int));

A.  int         B.  int *         C.  (* int)       D.  (int *)

16. 设有以下说明union {  int i;  char c;   float a; }test;

则sizeof(test)的值是______。

  A. 4     B. 5      C. 6      D. 7

17已知:union u{  int i;  char ch;  }temp;现在执行"temp.ch= 'a'" ,temp.i的值为______。

  A. 266    B. 256 C. 97     D. 1

18. 以下程序的输出结果是______。

typedef union {long a[2];

int b[4];

char c[8];}UN;

UN u;

main()

{printf("%d\n",sizeof(u));}

A. 32       B. 16        C. 8        D. 24

19. 以下程序输出为______。

  #include "stdio.h"

  mai()

  {struct birthday

      {int year,month,day;

       }birth;

printf("%d\n",sizeof(struct birthday));

}

A. 6     B. 8      C. 10      D. 12

20. 下面对枚举类型名的正确定义是______。

  A. enum  a={one,two,three}; B. enum  a {one=9,two=-1,three};

  C. enum  a={"one","two","three"}; D. enum a {"one","two","three"};

二.多选

有以下定义:

  struct student

  { int num;

float score;

}stu;

则下面叙述正确的是______。

A. struct是结构体类型的关键字

B. struct stu是用户定义的结构体类型

C. stu是用户定义的结构体类型名

D. num和score是结构体成员名

三、判断题   

 1.   共用体类型变量的地址及其中所有成员的起始地址都不相同。

2. 共用体类型变量必须在不同时间内维持相同类型的成员值。

3. C语言中可以用typedef为类型定义新的类型名。

4. 可以用指向结构体的指针作为函数参数。

5. 同数组一样,可以对链表中的结点进行随机存取。

6. 链表在内存中可以是不连续存放的。

7. C语言中可以用typedef同#define一样,都是在预编译时处理的。

8. 枚举型变量只能取枚举类型定义中的某个枚举值,不能是其它值。

9. 链表是动态地进行存储分配的一种结构。

10. 链表中各结点的联系是通过指针来实现的。

11. 结构体类型变量中各成员名不能与程序中的其他变量同名。

12. 结构体类型变量中的成员不能是结构体类型。

13共用体也称为联合。

14.可以把结构体类型变量作为整体进行输入、输出。

15. 在C编译系统中,枚举元素不能被赋值。

16. 在C语言中,可以定义不同类型的数据共享同一段内存区域,这种形式的数据构造类型称为结构体。

17. 结构体类型变量中各成员共用一段内存。

18. C语言中可以用typedef来定义变量。

19. 共用体类型变量在定义时进行的初始化,只能根据第一个成员的类型来进行。

20. 在C编译系统中,将枚举元素作为常量来处理。

21结构体类型变量可以在定义时赋初值。

22.共用体类型变量可以在不同时间内维持不同类型的成员值。

23. 共用体中的所有成员是以同一个地址开始存放。

四、填空题   

1.下面程序的输出结果是________。

struct stu

{ int x,*y;

}*p;

int d[4]={10,20,30,40};

struct stu a[4]={50,&d[0],60, &d[1],70, &d[2] ,80,&d[3]};

main()

{ p=a;

  printf("%d,",++p->x);

  printf("%d,",(++p)->x);

printf("%d\n",++(*p->y));

}

2. 设有以下定义:

union

{int i;

 char c;

 flaot f;

}u;

则共用体变量u在内存中占的字节数是________。

3.以下程序的运行结果是________。

union un

{ int a;

 int b;

};

union un s[4];

union un *p;

main()

{ int n=1,i;

 for(i=0;i<4;i++)

 {s[i].a=n; s[i].b=s[i].a+1; n=n+2;

}

p=&s[0];

printf("%d,",p->a);

printf("%d",++p->a);

}

4.以下程序段定义一个结构体,使有两个域data和next,其中data存放整形数据,next为指向下一个结点的指针。

struct object{int data;

_______________

}node;

5.已知有如下定义:

  struct student

  { int num;

char name[10];

char sex;

int age;

 float score;

char address[50];

}stu;

则系统为stu分配的内存单元为______。

6.在程序的横线上填入适当的内容使程序能输出结构体变量stu所占内存字节数。

 struct student

{double num;

  char name[20];

};

main()

{ struct student stu;

   printf("stu size:%d\n",____________);

}

参考答案:ACBDC  CADDC  DBCAD  ACCAB  

ABD

FFTTF  TFTTT  FFTFT  FFFTT  TTT

51,60,21

4

2,3

struct object *next

69

sizeof(stu)

原文链接:https://blog.csdn.net/qq_42769760/article/details/136687622?spm=1001.2101.3001.10796

posted @ 2025-07-26 23:32  gdyyx  阅读(2)  评论(0)    收藏  举报