第七章 结构体和共用体

合集下载

C程序设计(第四版)第7章结构体与共用体

C程序设计(第四版)第7章结构体与共用体

7.1.1
结构体类型的定义
结构体在说明和使用之前,必须先由用 户自己定义。结构体定义的一般形式如下: struct 结构体名 { 成员类型说明符 成员项1; 成员类型说明符 成员项2; …… 成员类型说明符 成员项n; };
其中: 1、struct是C语言中定义结构体的关键字。 2、成员类型说明符是说明每个成员项的数 据类型,可以是基本数据类型,也可以是数组 类型,还可以是另一个已定义的结构体类型。 3、成员名可以和程序中的变量名相同,两 者不代表同一对象。 4、要注意,在结构体定义中的右括号后应 该有分号。
7.1.6
指向结构体的指针
一个结构体类型的数据在内存中都占据一定 的存储空间,我们可以定义一个指针来指向该 结构体类型的数据,该指针变量称为指向结构 体的指针,简称之为结构体指针。我们可以通 过结构体指针来访问结构体类型的数据,如结 构体变量、结构体数组。指向结构体的指针变 量说明形式如下: struct 结构体类型名 *结构体指针变量名;
main() { struct student stu1; struct student *p; p=&stu1; stu1.num=50201001; gets(); stu1.score=89.5;
printf(“No:%ld\nName:%s\nScore:%4.1f\n”,stu1 .num,,stu1.score); printf(“No:%ld\nName:%s\nScore:%4.1f\n”,(*p). num,(*p).name,(*p).score);
3、结构体数组应用举例 【例7-2】现有三个候选人(每个候选人的ID 号分别是1、2、3),选举人投票进行选举, 编写程序统计出每个候选人的得票结果。 程序如下: #define NUM 30 #include <stdio.h> struct elector { int id; char name[20]; int count;

《C语言程序设计教程》第三版课后习题参考答案

《C语言程序设计教程》第三版课后习题参考答案

《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表示假、非零表示真)。

结构体、共用体、枚举和ty

结构体、共用体、枚举和ty

每个数组元素都是一个共用体变 量,可以存储不同类型的值。
共用体数组在内存中占用的空间 等于数组长度乘以共用体的大小。
共用体指针
共用体指针是指向共用体类型数据的 指针。
使用共用体指针可以方便地处理不同 类型的数据,提高代码的灵活性和效 率。
通过共用体指针可以访问共用体的成 员,并对其进行操作。
03
05
结构体、共用体、枚举和ty的应用
在数据结构中的应用
结构体
用于表示复杂的数据结构,如点、线、面等几何形状,或学生、 教师等具有多个属性的实体。
共用体
用于节省存储空间,当多个数据项不会同时出现时,可以使用共 用体来存储它们,以减少内存占用。
枚举
用于定义一组命名的常量,增加代码的可读性和可维护性。
ty类型变量的使用可以提高 代码的可读性和可维护性, 同时方便进行数据类型转换
和运算。
在定义ty类型变量时,需要注 意变量的作用域和生命周期, 避免出现变量名冲突和内存泄
漏等问题。
ty类型数组
1
ty类型数组是使用ty类型定义的数组,其定义方 式与基本数据类型数组的定义方式相同。
2
通过定义ty类型数组,可以方便地处理一组相同 类型的数据,提高代码的可读性和可维护性。
存空间大小以及可以进行的操作等。
ty类型的定义使用关键字`typedef`,语法格式为 `typedef 原有类型 别名;`,其中原有类型可以是基本
数据类型、结构体、共用体、枚举等。
通过定义ty类型,可以简化代码,提高代码的可读性 和可维护性。
ty类型变量
ty类型变量是使用ty类型定义 的变量,其定义方式与基本数 据类型变量的定义方式相同。
结构体指针

结构体与共用体zlh

结构体与共用体zlh
数据类型
结构体中每个成员可以是不同的 数据类型,而共用体中所有成员 必须是相同的数据类型。
结构体与共用体的区别与联系
• 使用方式:结构体中每个成员都可以单独访问和操作,而 共用体中一次只能使用其中一个成员。
结构体与共用体的区别与联系
自定义类型
结构体和共用体都是用户自定义的数据类型 ,可以根据需要组合不同的数据类型。
对于大型结构体和共用体,可以使用指针成 员来减少直接内存占用。
在跨平台编程时,要注意不同平台下的内存 对齐规则可能不同,需要进行相应的调整。
05
结构体与共用体的应用案例
案例一:使用结构体实现学生信息管理
定义学生结构体
包含学生姓名、学号、性别、年龄等字段。
创建学生信息数组
根据学生数量,创建相应大小的学生信息数组。
访问速度较慢
访问结构体的成员变量时,需要通过 指针或引用等方式进行间接访问,相 对于直接访问基本数据类型,速度较 慢。
结构体与共用体的优缺点分析
内存占用小
共用体中的所有成员变量共享同一块内存空间,因此相对于 结构体,共用体的内存占用较小。
访问速度快
访问共用体的成员变量时,可以直接通过内存地址进行访问 ,速度较快。
封装性好
结构体可以将多个变量封装在一起,形成一个自定义的数据类型,方便数据的 处理和管理。
结构体与共用体的优缺点分析
• 可扩展性强:结构体可以方便地添加或删除成员 变量,以适应不同的应用场景和需求。
结构体与共用体的优缺点分析
内存占用较大
由于结构体中每个成员变量都占用独 立的内存空间,因此相对于基本数据 类型,结构体的内存占用较大。
赋值给共用体变量
可以给共用体的任何一个成员赋值,如`data.f = 3.14;`,表示将 `data`的`f`成员赋值为3.14。

C语言学习入门笔记之结构体与共用体

C语言学习入门笔记之结构体与共用体

结构体与共用体笔记定义结构体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.定义结构体类型变量说明结构变量有以下三种方法。

C语言程序设计——结构体和共用体(完整版)

C语言程序设计——结构体和共用体(完整版)

printf(“name\tage\tjob\tclass/office\n”); for(i=0;i<PN;i++) {if(body[i].job==„s‟) printf(“%s\t%d\t%3c\t%d\n”,body[i].name, body[i].age,body[i].job,body[i].units.class); else printf(“%s\t%d\t%3c\t%s\n”,body[i].name, body[i].age,body[i].job,body[i].units.office); } }
birthday num name sex age month day year addr
§12.3结构体数组
结构体数组的每一个元素都是具有相同结构类型 的结构体变量。 例:struct student {int num; char name[20]; float score; }stu[3]; 其中,定义了一个结构体数组stu,共有3个元素, 每个元素都具有struct student的结构形式。
§12.6共用体
共用体(也称为联合)也是一种构造的数据类型。 共用体是将不同类型的数据组织在一起共同占用 同一段内存的一种构造数据类型。 例如,在校学生和教师都填写以下表格: 姓名 年龄 职业 单位 其中,职业分两类:教师和学生; 而单位一栏里,学生填写班级编号(整型类型), 教师填写某系某教研室(整型类型) 。
§12.7枚举数据类型
当某些变量仅由有限个数据值组成时,通常用枚 举类型来表示。 所谓枚举是指将变量的值一一列举出来,变量的 值只限于列举出来的值的范围内。如一周只有7天, 一年只有12个月等等。
注意:枚举类型是一种基本数据类型,而不是一 种构造类型。关键字为enum。

C语言讲义第07章-结构体与其他构造数据类型(原)

C语言讲义第07章-结构体与其他构造数据类型(原)

atoi(char*str);将数字字符串转换为整型。
atof(char*str);将数字字符串转换为双精度的 实型。 atol(char*str);将数字字串转换长整型。 使用上述函数,要包含头文件"stdlib.h"。
7.1 结构体
• 例7-1类型转换函数在结构体变量数据输 入中的应用示例。定义结构体类型及变 量,输入一个学生的有关信息并输出。 例7-1源程序
7.1 结构体
结构体变量一旦进入其作用域,系统便根据结构体类 型定义时成员排列的先后,自动为结构体变量的每一 个成员分配相应的存储空间。结构体变量的各个成员 均有自己的存储空间,结构体变量所占存储空间的大 小为各成员所占空间之和。 例如:student1 所占空间大小为:8 + 10 + 1+ 4 * 2 = 27(字节)。
例如:指针变量p1,p2指向结构体变量x。
p1 = p2 = &x; 例如:通过结构体指针p1和p2来引用结构体变量x成员。以下三种 方式是等价的。 x.no、、x.score[0] p1->no、p1->name、p1->score[0]
(*p2).no、(*p2).name、(*p2).score[0]
7.2 结构体数组的定义和引用
• 结构体数组的输入与输出一般在循环结构中进行, 一次循环可以输入或输出一条结构体记录。 • 例7-3定义一个结构体数组用于存储和显示三个学 生的基本信息。
例7-3源程序
• 程序运行结果如下:
no. 06030217 06050105 06010116 name zhang san li si wang wu sex m m f age 19 18 18 depart Economy & Commerce engineering Computer science

第7章 (PLASMA)

第7章 (PLASMA)

7.2.1 结构体变量的定义
struct grade { int math; int C_language; int english; float average; }; struct student { long number;

7.2.1 结构体变量的定义

7.3 结构体变量的引用
7.3.1 引用结构体变量的成员 7.3.2 两个相同类型的结构体变量之间相互赋值 7.3.3 结构体变量在函数间的传递
7.3.1 引用结构体变量的成员
任何一个结构体变量不能作为整体输入或输出,为了 实现变量的输入、输出操作,需要对变量中的每一个 成员进行引用。引用结构体变量中成员的方式为: 结构体变量名.成员名 其中,“.”称为成员运算符,具有极高的运算优先 级。若结构体多层嵌套,则需要用若干个成员运算符, 一级一级找到最低一级的成员,只能对最低级的成员 进行赋值、存取或运算。引用内层成员的一般形式是: 结构体变量名.成员名1.成员名2.„.成员名n

7.1 结构体类型的定义
在前几章中,我们已经学习了C语言所提供的一些基本 数据类型,如char、int、float、double等,也学习 了由相同数据类型所组成的数据的集合——数组。但 是在现实生活的很多领域中,经常需要处理一些具有 不同数据类型的数据。例如,处理一个学生的信息时, 学生的学号、姓名、性别、年龄等信息作为学生的属 性,需要作为一个整体来处理。如果采用简单的基本 数据类型来操作,则难以反映出它们之间的内在联系, 并且使程序冗长,降低数据处理的效率,且易出错误。 因此,在C语言中引入了一种能够处理复杂数据的数据 类型——结构体类型。
7.2.2 结构体变量的初始化
或者 struct student wang_lin={0601005,“wang lin”,“M”,19,“Shenyang University of Technology”}; 也可以像数组一样进行不完全的初始化,例如: struct student wang_lin={0601005,“wang lin”,“M ”};

C++程序设计教程-第7章结构体与共用体

C++程序设计教程-第7章结构体与共用体

C++程序设计
湖南大学
杜四春、银红霞
在定义了结构体变量后,就可以用不同的赋值方 法对结构体变量的每个成员赋值。例如:
strcpy(,”Zhang San”);
worker1.age=26;
strcpy(worker1.phone,”1234567”);
worker1.sex=’m’;
char addr[20];
}stu[3];
C++程序设计
湖南大学
杜四春、银红霞
3. 直接定义结构体数组
结构体数组的定义形式如下:
struct
//没有结构体名
{ 成员表列; }数组名[元素个数];
例如: struct {
char name[20];
char sex;
int age;
char addr[20];
C++程序设计
湖南大学
杜四春、银红霞
1. 先定义结构体类型,再用它定义结构体数组。
结构体数组的定义形式如下:
struct 结构体名 {
例如: struct student
成员表列;
{
}; struct 结构体名
char name[20]; char sex; int age;
char addr[20];
结构体数组初始化的一般形式是:
struct 结构体名
{ 成员表列;
}; struct 结构体名 数组名[元素个数]={初始数据表};
C++程序设计
湖南大学
杜四春、银红霞
或者:
struct 结构体名
{
成员表列;
}数组名[元素个数]={初始数据表}; 在对结构体数组进行初始化时,方括号[ ]中元素

C语言第七章选择题

C语言第七章选择题

C 语言选择) 8 713.设有如下定义: struct st {int a; float b;} st1, *pst; 若有 pst=&st1;,则对 st1 中的 a 域的正确引用是 A) (*pst).st1.a B) (*pst).a C) pst->st1.a D) pst.st1.a 714.若有以下定义: struct stru {int a; long b; char c[6];} sampl; 则以下赋值正确的是 A) sampl.c= "abcd"; B) strcpy(sampl.c, "abcd"); C) sampl->c= "abcd"; D) 以上均不正确 715.以下程序的输出结果是 main() {struct stru{int a; long b; char c[6]; }; printf("%d\n", sizeof(struct stru)); } A) 2 B) 4 C) 6 D) 12 716.以下程序的输出结果是 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); }
C 语言选择题库
汕头大学许创编辑
结点插入到链表末尾的语句组是 data next data next ┌──┬───┐ ┌──┬───┐ head│ E │ +→│ F │ NULL│ └──┴───┘ └──┴───┘ ↑p A) s->next=NULL; p=p->next; p->next=s; B) p=p->next; s->next=p->next; p->next=s; C) p=p->next; s->next=p; p->next=s; D) p=(*p).next; (*s).next=(*p).next; (*p).next=s; 723.以下程序的输出结果是 #include int a[3][3]={1, 2, 3, 4, 5, 6, 7, 8, 9}, *p; main( ) {p=(int*)malloc(sizeof(int)); f(p, a); printf("%d\n", *p); } f(int *s, int p[ ][3]) {*s=p[1][1];} A) 1 B) 4 C) 7 D) 5

第七章 结构体与共用体

第七章 结构体与共用体

定义结构体数组
定义结构体数组 数组各元素在内存中连续 存放,如图所示:
结构体数组的初始化
与其他类型的数组一样,对结构体数组可以初始化。如: struct student { int num; char name[20]; char sex; int age; float score; char add[30]; }; struct student stu[3]={{10101,“Li Lin”,‘M‟,18,87.5, “103 Beijing Road”},{10102,“Zhang Fun”,‘M‟,19,99, “130 Shanghai Road”},{10104,“Wang Min”,‘F‟,20, 78.5,“1010 Zhongshan Road”}};
但不能用以下语句整体读入结构体变量,如: scanf(“%d,%s,%c,%d,%f,%s”, &student1);
(四)结构体变量的初始化
和其他类型变量一样,对结构体变量可以在定义时指定初始值。 例11.1 对结构体变量初始化
struct student { long int num; char name[20]; char sex; char addr[20]; } main() { struct student a = {89031, "Li Lin“, 'M„, "123 Beijing Road"}; printf("NO.:%ld\nname:%s\nsex:%c\naddress:%s\n“,a.num,, a.sex,a.addr); }
方法二:在声明类型的同时定义变量
这种形式的定义的一般形式为:
struct 结构体名 { 成员表列 }变量名表列;

结构体与共用体-枚举

结构体与共用体-枚举
枚举常量的定义
枚举常量是枚举类型的成员,每个枚举常量都有一个整数值与之对应,默认从0 开始,也可以显式指定。
枚举变量
枚举变量的声明
使用枚举类型名称声明枚举变量,例如`enum Color color;`。
枚举变量的赋值
枚举变量只能赋值为枚举常量列表中定义的整数 值或对应的枚举常量名称。
枚举变量的使用
嵌套共用体
嵌套共用体是一个共用体内部包含另一个共 用体或结构体的情况。
共用体变量
声明
共用体变量的声明方式与结构体 变量类似,需要使用共用体类型 名来定义变量。
访问
访问共用体变量的成员需要使用 成员访问运算符(.),且每次只 能访问一个成员。
01
02
定义
共用体变量是用来存储共用体类 型数据的变量。
03
结构体与共用体-枚举
目录
• 结构体概述 • 共用体概述 • 枚举概述 • 结构体、共用体与枚举的关系 • 结构体、共用体与枚举的应用实例 • 总结与展望
01
结构体概述
定义与特点
01
结构体是一种用户自定义的数据类型,允许将不同类型的数据 组合成一个有机的整体。
02
结构体中的数据可以是基本数据类型,也可以是其他结构体类
未来发展趋势预测
01 02
结构化数据处理
随着大数据时代的到来,处理结构化数据变得越来越重要。结构体作为 一种表示结构化数据的数据类型,将在数据处理和分析领域发挥越来越 重要的作用。
内存优化
共用体可以在相同的内存位置存储不同的数据类型,从而节省内存空间。 在内存资源紧张的情况下,共用体的使用将变得更加重要。
04
当需要提高代码的可读性和可维护性时,可以使用枚举类型来代替一 些硬编码的常量值。

《结构体和共用体》PPT课件

《结构体和共用体》PPT课件

精选课件
13
在C语言的运算符中,取成员运算符“.”优先级最高, 故以上语句均为对引用之后的成员变量进行操作。若结构体 定义是嵌套的,则只能引用最低级的成员(用若干“.”运 算符,逐级引用到最低级)。如
stud3.birthday.year 是合法的,而
stud3.year 是非法的。
精选课件
14
2. 结构体类型变量可以整体引用来赋值。如stud2= stud1;即将变量stud1的所有成员的值一一赋给变量 stud2的各成员。结构体型变量只能对逐个成员进行输入或 输出,不可进行整体的输入输出,如:
};
有同样的地位和作分用号,不都可可少以用来定义变
量的类型。
精选课件
5
定义一个结构体类型的一般形式为: struct 结构体名
{ 类型标识符 成员1; 类型标识符 成员2; … 类型标识符 成员n;
};
成员的类型可为除该结构体类型外的任何一种类型,如 基本类型、指针类型和结构体类型。
精选课件
6
若定义结构体类型struct date如下:
10
3. 直接定义结构体类型变量,其一般形式为:
struct
{
成员表列;
}变量名表;
即不出现结构体名。如
struct
{char num[10];
char name[20];
char sex;
ቤተ መጻሕፍቲ ባይዱ
struct date birthday;
float score[3];
char tel[12];
}stud3,stud4;
结构体类型的名称
char sex;
结构体成员列表,
char birth在dasytr[u8c];t studen包t括类每型个起结作构用体的成范围内, float scorest[r3u]c;t student员和的系类统型提及供名的称标准类型
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第十章结构体和共用体一、选择题
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.建立一个链表,读入一个数,如果在链表中,将此值删除,否则将此值插入。

相关文档
最新文档