内容正文:
编写说明:2026版《软件与应用技术考纲百套卷》依据2026版山东省《软件与应用技术类专业知识考试标准》编写,本套试卷共100份,分为三个部分,第一部分是知识点训练卷,每个知识点2份试卷共76份,第二部分是常考题训练卷,每个知识模块2份训练卷共12份,第三个部分是专业综合训练卷,参考历年软件与应用技术类专业真题试卷,编写了12份。
本试卷是2026版《软件与应用技术考纲百套卷》的第14卷,按知识模块1 C语言程序设计知识7.结构体的两点范围要求编写。其两点要求是:
(1)了解结构体变量的定义及初始化。
(2)理解结构体变量的引用。
2026版山东省《软件与应用技术考纲百套卷》 第14卷
知识模块1 C语言程序设计知识
7.结构体 知识点训练卷
一、单项选择题(本大题共20小题,每题3分,共60分)
1. C语言中,下列哪个关键字用于定义结构体类型?( )
A. struct
B. union
C. enum
D. class
【答案】A
2. 下列叙述正确的是( )
A. 只有一个成员一直驻留内存
B. 没有成员驻留内存
C. 部分成员驻留内存
D. 所有成员一直驻留内存
【答案】D
3. 下列哪个操作符用于通过指针访问结构体成员?( )
A. ->
B. .
C. ::
D. *
【答案】A
4. 下列哪个关键字用于声明结构体变量?( )
A. struct
B. union
C. enum
D. class
【答案】A
5. 关于结构体数组初始化的说法,下列哪个是错误的?( )
A. 可以在声明时对结构体数组的全部或部分成员进行初始化
B. 初始化时可以省略数组长度,根据初始化列表自动确定
C. 初始化列表中的数据类型必须与结构体成员类型一致
D. 结构体数组初始化时,可以只对部分成员进行初始化,未初始化的成员自动赋值为0
【答案】D
6. 以下结构体类型变量的定义中,不正确的是( )
A.typedef strcut aa
{int n;
float m;
}AA;
AA td1;
B.struct aa
{int n;
float m;
}td1;
C.struct
{int n;
float m;
}aa;
struct aa td1;
D.struct
{int n;
float m;
}aa;
D.1
【答案】C
7. 叙述不正确的是( )
struct m{
int a;
float b;
char c;
}d1;
A.struct是结构体类型的关键字
B.d1是结构体类型名
C.a、b、c都是结构体成员
D.struct m是结构体类型名
【答案】B
8. 以下程序运行结果是( )
#include <stdio.h>
#include <conio.h>
struct st1
{float a; int b[5];}c;
main( )
{printf("%d,%d,%d
", sizeof(c.a), sizeof(c.b), sizeof(c));}
A. 4,20,24
B. 4,20,24
C. 8,20,28
D. 8,10,18
【答案】A
9. 结构体mn共有几个成员( )
struct st
{float a; int b;}c;
struct mn
{struct st stul; int d; char e;}
A. 3
B. 5
C. 4
D. 6
【答案】A
10. 下面的结构体的定义语句中,错误的是( )
A.struct m{int i;int j;int k;};stryct m a;
B.struct m{int i;int j;int k;}struct m a;
C.struct m{int i;int j;int k;}a;
D.struct{int i;int j;int k;}a;
【答案】B
11. 所有自定义类型变量的定义均有三种方法,其中以下哪种不是( )
A. 先定义类型,后定义变量
B. 先定义变量,后定义类型
C. 类型和变量同时定义
D. 直接定义变量
【答案】B
12. 下列哪个操作符用于对结构体指针进行解引用?( )
A. &
B. *
C. ->
D. .
【答案】B
13. 结构体mn共有几个成员( )
struct st
{float a;int b;}c;
struct mn
{stryct st stu1;int d;char e;}
A.3
B.5
C.4
D.6
【答案】A
14. 下列哪个操作符用于对结构体成员进行间接访问?( )
A. &
B. *
C. ->
D. .
【答案】B
15. 若程序中有下面的说明和定义:
struct abc
{int d;
}
struct abc e1;则会发生的情况是( )
A.编译错误
B.能顺利编译、连接
C.能顺利编译、连接,但不能执行
D.用typedef说明新类型的作用是用一个新的标识符来代表已存在的类型名称
【答案】B
16. 以下程序的输出结果为( )
#include <stdio.h>
struct abc { int a, b; } con[2] = {{1, 2}, {3, 4}};
main()
{
printf("%d", con[0].b / con[0].a * con[1].a);
}
A. 5
B. 6
C. 7
D. 8
【答案】B
17. 程序运行结果是( )
#include <stdio.h>
struct ord { int x, y; } dt[2] = {1, 2, 3, 4};
main()
{
int m;
m = dt[0].x * dt[1].x % dt[0].y;
printf("%d", m);
}
A. 1
B. 3
C. 2
D. 4
【答案】A
18. 若有以下语句,以下叙述中正确的是( )
typedef struct s{int m;}T;
A.可用S定义结构体变量
B.可用T定义结构体变量
C.S是struct类型的变量
D.T是struct S类型的变量
【答案】B
19. 以下关于结构体的叙述中,错误的是( )
A. 结构体是一种可由用户构造的数据类型
B. 结构体中的成员可以具有不同的数据类型
C. 结构体中的成员不可以与结构体变量重名
D. 可以在定义结构体变量的同时,对结构体变量进行初始化。
【答案】C
20. 以下对结构体类型变量st的定义中,错误的是( )
A. `struct { char c; int a; } st;`
B. `struct ss { char c; int a; } st;`
C. `typedef struct { char c; int a; } TT; TT st;`
D. `struct { char c; int a; } TT; struct TT st;`
【答案】D
二、简答题(本大题共5小题,每题6分,共30分)
1. 什么是结构体指针?
【答案】结构体指针是一个指向结构体变量的指针,它存储的是结构体变量的地址。通过结构体指针,可以使用`->`操作符来访问结构体的成员。
2. 如何初始化结构体?
【答案】可以在声明结构体变量时使用花括号`{}`对其进行初始化。例如:
struct Person person2 = {"Bob", 25, 180.0};
3. 结构体变量可以赋值吗?
【答案】可以,C语言允许将一个结构体变量的值赋给另一个同类型的结构体变量,这是通过复制结构体中所有成员的值来完成的。
4. 怎么引用结构体变量?
【答案】结构体变量作为一个整体只能做赋值运算。每个结构体变量中的各个元素(域)都可通过句点运算符来访问。其格式是在结构体变量名和域名之间加个“.”符号。
结构体变量.域名
5. 结构体和联合有什么区别?
【答案】结构体的所有成员都有自己的存储空间,而联合的成员共享同一块存储空间。在联合中,任何时候只能存储一个成员的值。
三、编程题(本大题共1小题,共10分)
1.定义结构体变量,用来记录年月日,输入年月日,输出日期是本年的第几天。
【答案】
#include<stdio.h>
main(){
int i;
struct{
int year,month,day;
}s;
scanf("%d%d%d",&s.year,&s.month,&s.day);
for(i=1;i<s.month;i++){
if(i==4||i==6||i==9||i==11)
s.day+=30;
else if(i==2){
if(s.year%4==0&&s.year%100!=0||s.year%400==0)
s.day+=29;
else
s.day+=28;
}else
s.day+=31;
}
printf("本年%d天",s.day);
}
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$$
编写说明:2026版《软件与应用技术考纲百套卷》依据2026版山东省《软件与应用技术类专业知识考试标准》编写,本套试卷共100份,分为三个部分,第一部分是知识点训练卷,每个知识点2份试卷共76份,第二部分是常考题训练卷,每个知识模块2份训练卷共12份,第三个部分是专业综合训练卷,参考历年软件与应用技术类专业真题试卷,编写了12份。
本试卷是2026版《软件与应用技术考纲百套卷》的第14卷,按知识模块1 C语言程序设计知识7.结构体的两点范围要求编写。其两点要求是:
(1)了解结构体变量的定义及初始化。
(2)理解结构体变量的引用。
2026版山东省《软件与应用技术考纲百套卷》 第14卷
知识模块1 C语言程序设计知识
7.结构体 知识点训练卷
一、单项选择题(本大题共20小题,每题3分,共60分)
1. C语言中,下列哪个关键字用于定义结构体类型?( )
A. struct
B. union
C. enum
D. class
2. 下列叙述正确的是( )
A. 只有一个成员一直驻留内存
B. 没有成员驻留内存
C. 部分成员驻留内存
D. 所有成员一直驻留内存
3. 下列哪个操作符用于通过指针访问结构体成员?( )
A. ->
B. .
C. ::
D. *
4. 下列哪个关键字用于声明结构体变量?( )
A. struct
B. union
C. enum
D. class
5. 关于结构体数组初始化的说法,下列哪个是错误的?( )
A. 可以在声明时对结构体数组的全部或部分成员进行初始化
B. 初始化时可以省略数组长度,根据初始化列表自动确定
C. 初始化列表中的数据类型必须与结构体成员类型一致
D. 结构体数组初始化时,可以只对部分成员进行初始化,未初始化的成员自动赋值为0
6. 以下结构体类型变量的定义中,不正确的是( )
A.typedef strcut aa
{int n;
float m;
}AA;
AA td1;
B.struct aa
{int n;
float m;
}td1;
C.struct
{int n;
float m;
}aa;
struct aa td1;
D.struct
{int n;
float m;
}aa;
D.1
7. 叙述不正确的是( )
struct m{
int a;
float b;
char c;
}d1;
A.struct是结构体类型的关键字
B.d1是结构体类型名
C.a、b、c都是结构体成员
D.struct m是结构体类型名
8. 以下程序运行结果是( )
#include <stdio.h>
#include <conio.h>
struct st1
{float a; int b[5];}c;
main( )
{printf("%d,%d,%d
", sizeof(c.a), sizeof(c.b), sizeof(c));}
A. 4,20,24
B. 4,20,24
C. 8,20,28
D. 8,10,18
9. 结构体mn共有几个成员( )
struct st
{float a; int b;}c;
struct mn
{struct st stul; int d; char e;}
A. 3
B. 5
C. 4
D. 6
10. 下面的结构体的定义语句中,错误的是( )
A.struct m{int i;int j;int k;};stryct m a;
B.struct m{int i;int j;int k;}struct m a;
C.struct m{int i;int j;int k;}a;
D.struct{int i;int j;int k;}a;
11. 所有自定义类型变量的定义均有三种方法,其中以下哪种不是( )
A. 先定义类型,后定义变量
B. 先定义变量,后定义类型
C. 类型和变量同时定义
D. 直接定义变量
12. 下列哪个操作符用于对结构体指针进行解引用?( )
A. &
B. *
C. ->
D. .
13. 结构体mn共有几个成员( )
struct st
{float a;int b;}c;
struct mn
{stryct st stu1;int d;char e;}
A.3
B.5
C.4
D.6
14. 下列哪个操作符用于对结构体成员进行间接访问?( )
A. &
B. *
C. ->
D. .
15. 若程序中有下面的说明和定义:
struct abc
{int d;
}
struct abc e1;则会发生的情况是( )
A.编译错误
B.能顺利编译、连接
C.能顺利编译、连接,但不能执行
D.用typedef说明新类型的作用是用一个新的标识符来代表已存在的类型名称
16. 以下程序的输出结果为( )
#include <stdio.h>
struct abc { int a, b; } con[2] = {{1, 2}, {3, 4}};
main()
{
printf("%d", con[0].b / con[0].a * con[1].a);
}
A. 5
B. 6
C. 7
D. 8
17. 程序运行结果是( )
#include <stdio.h>
struct ord { int x, y; } dt[2] = {1, 2, 3, 4};
main()
{
int m;
m = dt[0].x * dt[1].x % dt[0].y;
printf("%d", m);
}
A. 1
B. 3
C. 2
D. 4
18. 若有以下语句,以下叙述中正确的是( )
typedef struct s{int m;}T;
A.可用S定义结构体变量
B.可用T定义结构体变量
C.S是struct类型的变量
D.T是struct S类型的变量
19. 以下关于结构体的叙述中,错误的是( )
A. 结构体是一种可由用户构造的数据类型
B. 结构体中的成员可以具有不同的数据类型
C. 结构体中的成员不可以与结构体变量重名
D. 可以在定义结构体变量的同时,对结构体变量进行初始化。
20. 以下对结构体类型变量st的定义中,错误的是( )
A. `struct { char c; int a; } st;`
B. `struct ss { char c; int a; } st;`
C. `typedef struct { char c; int a; } TT; TT st;`
D. `struct { char c; int a; } TT; struct TT st;`
二、简答题(本大题共5小题,每题6分,共30分)
1. 什么是结构体指针?
2. 如何初始化结构体?
3. 结构体变量可以赋值吗?
4. 怎么引用结构体变量?
5. 结构体和联合有什么区别?
三、编程题(本大题共1小题,共10分)
1.定义结构体变量,用来记录年月日,输入年月日,输出日期是本年的第几天。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$$