第七章 结构体和共用体
- 格式:doc
- 大小:39.00 KB
- 文档页数:5
《C语言程序设计教程》第三版课后习题参考答案C语言程序设计教程第三版课后习题参考答案第一章:C语言概述1.1 C语言的特点答案:C语言是一种通用的、面向过程的程序设计语言,具有高效、简洁、灵活等特点。
它提供了丰富的程序设计元素和功能,适用于各种不同的应用领域。
1.2 C语言程序的基本结构答案:C语言程序由预处理指令、函数声明、函数定义、变量声明和语句组成。
其中,预处理指令用来引入头文件或定义宏,函数声明用来声明函数的名称和参数,函数定义用来实现函数的功能,变量声明用来声明变量的类型和名称,语句用来表达具体的计算过程。
1.3 C语言的数据类型答案:C语言提供了多种数据类型,包括基本类型(整型、浮点型、字符型等)和派生类型(数组、指针、结构体等)。
每种数据类型在内存中占据一定的存储空间,并具有特定的取值范围和操作规则。
1.4 C语言的运算符和表达式答案:C语言支持各种运算符和表达式,例如算术运算符(+、-、*、/等)、关系运算符(>、<、==等)、逻辑运算符(&&、||、!等)等。
通过运算符和表达式可以进行各种数值计算和逻辑判断。
第二章:基本数据类型与运算2.1 整型数据类型答案:C语言提供了不同长度的整型数据类型,包括有符号整型(int、long等)和无符号整型(unsigned int、unsigned long等)。
整型数据类型可以表示整数值,并具有不同的取值范围。
2.2 浮点型数据类型答案:C语言提供了浮点型数据类型(float、double等),用来表示带小数部分的实数值。
浮点型数据可以表示较大或较小的数值,并具有一定的精度。
2.3 字符型数据类型答案:C语言提供了字符型数据类型(char),用来表示单个字符。
字符型数据可以用于表示各种字符(包括字母、数字、符号等)。
2.4 布尔型数据类型答案:C语言不直接支持布尔型数据类型,但可以使用整型数据类型来表示布尔值(0表示假、非零表示真)。
结构体与共用体笔记定义结构体C语言允许用户自己建立由不同类型数据组成的组合型的数据结构,它称为结构体(structre)。
在其他一些高级语言中称为“记录”.定义后的结构体类型和系统提供的标准类型(如int, char, float, double 等)具有相似的作用,都可以用来定义变量,只不过int等类型是系统已声明的,而结构体类型是由用户根据需要在程序中指定的。
定义一个结构体类型的一般形式为:struct 结构体名{ 成员表列};注意:1.结构体类型的名字是由一个关键字struct和结构体名组合而成的(例如struct Student) ,结构体名是由用户指定的,又称“结构体标记”,以区别于其他结构体类型。
上面的结构体声明中Student就是结构体名(结构体标记)。
2.花括号内是该结构体所包括的子项,称为结构体的成员。
“成员表列"(member list)也称为“域表”(field list),成员表列由若干个成员组成,每一个成员是结构体中的一个域。
对每个成员也必须作类型说明,其形式为:类型说明符成员名;成员名的命名应符合标识符的书写规定。
例如:struct stu{int num;char name[20];char sex;float score;};3.一个结构体的成员可以属于另一个结构体类型(嵌套)。
例如:struct Date //声明一个结构体类型struct Date{ int month;//月int day;//日int year;//年}struct Student//声明一个结构体类型struct Student{ int num;char name[20];char sex;int age;struct Date birthday;//成员birthday属于struct Date 类型char addr[30];};结构体类型变量1.定义结构体类型变量说明结构变量有以下三种方法。
第十章结构体和共用体一、选择题
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.建立一个链表,读入一个数,如果在链表中,将此值删除,否则将此值插入。