第7章 第40练 结构体变量的引用《编程语言基础-C语言》(高教版第5版)一课一练
|
2份
|
5页
|
39人阅读
|
0人下载
内容正文:
编写说明:考虑到中职学生普遍基础知识相对薄弱的情况,我们依据支架式教学理念,精心编制了《编程语言基础-C语言》(高教版第5版)一课一练。专辑里的每一份练习,都与课堂所授知识点紧密相关,题目围绕课堂所学知识点呈现。目的在于激发学生的学习兴趣,培养他们的学习自觉性,帮助学生扎实掌握课程的基本概念与基本方法,为他们后续的进一步提升奠定坚实基础。
本卷是《编程语言基础-C语言》(高教版第5版)一课一练的第7章的第40练,内容涵盖第7章 结构体和共用体的7.3 结构体变量的引用。
《编程语言基础-C语言》(高教版第5版)第40练
第7章 结构体和共用体
7.3 结构体变量的引用(解析版)
一、单项选择题(本题共5小题)
1、已知结构体定义如下,能正确引用结构体变量 stu 中 name 成员的选项是( )
struct student {
int num;
char name[20];
} stu;
A. stu->name
B. stu.name
C. &stu.name
D. stu[name]
【答案】B
【解析】访问结构体变量的成员使用成员运算符.,格式为结构体变量名.成员名,因此stu.name正确。选项A的->用于指向结构体的指针;选项C取地址操作多余,不是引用成员值;选项D语法错误。
2、若有以下定义,则变量 stu 中 score 的值是( )
struct student {
int num;
int score;
} stu = {1001};
A. 1001
B. 0
C. 随机值
D. 编译错误
【答案】B
【解析】结构体变量在初始化时,如果花括号中提供的初值个数少于成员个数,则未明确赋值的成员自动初始化为0或空字符。因此num被赋值为1001,score自动初始化为0。
3、关于同类型结构体变量间的赋值,下列说法正确的是( )
A. 结构体变量之间不能直接赋值,必须逐个成员赋值
B. 只有使用typedef定义的结构体类型才能直接赋值
C. 同类型结构体变量之间可以直接赋值,编译器会自动复制所有成员的值
D. 结构体变量赋值时,若包含数组成员,不能直接赋值
【答案】C
【解析】C语言允许同类型结构体变量之间直接赋值,例如stu2 = stu1;,编译器会自动将stu1的所有成员值复制到stu2中,包括数组成员。因此C正确,A和D错误;B错误,是否使用typedef不影响赋值合法性。
4、下列结构体变量的初始化方式中,正确的是( )
A. struct student stu = {1002, "张三"};
B. struct student stu = {.name = "李四", .num = 1003};
C. struct student stu = {1004};
D. 以上全部正确
【答案】D
【解析】选项A是按成员顺序初始化,正确;选项B使用指定成员初始化,正确;选项C是部分初始化,未指定成员自动补0,正确。因此D正确。
5、有以下程序段,输出结果是( )
#include <stdio.h>
struct point {
int x;
int y;
};
main() {
struct point p1 = {3, 5};
struct point p2;
p2 = p1;
p2.x = 8;
printf("%d,%d", p1.x, p2.x);
}
A. 3,8
B. 8,8
C. 3,5
D. 8,3
【答案】A
【解析】p2 = p1将p1的所有成员值复制给p2,此后p2是p1的副本,两者各自占用独立的内存空间。修改p2.x不会影响p1.x,因此p1.x仍为3,p2.x被改为8,输出结果为3,8。
二、判断题(本题共5小题)
1、引用结构体变量的成员时,可以使用结构体变量名.成员名的形式,其中.称为成员运算符,优先级最高。( )
【答案】√
【解析】成员运算符的优先级非常高,仅次于圆括号和下标运算符,比取地址符等都要高。
2、结构体变量初始化时,必须对所有成员按顺序依次赋值,不能跳过某个成员。( )
【答案】×
【解析】结构体变量初始化时,可以只对前几个成员赋值,未赋值的成员自动初始化为0(或空字符)。也可以使用指定成员初始化跳过部分成员。因此说法错误。
3、同类型结构体变量之间可以直接赋值,但前提是结构体中不能包含数组类型的成员。( )
【答案】×
【解析】同类型结构体变量之间可以直接赋值,即使结构体中包含数组成员,编译器也会自动进行整体复制。因此前提条件不成立,说法错误。
4、若已定义struct student stu1, stu2;,则语句stu2 = stu1;表示将stu1的所有成员的值复制给stu2。( )
【答案】√
【解析】结构体变量整体赋值时,系统将源结构体变量的每个成员的值依次赋给目标结构体变量的对应成员。
5、以下代码片段中,stu的成员num和name均被正确初始化。( )
struct student {
int num;
char name[10];
} stu = {"Tom", 101};
【答案】×
【解析】num和name都无法初始化。“Tom”赋值给整型变量num,101赋值给字符数组name,类型不匹配。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$
编写说明:考虑到中职学生普遍基础知识相对薄弱的情况,我们依据支架式教学理念,精心编制了《编程语言基础-C语言》(高教版第5版)一课一练。专辑里的每一份练习,都与课堂所授知识点紧密相关,题目围绕课堂所学知识点呈现。目的在于激发学生的学习兴趣,培养他们的学习自觉性,帮助学生扎实掌握课程的基本概念与基本方法,为他们后续的进一步提升奠定坚实基础。
本卷是《编程语言基础-C语言》(高教版第5版)一课一练的第7章的第40练,内容涵盖第7章 结构体和共用体的7.3 结构体变量的引用。
《编程语言基础-C语言》(高教版第5版)第40练
第7章 结构体和共用体
7.3 结构体变量的引用(原卷版)
一、单项选择题(本题共5小题)
1、已知结构体定义如下,能正确引用结构体变量 stu 中 name 成员的选项是( )
struct student {
int num;
char name[20];
} stu;
A. stu->name
B. stu.name
C. &stu.name
D. stu[name]
2、若有以下定义,则变量 stu 中 score 的值是( )
struct student {
int num;
int score;
} stu = {1001};
A. 1001
B. 0
C. 随机值
D. 编译错误
3、关于同类型结构体变量间的赋值,下列说法正确的是( )
A. 结构体变量之间不能直接赋值,必须逐个成员赋值
B. 只有使用typedef定义的结构体类型才能直接赋值
C. 同类型结构体变量之间可以直接赋值,编译器会自动复制所有成员的值
D. 结构体变量赋值时,若包含数组成员,不能直接赋值
4、下列结构体变量的初始化方式中,正确的是( )
A. struct student stu = {1002, "张三"};
B. struct student stu = {.name = "李四", .num = 1003};
C. struct student stu = {1004};
D. 以上全部正确
5、有以下程序段,输出结果是( )
#include <stdio.h>
struct point {
int x;
int y;
};
main() {
struct point p1 = {3, 5};
struct point p2;
p2 = p1;
p2.x = 8;
printf("%d,%d", p1.x, p2.x);
}
A. 3,8
B. 8,8
C. 3,5
D. 8,3
二、判断题(本题共5小题)
1、引用结构体变量的成员时,可以使用结构体变量名.成员名的形式,其中.称为成员运算符,优先级最高。( )
2、结构体变量初始化时,必须对所有成员按顺序依次赋值,不能跳过某个成员。( )
3、同类型结构体变量之间可以直接赋值,但前提是结构体中不能包含数组类型的成员。( )
4、若已定义struct student stu1, stu2;,则语句stu2 = stu1;表示将stu1的所有成员的值复制给stu2。( )
5、以下代码片段中,stu的成员num和name均被正确初始化。( )
struct student {
int num;
char name[10];
} stu = {"Tom", 101};
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$