当前位置:文档之家› 第七章 结构体和共用体

第七章 结构体和共用体

第十章结构体和共用体一、选择题
1.说明一个结构体变量时系统分配给它的内存是(A)。

A)各成员所需内存总和。

B)结构中第一个成员所需的内存量
C)成员中占内存量最大者所需的容量
D)结构中最后一个成员所需内存量
2.以下对结构体类型变量的定义中不正确的是(D)。

A) #define STUDENT struct student
STUDENT
{ int num;
float age;
} std1;
B) struct student
{ int num;
float age;
} std1;
C) struct
{ int num;
float age;
}std1;
D) struct
{ int num;
float age;
} student;
struct student std1;
3.设有以下说明语句
struct stu
{ int a;
float b;
} stutype;
则下面的叙述不正确的是(C)。

A)struct是结构体类型的关键字
B)s truct stu是用户定义的结构体类型
C)s tutype是用户定义的结构体类型名
D)a和b都是结构体成员名
4.C语言结构体类型变量在程序执行期间(A)
A)所有成员一直驻留在内存中
B)只有一个成员驻留在内存中
C)部分成员驻留在内存中
D)没有成员驻留在内存中
5.以下程序运行结果是(A)。

#include “stdio.h”
main()
{ struct date
{ int year, month, day;
} today;
printf(“%d\n”,sizeof(struct date));
A) 6 B)8 C)10 D)12
6.下面程序的运行结果是(D)
main()
{
struct cmplx { int x;
int y;
} cnum[2]={1,3,2,7};
printf(“%d\n”,cnum[0].y/cnum[0].x*cnum[1].x);
}
A)0 B)1 C)3 D)6
7.以下scanf函数调用语句中对结构体变量成员的不正确引用是(D)struct pupil
{ char name[20];
int age;
int sex;
} pup[5],*p;
p=pup;
A)scanf(“%s”,pup[0].name);
B)scanf(“%d”,&pup[0].age);
C)scanf(“%d”,&(p->sex));
D)scanf(“%d”, p->age);
8.设有如下的定义:
struct sk
{ int n;
float x;
} data, * p;
若要使p指向data中的n域,正确的赋值语句是(C)。

A)p=&data.n;
B)*p=data.n;
C)p=(struct sk *)&data.n
D)p=(struct sk*) data.n;
9.若有以下说明语句
struct student
int num;
} std, *p;
p=&std;
则以下对结构体变量std中成员age的引用方式不正确的是(D)。

A)std.age B)p->age C) (*p).age D)*p.age
10.以下程序的输出结果是(C)。

Struct stu
{ int x;
int *y;
} * p;
int dt[4]={10,20,30,40};
struct stu a[4]={ 50, &dt[0], 60, &dt[1],
70, &dt[2],80, &dt[3]
};
main()
{ p=a;
printf(“%d,”,++p->x);
printf(“%d,”, (++p)->x);
printf(“%d\n”, ++(*p->y));
}
A) 10,20,20 B)50,60,21
C) 51,60,21 D)60,70,31
11.以下程序的功能是:读入一行字符,按输入时的逆序建立一个链接式的结点序列,即先输入的位于链表尾,然后在按输入的相反的顺序输出,并释放全部结点。

请选择正确的内容填空。

#include “stdio.h”
#define genode(type) 【1】malloc(sizeof(type))
main()
{ struct node
{ char info;
struct node *link;
} * top, * p;
char c;
top=NULL;
while ((c=gechar()) 【2】)
{
p=getnode(struct node);
p->info=c;
p->link=top;
top=p;
}
{
【3】;
top=top->link;
putchar(p->info);
free(p);
}
}
12.若要利用下面的程序片段使指针变量p指向一个存储整型变量的存储单元,则【】中应填入的内容是(D)。

int * p;
p=【】malloc(sizeof(int));
A)int B) int* C) (* int ) D) (int *)
13.当说明一个共用体变量时系统分配给它的内存是(C)。

A)各成员所需内存的总和
B)结构中第一个成员所需的容量
C)成员中占内存量最大者所需的容量
D)结构中最后一个成员所需内存量
14.以下程序的运行结果是(B)
#include “stdio.h”
main()
{ union {
long a;
int b;
char c;
} m;
printf(“%d\n”,sizeof(m));
}
A) 2 B) 4 C) 6 D) 8
15.以下程序运行的结果是(A)。

#include “stdio.h”
union pw
{ int i;
char ch[2];
} a;
main()
{ a.ch[0]=13;
a.ch[1]=0;
printf(“%d\n”,a.i);
}
A)13 B)14 C)208 D)209
16.使用typedef定义一个新类型的正确步骤是()。

A)2,4,1,3 B)1,3,2,4 C)2,1,4,3 D)4,2,3,1
1.把变量名换成新类型名
2.按定义变量的方法写出定义体
3.用新类型名定义变量
4.在最前面加上关键字typedef
17.以下程序运行的结果是()。

Typedef union { long a[2];
int b[4];
char c[8];
}TY;
TY our;
main()
{ printf(“%d\n”,sizeof(our));
}
A)32 B) 16 C) 8 D) 24
二、编程题
1.有5个学生,每个学生的数据包括(学号,3门课成绩,平均成绩),要求先输入每个学生的前两项信息,求出平均成绩,再输出每个学生的所有信息。

2.写一函数,把字符串a中第m个字符开始的所有字符复制成字符串b。

3.建立一个链表,读入一个数,如果在链表中,将此值删除,否则将此值插入。

相关主题