第25练 7.3 结构体变量的引用 《编程语言基础——C语言》 (第5版) 一课一练 (湖南)

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

内容正文:

【编写说明】依托三阶支架资源编写方案,《一课一练》明确基础层具象化支架定位,作为课堂同步配套资源,其内容与课堂教学深度绑定,并且精准匹配中职学生知识基础与学习特质,遵循“由浅入深、循序渐进”的认知规律,聚焦基础性与实效性核心,通过拆解知识点、简化认知难度,切实降低学习门槛,为后续知识巩固与能力提升筑牢根基,是优质课后作业首选。 本卷是《编程语言基础——C语言》(第5版)《一课一练》第25练,内容是7.3 结构体变量的引用。 《编程语言基础——C语言》(第5版)一课一练 第25练 7.3 结构体变量的引用 一、单选题 1. 在C语言中,引用结构体变量成员的运算符是( ) A. .(点运算符) B. ->(箭头运算符) C. &(取地址运算符) D. *(间接访问运算符) 【答案】A 【解析】对于结构体变量本身(非指针),通过.运算符访问其成员,格式为:结构体变量名.成员名。->用于结构体指针访问成员,&用于取地址,*用于间接访问。 2. 已定义 struct Point { int x; int y; }; 则以下正确的初始化语句是( ) A. struct Point p; p = (10, 20); B. struct Point p = {10, 20}; C. struct Point p = [10, 20]; D. struct Point p = (10, 20); 【答案】B 【解析】结构体变量的初始化使用花括号{}将各成员的初始值括起来,按成员定义顺序赋值。A的赋值语句不能用圆括号初始化整个结构体;C用了方括号;D用了圆括号,语法均不正确。 3. 以下程序段的输出结果是:struct Test { int a; char c; } t; t.a = 65; t.c = t.a; printf("%c", t.c);( ) A. 65 B. a C. A D. 编译错误 【答案】C 【解析】t.a赋值为65,然后将t.a的值赋给t.c(char类型)。字符65对应的ASCII字符是大写字母'A'。虽然t.a是int型,但赋值给char时会发生隐式类型转换,%c按字符格式输出A。 4. 已定义 struct Student { int num; float score; } s1 = {1, 90}, s2; 执行 s2 = s1; 后,下列说法正确的是( ) A. 编译错误,结构体变量不能整体赋值 B. s2中的num被赋值为1,score保持原值 C. s1和s2共享同一段内存 D. s2各成员的值与s1完全相同 【答案】D 【解析】同类型的结构体变量之间可以整体赋值,赋值操作将源变量每个成员的值逐成员复制给目标变量。s1和s2是独立的内存空间,互不影响。这是C语言中结构体与数组的重要区别。 5. 定义了结构体 struct Date { int y, m, d; }; struct Person { char name[10]; struct Date birth; }; 则以下正确的初始化是( ) A. struct Person p = {"Zhang", {2000, 6, 15}}; B. struct Person p = {"Zhang", 2000, 6, 15}; C. struct Person p = {Zhang, {2000, 6, 15}}; D. struct Person p = {"Zhang", (2000, 6, 15)}; 【答案】A 【解析】嵌套结构体的初始化需要用内层花括号{}包裹内层结构体的初始值。A格式正确:外层{}为Person的初始值,内层{}为birth(Date类型)的初始值。B缺少内层花括号;C中Zhang缺少引号;D使用圆括号不正确。 6. 已定义 struct Student { int num; char name[20]; } s; 要从键盘输入学号和姓名,正确的scanf语句是( ) A. scanf("%d%s", s.num, s.name); B. scanf("%d%s", &s.num, s.name); C. scanf("%d%s", &s.num, &s.name); D. scanf("%d%s", s.num, &s.name); 【答案】B 【解析】scanf要求传入变量的地址。s.num是int型成员,需要&s.num取地址;s.name是字符数组名,本身代表数组首地址,不需要再&。因此正确的格式是&s.num和s.name。 7. 以下程序段的输出结果是:struct { int x; int y; } a = {3, 5}, b; b = a; b.x = 10; printf("%d,%d", a.x, b.x);( ) A. 10,10 B. 3,3 C. 3,10 D. 10,3 【答案】C 【解析】b=a将a的每个成员复制给b(值复制),之后b和a是独立的内存空间。b.x=10修改的是b的成员,不影响a。因此a.x=3,b.x=10,输出3,10。这体现了结构体整体赋值是值复制。 二、程序运行结果题 8. 以下程序的运行结果是【··】。 #include <stdio.h> struct Rect { int width; int height; }; main() { struct Rect r = {5, 8}; int area = r.width * r.height; int peri = 2 * (r.width + r.height); printf("area=%d,peri=%d", area, peri); } 【答案】area=40,peri=26 【解析】程序定义结构体Rect表示矩形,r.width=5,r.height=8。通过.运算符访问成员计算面积area=5*8=40,周长peri=2*(5+8)=26。按格式输出area=40,peri=26。 三、程序填空题 9. 以下程序的功能是:输入一个学生的学号和两门课成绩,计算并输出总分。请填空。 #include <stdio.h> struct Student { int num; float score1, score2; }; main() { struct Student stu; float total; printf("请输入学号和两门课成绩:"); scanf("%d%f%f", &stu.num, &stu.score1, 【1】); total = stu.score1 + stu.score2; printf("学号:%d,总分:%.1f ", stu.num, total); } 【答案】【1】&stu.score2 【解析】scanf输入float型成员score2,需要使用&取地址运算符。由于stu是结构体变量而非指针,访问成员用.运算符,取成员地址用&stu.score2。 四、阅读程序改错题 10. 阅读以下程序,该程序的功能是输入一个学生的学号和三门课成绩,计算并输出平均分。程序中有1处错误,请指出错误所在行号并修改正确,不许增删行,在原行上修改。 L1 #include <stdio.h> L2 struct Student L3 { L4 int num; L5 float s1, s2, s3; L6 }; L7 main() L8 { L9 struct Student stu; L10 float avg; L11 printf("请输入学号和三门课成绩:"); L12 scanf("%d%f%f%f", &stu.num, stu.s1, stu.s2, stu.s3); L13 avg = (stu.s1 + stu.s2 + stu.s3) / 3; L14 printf("学号:%d,平均分:%.1f ", stu.num, avg); L15 } 【答案】【1】L12: scanf("%d%f%f%f", &stu.num, stu.s1, stu.s2, stu.s3); → 应改为 scanf("%d%f%f%f", &stu.num, &stu.s1, &stu.s2, &stu.s3);(stu.s1等float型成员必须加&取地址) 【解析】scanf函数要求传入变量的地址。stu.num是int型成员,&stu.num取地址正确;但stu.s1、stu.s2、stu.s3是float型成员,需要通过&取地址才能正确接收输入数据。不加&会导致scanf将成员的值当作地址使用,产生运行时错误。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $ 【编写说明】依托三阶支架资源编写方案,《一课一练》明确基础层具象化支架定位,作为课堂同步配套资源,其内容与课堂教学深度绑定,并且精准匹配中职学生知识基础与学习特质,遵循“由浅入深、循序渐进”的认知规律,聚焦基础性与实效性核心,通过拆解知识点、简化认知难度,切实降低学习门槛,为后续知识巩固与能力提升筑牢根基,是优质课后作业首选。 本卷是《编程语言基础——C语言》(第5版)《一课一练》第25练,内容是7.3 结构体变量的引用。 《编程语言基础——C语言》(第5版)一课一练 第25练 7.3 结构体变量的引用 一、单选题 1. 在C语言中,引用结构体变量成员的运算符是( ) A. .(点运算符) B. ->(箭头运算符) C. &(取地址运算符) D. *(间接访问运算符) 2. 已定义 struct Point { int x; int y; }; 则以下正确的初始化语句是( ) A. struct Point p; p = (10, 20); B. struct Point p = {10, 20}; C. struct Point p = [10, 20]; D. struct Point p = (10, 20); 3. 以下程序段的输出结果是:struct Test { int a; char c; } t; t.a = 65; t.c = t.a; printf("%c", t.c);( ) A. 65 B. a C. A D. 编译错误 4. 已定义 struct Student { int num; float score; } s1 = {1, 90}, s2; 执行 s2 = s1; 后,下列说法正确的是( ) A. 编译错误,结构体变量不能整体赋值 B. s2中的num被赋值为1,score保持原值 C. s1和s2共享同一段内存 D. s2各成员的值与s1完全相同 5. 定义了结构体 struct Date { int y, m, d; }; struct Person { char name[10]; struct Date birth; }; 则以下正确的初始化是( ) A. struct Person p = {"Zhang", {2000, 6, 15}}; B. struct Person p = {"Zhang", 2000, 6, 15}; C. struct Person p = {Zhang, {2000, 6, 15}}; D. struct Person p = {"Zhang", (2000, 6, 15)}; 6. 已定义 struct Student { int num; char name[20]; } s; 要从键盘输入学号和姓名,正确的scanf语句是( ) A. scanf("%d%s", s.num, s.name); B. scanf("%d%s", &s.num, s.name); C. scanf("%d%s", &s.num, &s.name); D. scanf("%d%s", s.num, &s.name); 7. 以下程序段的输出结果是:struct { int x; int y; } a = {3, 5}, b; b = a; b.x = 10; printf("%d,%d", a.x, b.x);( ) A. 10,10 B. 3,3 C. 3,10 D. 10,3 二、程序运行结果题 8. 以下程序的运行结果是【··】。 #include <stdio.h> struct Rect { int width; int height; }; main() { struct Rect r = {5, 8}; int area = r.width * r.height; int peri = 2 * (r.width + r.height); printf("area=%d,peri=%d", area, peri); } 三、程序填空题 9. 以下程序的功能是:输入一个学生的学号和两门课成绩,计算并输出总分。请填空。 #include <stdio.h> struct Student { int num; float score1, score2; }; main() { struct Student stu; float total; printf("请输入学号和两门课成绩:"); scanf("%d%f%f", &stu.num, &stu.score1, 【1】); total = stu.score1 + stu.score2; printf("学号:%d,总分:%.1f ", stu.num, total); } 四、阅读程序改错题 10. 阅读以下程序,该程序的功能是输入一个学生的学号和三门课成绩,计算并输出平均分。程序中有1处错误,请指出错误所在行号并修改正确,不许增删行,在原行上修改。 L1 #include <stdio.h> L2 struct Student L3 { L4 int num; L5 float s1, s2, s3; L6 }; L7 main() L8 { L9 struct Student stu; L10 float avg; L11 printf("请输入学号和三门课成绩:"); L12 scanf("%d%f%f%f", &stu.num, stu.s1, stu.s2, stu.s3); L13 avg = (stu.s1 + stu.s2 + stu.s3) / 3; L14 printf("学号:%d,平均分:%.1f ", stu.num, avg); L15 } 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $

资源预览图

第25练 7.3 结构体变量的引用 《编程语言基础——C语言》 (第5版) 一课一练 (湖南)
1
第25练 7.3 结构体变量的引用 《编程语言基础——C语言》 (第5版) 一课一练 (湖南)
2
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。