printf(\A. 80 B. a C. 0 D. 97
211. 一个结构体变量占用的内存大小是( )。 A. 占内存容量最大的成员所需容量 B. 各成员所需内存容量之和 C. 第一个成员所需内存容量 D. 最后一个成员所需内存容量
212. 以下程序段的运行结果是( )。
union { int x; float y; char c; }m,n; m.x=5; m.y=7.5; m.c='A'; n.x=8;
printf(\A. 5 B. 7.5 C. 65 D. 8
213. 若有定义:
struct student {int num;
char name[8]; char sex; float score; }stu1;
则变量stu1所占用的内存字节数是( )。 A. 15 B. 16 C. 8 D. 19
214. 定义结构体类型变量teach1,不正确的是(A. struct teacher
{ int num; int age; };
struct teacher teach1; B. struct teacher
)。 { int num;
int age; }teach1; C. struct
{ int num;
int age; }teach1; D. struct
{ int num; int age; }teacher;
struct teacher teach1; 215. 若有定义:
struct stuent {int num; char sex; int age; }stu1;
下列叙述不正确的是( )。 A. student是结构体类型名
B. struct student是结构体类型名
C. stu1是用户定义的结构体类型变量名 D. num,sex,age都是结构体变量stu1的成员 216. 下面程序的运行结果是( )。 #include
void main()
{printf(\ } A. 16 B. 8 C. 4 D. 2
217. 下面程序的运行结果是( )。 #include
{char a[2]; int i;
union data d; }p;
void main()
{printf(\ } A. 5 B. 6 C. 7 D. 8
218. 以下C语言共用体类型数据的描述中,正确的是( )。 A. 共用体变量占的内存大小等于所有成员所占的内存大小之和 B. 共用体类型不可以出现在结构体类型定义中
C. 在定义共用体变量的同时允许对第一个成员的值进行初始化 D. 同一共用体中各成员的首地址不相同 219. 设有如下语句: struct stu {int num; int age; };
struct stu s[3]={{101,18},{102,21},{103,19}}; struct stu *p=s;
则下面表达式的值为102的是( )。 A. (p++)->num B. (*++p).num C. (*p++).num D. *(++p)->num
220. 若有下面定义,能打印出字母'L'的语句是( )。 struct class {char name[8]; int age; };
struct class s[12]={\A. printf(\B. printf(\C. printf(\D. printf(\
221. 若有下面定义,对结构体变量成员不正确引用的语句是( )。 struct pup
{char name[20]; int age; int sex; }p[3],*q;
q=p;
A. scanf(\B. scanf(\C. scanf(\D. scanf(\
222. 以下程序的输出结果是( )。
main()
{ printf( \}
fac(int n) { int s;
if(n==1) return 1; else return n*fac(n-1); } A. 120 B. 60 C. 6 D. 1
八、链表
223. 若有以下定义: struct node { int data;
struct node *next; };
struct node *p;
已建立如下图所示的链表:
┌──┬──┐ ┌──┬──┐ ┌──┬──┐ p →│data│next┼→│data│next┼→...─→│data│NULL│ └──┴──┘ └──┴──┘ └──┴──┘
指针p指向第一个结点,能输出链表所有结点的数据成员data的循环语句是(A. while(p!=NULL) { printf(\ p++; }
B. while(p)
{ printf(\ p=p->next; }
C. for( ; p!=NULL; p++) printf(\D. for( ; p; p=p->next) printf(\
)。 224. 若有以下定义: struct node { int data;
struct node *next; }
struct node m,n,k, *head, *p; 已建立如下图所示的链表:
m n k
┌──┬──┐ ┌──┬──┐ ┌──┬──┐ head →│data│next┼→│data│NULL│ p → │data│next│ └──┴──┘ └──┴──┘ └──┴──┘
指针head指向变量m, m.next指向变量n,p指向变量k,不能把结点k插到m和n之间形成新链表的程序段是( )。
A. m.next = p; p->next = head->next; B. (*head).next = p; (*p).next = &n;
C. head->next = &k; p->next = head->next; D. m.next = &k; k.next = &n; 225. 若有以下定义: struct node { int data;
struct node *next; }
struct node *head,*p;
已建立如下图所示的链表:
p ↓
┌──┬──┐ ┌──┬──┐ ┌──┬──┐ head →│data│next┼→│data│next┼→...─→│data│NULL│ └──┴──┘ └──┴──┘ └──┴──┘ 能删除指针p所指向结点的程序段是( )。 A. p = p->next; head->next=p->next; free(p); B. free(p); p = p->next; head->next=p->next; C. head->next = p->next; free(p); D. free(p); head->next = p->next; 226. 若有以下定义: struct node { int data;
struct node *next; } *p,*q;
已建立如下图所示的链表:
┌──┬──┐ ┌──┬──┐ ... p →│data│next┼→│data│NULL│ └──┴──┘ └──┴──┘