第28练 7.1-7.2 结构体概述、结构体变量的定义方法 《C语言》 (第五版) 一课一练 (山东省)

2026-06-24
| 2份
| 10页
| 2人阅读
| 0人下载

资源信息

学段 中职
学科 职教专业课
课程 C语言程序设计
教材版本 -
年级 -
章节 -
类型 作业-同步练
知识点 C语言概述
使用场景 同步教学
学年 2026-2027
地区(省份) 山东省
地区(市) -
地区(区县) -
文件格式 ZIP
文件大小 107 KB
发布时间 2026-06-24
更新时间 2026-06-24
作者 xkw_068401954
品牌系列 上好课·一课一练
审核时间 2026-06-24
下载链接 https://m.zxxk.com/soft/58480036.html
价格 1.00储值(1储值=1元)
来源 学科网

内容正文:

【编写说明】依托三阶支架资源编写方案,《一课一练》明确基础层具象化支架定位,作为课堂同步配套资源,其内容与课堂教学深度绑定,并且精准匹配中职学生知识基础与学习特质,遵循“由浅入深、循序渐进”的认知规律,聚焦基础性与实效性核心,通过拆解知识点、简化认知难度,切实降低学习门槛,为后续知识巩固与能力提升筑牢根基,是优质课后作业首选。 本卷是《C语言》(第五版)《一课一练》第28练,内容是7.1-7.2 结构体概述、结构体变量的定义方法。 《C语言》(第五版)一课一练 第28练 7.1-7.2 结构体概述、结构体变量的定义方法 一、单选题 1. 以下关于C语言结构体的叙述中,正确的是( ) A. 结构体中的成员必须是同一种数据类型 B. 结构体类型与数组完全相同,没有区别 C. 结构体是一种构造数据类型,可以将不同类型的数据组合成一个整体 D. 定义结构体类型后系统会为其分配内存空间 2. 以下结构体类型声明中,语法正确的是( ) A. struct Student { int num; char name[20]; float score; }; B. Student { int num; char name[20]; float score; }; C. struct Student { int num, char name[20], float score; }; D. struct Student [ int num; char name[20]; float score; ]; 3. 以下选项中,能正确定义结构体变量s的方式是( ) A. struct s { int x; float y; }; B. { int x; float y; } struct s; C. structure { int x; float y; } s; D. struct { int x; float y; } s; 4. 以下关于结构体类型与结构体变量的描述中,正确的是( ) A. 结构体类型和结构体变量都会在定义时分配内存空间 B. 定义结构体类型时不分配内存,定义结构体变量时才分配内存 C. 可以对结构体类型进行赋值操作 D. 结构体类型可以在程序运行时修改其成员 5. 设有结构体定义:struct Point { int x; int y; }; 以下能正确初始化结构体变量p的是( ) A. struct Point p = {3, 4}; B. struct Point p = (3, 4); C. struct Point p = [3, 4]; D. struct Point p = {x:3, y:4}; 6. 设有以下定义: struct Date { int year; int month; int day; }; struct Student { int num; struct Date birth; }; 则以下能正确访问Student类型变量stu的出生年份的是( ) A. stu.birth->year B. stu.Date.year C. stu.birth.year D. stu->birth.year 7. 以下程序片段中,叙述正确的是 struct S { int a; char b; float c; } x = {1, 'A', 2.5}, y = x;( ) A. y=x是非法的,结构体变量之间不能直接赋值 B. y=x编译通过但运行时会出现错误 C. y=x的效果等同于比较x和y的各成员是否相等 D. y=x是合法的,将x各成员的值赋给y的对应成员 二、简答题 8. 以下程序的运行结果是【··】。 #include <stdio.h> struct Rect { int w; int h; }; main() { struct Rect r1 = {3, 4}, r2; r2 = r1; r2.w = 5; printf("%d,%d ", r1.w + r1.h, r2.w + r2.h); } 三、案例分析题 9. 以下程序的功能是定义一个表示学生信息的结构体类型,输入一个学生的学号、姓名和成绩,并输出该学生信息。请填空。 #include <stdio.h> 【1】 Student { int num; char name[20]; float score; }; main() { 【2】 stu; printf("请输入学号、姓名、成绩:"); scanf("%d%s%f", &stu.num, 【3】, &stu.score); printf("学号:%d 姓名:%s 成绩:%.1f ", stu.num, stu.name, stu.score); } 四、综合应用题 10. 编写一个C程序:定义一个表示圆的结构体类型Circle,包含成员radius(半径,浮点型);定义两个Circle类型的变量c1和c2并初始化;计算并输出两个圆的面积之差(结果保留2位小数)。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $ 【编写说明】依托三阶支架资源编写方案,《一课一练》明确基础层具象化支架定位,作为课堂同步配套资源,其内容与课堂教学深度绑定,并且精准匹配中职学生知识基础与学习特质,遵循“由浅入深、循序渐进”的认知规律,聚焦基础性与实效性核心,通过拆解知识点、简化认知难度,切实降低学习门槛,为后续知识巩固与能力提升筑牢根基,是优质课后作业首选。 本卷是《C语言》(第五版)《一课一练》第28练,内容是7.1-7.2 结构体概述、结构体变量的定义方法。 《C语言》(第五版)一课一练 第28练 7.1-7.2 结构体概述、结构体变量的定义方法 一、单选题 1. 以下关于C语言结构体的叙述中,正确的是( ) A. 结构体中的成员必须是同一种数据类型 B. 结构体类型与数组完全相同,没有区别 C. 结构体是一种构造数据类型,可以将不同类型的数据组合成一个整体 D. 定义结构体类型后系统会为其分配内存空间 【答案】C 【解析】结构体是一种构造数据类型,它允许将不同类型的数据成员组合在一起形成一个新的类型。A错误,结构体成员可以是不同类型,这正是结构体与数组的区别之一。B错误,数组的元素必须类型相同,结构体成员可以类型不同。D错误,定义结构体类型本身不分配内存,定义结构体变量时才分配内存空间。 2. 以下结构体类型声明中,语法正确的是( ) A. struct Student { int num; char name[20]; float score; }; B. Student { int num; char name[20]; float score; }; C. struct Student { int num, char name[20], float score; }; D. struct Student [ int num; char name[20]; float score; ]; 【答案】A 【解析】C语言中声明结构体类型的标准格式为struct 结构体名{ 成员列表 };,成员之间用分号分隔。A格式完全正确。B缺少struct关键字。C中成员之间不应该用逗号分隔,应使用分号。D中花括号被写成了方括号,语法错误。 3. 以下选项中,能正确定义结构体变量s的方式是( ) A. struct s { int x; float y; }; B. { int x; float y; } struct s; C. structure { int x; float y; } s; D. struct { int x; float y; } s; 【答案】D 【解析】D使用了匿名结构体(省略结构体名)直接定义变量s,这是合法的定义方式。A定义的是结构体类型struct s,并没有定义变量。B的书写顺序错误,关键字struct应在花括号前面。C中structure不是C语言的关键字,正确的关键字是struct。 4. 以下关于结构体类型与结构体变量的描述中,正确的是( ) A. 结构体类型和结构体变量都会在定义时分配内存空间 B. 定义结构体类型时不分配内存,定义结构体变量时才分配内存 C. 可以对结构体类型进行赋值操作 D. 结构体类型可以在程序运行时修改其成员 【答案】B 【解析】结构体类型是一个模板描述,定义时不占用内存空间;定义结构体变量时,系统根据类型的成员为变量分配相应的内存。A错误,类型本身不分配内存。C错误,不能对类型赋值,赋值操作的对象是变量。D错误,类型是静态描述,不能在运行时修改其成员定义。 5. 设有结构体定义:struct Point { int x; int y; }; 以下能正确初始化结构体变量p的是( ) A. struct Point p = {3, 4}; B. struct Point p = (3, 4); C. struct Point p = [3, 4]; D. struct Point p = {x:3, y:4}; 【答案】A 【解析】结构体变量初始化使用花括号{},按成员顺序依次给出初值,各值用逗号分隔。A格式正确。B使用圆括号是错误的,圆括号用于函数调用。C使用方括号是错误的。D中x:3, y:4的写法不是C语言的初始化语法,这种写法属于其他语言的特征。 6. 设有以下定义: struct Date { int year; int month; int day; }; struct Student { int num; struct Date birth; }; 则以下能正确访问Student类型变量stu的出生年份的是( ) A. stu.birth->year B. stu.Date.year C. stu.birth.year D. stu->birth.year 【答案】C 【解析】结构体嵌套时,访问内层成员使用多级点运算符。stu是结构体变量,birth是stu的成员(也是结构体变量),year是birth的成员,因此用stu.birth.year访问。A中birth不是指针,不能用->运算符。B中Date是类型名不是成员名。D中stu不是指针,不能用->运算符。 7. 以下程序片段中,叙述正确的是 struct S { int a; char b; float c; } x = {1, 'A', 2.5}, y = x;( ) A. y=x是非法的,结构体变量之间不能直接赋值 B. y=x编译通过但运行时会出现错误 C. y=x的效果等同于比较x和y的各成员是否相等 D. y=x是合法的,将x各成员的值赋给y的对应成员 【答案】D 【解析】同类型的结构体变量之间可以直接赋值,其效果是将右侧变量各成员的值逐个复制到左侧变量的对应成员中。A错误,C语言允许同类型结构体变量之间赋值。B错误,赋值操作在编译和运行阶段都是合法的。C错误,赋值操作是复制数据,不是比较操作。 二、简答题 8. 以下程序的运行结果是【··】。 #include <stdio.h> struct Rect { int w; int h; }; main() { struct Rect r1 = {3, 4}, r2; r2 = r1; r2.w = 5; printf("%d,%d ", r1.w + r1.h, r2.w + r2.h); } 【答案】7,9 【解析】程序定义结构体类型Rect,成员w和h分别表示宽和高。r1初始化为{3,4},r2=r1将r1各成员值复制给r2,此时r2为{3,4}。然后r2.w=5修改r2的w为5,r2变为{5,4}。r1不受影响仍为{3,4}。输出r1.w+r1.h=3+4=7,r2.w+r2.h=5+4=9。 三、案例分析题 9. 以下程序的功能是定义一个表示学生信息的结构体类型,输入一个学生的学号、姓名和成绩,并输出该学生信息。请填空。 #include <stdio.h> 【1】 Student { int num; char name[20]; float score; }; main() { 【2】 stu; printf("请输入学号、姓名、成绩:"); scanf("%d%s%f", &stu.num, 【3】, &stu.score); printf("学号:%d 姓名:%s 成绩:%.1f ", stu.num, stu.name, stu.score); } 【答案】【1】struct 【2】struct Student 【3】stu.name 【解析】【1】声明结构体类型需使用struct关键字。【2】定义结构体变量时需写完整类型名struct Student。【3】name是字符数组,数组名本身就是地址,因此scanf中不需要取地址符&,直接写stu.name即可。 四、综合应用题 10. 编写一个C程序:定义一个表示圆的结构体类型Circle,包含成员radius(半径,浮点型);定义两个Circle类型的变量c1和c2并初始化;计算并输出两个圆的面积之差(结果保留2位小数)。 【答案】#include <stdio.h> #define PI 3.14159 struct Circle { float radius; }; main() { struct Circle c1 = {3.0}, c2 = {5.0}; float area1, area2, diff; area1 = PI * c1.radius * c1.radius; area2 = PI * c2.radius * c2.radius; diff = area2 - area1; printf("面积之差:%.2f ", diff); } 【解析】程序首先用struct Circle定义结构体类型,包含浮点型成员radius。分别初始化c1半径为3.0、c2半径为5.0。按圆面积公式PI*r*r分别计算两个圆的面积,再求差值并输出。使用%.2f保留两位小数。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $

资源预览图

第28练 7.1-7.2 结构体概述、结构体变量的定义方法 《C语言》 (第五版) 一课一练 (山东省)
1
第28练 7.1-7.2 结构体概述、结构体变量的定义方法 《C语言》 (第五版) 一课一练 (山东省)
2
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。