内容正文:
编写说明:考虑到中职学生普遍基础知识相对薄弱的情况,我们依据支架式教学理念,精心编制了《编程语言基础-C语言》(高教版第5版)一课一练。专辑里的每一份练习,都与课堂所授知识点紧密相关,题目围绕课堂所学知识点呈现。目的在于激发学生的学习兴趣,培养他们的学习自觉性,帮助学生扎实掌握课程的基本概念与基本方法,为他们后续的进一步提升奠定坚实基础。
本卷是《编程语言基础-C语言》(高教版第5版)一课一练的第7章的第39练,内容涵盖第7章 结构体和共用体的7.2定义结构体变量的方法。
《编程语言基础-C语言》(高教版第5版)第39练
第7章 结构体和共用体
7.2 定义结构体变量的方法(解析版)
一、单项选择题(本题共5小题)
1、关于先定义结构体类型,后定义结构体变量的说法,正确的是( )
A. 定义结构体类型时,关键字struct可以省略
B. 定义结构体类型时,花括号后的分号可以省略
C. 定义结构体变量时,关键字struct不能省略
D. 定义结构体类型后,可以像使用int一样直接使用结构体名定义变量,无需加struct
答案:C
解析:在C语言中,定义结构体变量时,关键字struct不能省略,必须使用struct 结构体名 变量名;的形式。选项A错误,struct是结构体类型定义必不可少的关键字;选项B错误,结构体定义末尾的分号不能省略,因为整个结构体定义是一条完整的语句;选项D错误,与int等基本数据类型不同,定义结构体变量时必须加上struct关键字。
2、以下选项能在定义结构体类型的同时定义结构体变量的是( )
A. struct student { int num; char name[20]; } stu1, stu2;
B. struct student { int num; char name[20]; }; struct student stu1, stu2;
C. struct { int num; char name[20]; } stu1, stu2;
D. typedef struct { int num; char name[20]; } student; student stu1, stu2;
答案:A
解析:在定义结构体类型时,可以将变量名列表直接写在花括号后的分号之前,实现类型定义与变量定义同时进行。选项A符合这一语法格式;选项B是先定义类型、后定义变量,属于另一种方式;选项C是直接定义变量(无名结构体);选项D使用了typedef为结构体类型定义别名,再用别名定义变量,也不同于“类型和变量同时定义”的原始含义。
3、关于直接定义结构体变量的说法,正确的是( )
A. 无名结构体定义后,可以在程序的其他位置再次定义该类型的其他变量
B. 无名结构体类型不能重复使用,只适用于该类型只出现一次的情况
C. 无名结构体定义时,结构体名可以省略,但关键字struct也可以省略
D. 无名结构体的成员不能在定义时初始化
答案:B
解析:无名结构体只能在定义时直接创建变量,之后无法再定义相同类型的其他变量,因此只适合该结构体类型只使用一次的情况。选项A错误;选项C错误,struct关键字不能省略;选项D错误,无名结构体变量也可以在定义时初始化。
4、下列关于typedef在结构体中使用的说法,正确的是( )
A. typedef用于为结构体变量起一个新的名字
B. 使用typedef后,定义结构体变量时可以省略struct关键字
C. typedef只能用于基本数据类型,不能用于结构体类型
D. typedef struct student { ... } stu; 其中student是变量名,stu是类型别名
答案:B
解析:typedef用于为已有的数据类型定义一个新的别名。在结构体中使用typedef后,就可以直接用别名来定义变量,无需再写struct关键字,从而简化代码。选项A错误,typedef是为类型起别名,不是为变量起别名;选项C错误,typedef可用于结构体、共用体等自定义类型;选项D错误,student是结构体标签,stu是定义的别名。
5、若有如下定义,下列选项中正确的是( )
struct date {
int year;
int month;
int day;
};
A. date d1; —— 可以正确定义结构体变量
B. struct date d1; —— 可以正确定义结构体变量
C. struct date { int y; } d1; —— 不可以,因为date已经定义过了
D. struct date d1 = {2025}; —— 错误,不能只给一个成员赋值
答案:B
解析:选项B使用struct date d1;语法正确,定义了struct date类型的变量d1。选项A错误,在C语言中定义结构体变量时struct关键字不能省略;选项C中虽然结构体名重复,但重新定义一个新的结构体类型是允许的;选项D中结构体变量初始化时,花括号中初值个数可以少于成员个数,未指定的成员自动初始化为0(或'\0'),所以{2025}是允许的。
二、判断题(本题共5小题)
1、在C语言中,定义结构体类型时,花括号后面的分号是可以省略的。( )
答案:×
解析:结构体定义末尾的分号不能省略。结构体定义本身是一条完整的语句,语句结束必须加分号。
2、使用typedef为结构体类型定义别名后,定义该类型的变量时可以省略struct关键字。( )
答案:√
解析:typedef为结构体类型创建了一个新的类型名,之后就可以直接使用这个别名来定义变量,无需再写struct关键字。
3、直接定义结构体变量的方式,适合于需要在程序多个地方重复使用该结构体类型的场景。( )
答案:×
解析:直接定义变量省略了结构体类型名,这种结构体类型无法在别处再次定义变量,只适用于该结构体类型只出现一次的场景。
4、先定义结构体类型,后定义结构体变量时,定义结构体变量的语句必须写在结构体类型定义的后面。( )
答案:√
解析:C编译器要求先定义类型,后使用该类型定义变量。结构体变量定义必须出现在结构体类型定义之后,或者至少在使用该类型之前已经完成了类型定义。否则编译器无法识别该类型。
5、以下程序段中,变量stu1和stu2的类型相同。( )
struct student {
int num;
char name[20];
} stu1;
struct student stu2;
答案:√
解析:两种定义方式得到的变量stu1和stu2都是struct student类型,内存结构和成员完全相同。stu1是在定义类型的同时定义的变量,stu2是后续单独定义的变量,两者类型一致,可以互相赋值。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$
编写说明:考虑到中职学生普遍基础知识相对薄弱的情况,我们依据支架式教学理念,精心编制了《编程语言基础-C语言》(高教版第5版)一课一练。专辑里的每一份练习,都与课堂所授知识点紧密相关,题目围绕课堂所学知识点呈现。目的在于激发学生的学习兴趣,培养他们的学习自觉性,帮助学生扎实掌握课程的基本概念与基本方法,为他们后续的进一步提升奠定坚实基础。
本卷是《编程语言基础-C语言》(高教版第5版)一课一练的第7章的第39练,内容涵盖第7章 结构体和共用体的7.2定义结构体变量的方法。
《编程语言基础-C语言》(高教版第5版)第39练
第7章 结构体和共用体
7.2 定义结构体变量的方法(原卷版)
一、单项选择题(本题共5小题)
1、关于先定义结构体类型,后定义结构体变量的说法,正确的是( )
A. 定义结构体类型时,关键字struct可以省略
B. 定义结构体类型时,花括号后的分号可以省略
C. 定义结构体变量时,关键字struct不能省略
D. 定义结构体类型后,可以像使用int一样直接使用结构体名定义变量,无需加struct
2、以下选项能在定义结构体类型的同时定义结构体变量的是( )
A. struct student { int num; char name[20]; } stu1, stu2;
B. struct student { int num; char name[20]; }; struct student stu1, stu2;
C. struct { int num; char name[20]; } stu1, stu2;
D. typedef struct { int num; char name[20]; } student; student stu1, stu2;
3、关于直接定义结构体变量的说法,正确的是( )
A. 无名结构体定义后,可以在程序的其他位置再次定义该类型的其他变量
B. 无名结构体类型不能重复使用,只适用于该类型只出现一次的情况
C. 无名结构体定义时,结构体名可以省略,但关键字struct也可以省略
D. 无名结构体的成员不能在定义时初始化
4、下列关于typedef在结构体中使用的说法,正确的是( )
A. typedef用于为结构体变量起一个新的名字
B. 使用typedef后,定义结构体变量时可以省略struct关键字
C. typedef只能用于基本数据类型,不能用于结构体类型
D. typedef struct student { ... } stu; 其中student是变量名,stu是类型别名
5、若有如下定义,下列选项中正确的是( )
struct date {
int year;
int month;
int day;
};
A. date d1; —— 可以正确定义结构体变量
B. struct date d1; —— 可以正确定义结构体变量
C. struct date { int y; } d1; —— 不可以,因为date已经定义过了
D. struct date d1 = {2025}; —— 错误,不能只给一个成员赋值
二、判断题(本题共5小题)
1、在C语言中,定义结构体类型时,花括号后面的分号是可以省略的。( )
2、使用typedef为结构体类型定义别名后,定义该类型的变量时可以省略struct关键字。( )
3、直接定义结构体变量的方式,适合于需要在程序多个地方重复使用该结构体类型的场景。( )
4、先定义结构体类型,后定义结构体变量时,定义结构体变量的语句必须写在结构体类型定义的后面。( )
5、以下程序段中,变量stu1和stu2的类型相同。( )
struct student {
int num;
char name[20];
} stu1;
struct student stu2;
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$