数组练习试题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

浙公网安备 33010602011771号