内容正文:
编写说明:2026版《软件与应用技术考纲百套卷》依据2026版山东省《软件与应用技术类专业知识考试标准》编写,本套试卷共100份,分为三个部分,第一部分是知识点训练卷,每个知识点2份试卷共76份,第二部分是常考题训练卷,每个知识模块2份训练卷共12份,第三个部分是专业综合训练卷,参考历年软件与应用技术类专业真题试卷,编写了12份。
本试卷是2026版《软件与应用技术考纲百套卷》的第13卷,按知识模块1 C语言程序设计知识7.结构体的两点范围要求编写。其两点要求是:
(1)了解结构体变量的定义及初始化。
(2)理解结构体变量的引用。
2026版山东省《软件与应用技术考纲百套卷》 第13卷
知识模块1 C语言程序设计知识
7.结构体 知识点训练卷
一、单项选择题(本大题共20小题,每题3分,共60分)
1. 下面结构体的定义语句中,错误的是( )
A. struct m{int i; int j; int k; }; struct 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;
2. 若有以下语句,以下叙述中正确的是
typedef struct s {int m;} T;
A. 可用S定义结构体变量
B. 可用T定义结构体变量
C. S是struct类型的变量
D. T是struct S类型的变量
3. 以下叙述中错误的是( )
A. 可用typedef声明的新类型名来定义变量
B. typedef声明的新类型名必须使用大写字母,否则会出现编译错误
C. 用typedef可以为基本数据类型说明一个新名称
D. 用typedef说明新类型的作用是用一个新的标识符来代表已存在的类型名称
4. 设有以下说明语句:
struct ex{
int x;
float y;
char z;S
}example;
则下面的叙述中不正确的是( )
A.struct式结构体类型的关键字
B.example是结构体类型名
C.x,y,z都是结构体成员名
D.struct ex是结构体类型名
5. 以下程序的输出结果是( )
main( )
{struct s
{int x;
float f;
}a[3];
printf("%d", sizeof(a));
}
A. 8
B. 12
C. 24
D. 6
6. 下列哪个操作符用于对结构体变量进行取地址操作?( )
A. &
B. *
C. ->
D. .
7. 设有以下说明语句:
typedef struct data{
int n;
char ch[8];
}PER;
则下面的叙述中正确的是( )
A.struct data是结构体变量名
B.PER是结构体类型名
C.typedef struct是结构体类型
D.struct是结构体类型名
8. C语言结构体变量在程序运行期间( )
A. 所有成员一直驻留内存
B. 只有一个成员一直驻留内存
C. 没有成员驻留内存
D. 部分成员驻留内存
9. 以下对结构体类型变量的定义中,不正确的是( )
A.typedef struct aa
{int n;float m;}AA;
B.#define AA struct aa
AA{
int n;float m;}stu1;
C.struct
{int n;float m;}aa;
struct aa stu1;
D.struct
{int n;float m;
}stu1;
10. 下列哪个关键字用于定义类类型?( )
A. struct
B. union
C. enum
D. class
11. 已知学生记录描述为:
struct student
{
char no[8],name[10],sex[3];
struct
{int day,month,year;}birth;
};
struct student s;
设变量s中的“生日”应是2005年8月18日,下列对“生日”的赋值方式中正确的是( )
A.day=18;
month=8;
B.s.day=18;
s.month=2005;
C.s.birth.day=18;
s.birth.month=8;
s.birth.year=2005;
D.birth.day=18;
birth.month=8;
birth.year=2005;
12. 给定以下结构体数组和初始化:
struct {
int num;
char name[10];
} x[3] = {1, "china", 2, "USA", 3, "England"};
语句 `printf("n%d,%s", x[1].num, x[2].name)` 的输出结果为( )
A. 2,USA
B. 3,England
C. 1,china
D. 2,England
13. 给定以下结构体类型和变量定义:
struct xyz {
int a;
char c;
} d1 = {1, 'a'};
若定义 `d2` 并赋值 `{6, 'k'}`,以下语句正确的是( )
A. `struct xyz d2 = {6, 'k'};`
B. `xyz d2 = {6, 'k'};`
C. `struct d2 = {6, 'k'};`
D. `d2 = {6, 'k}';`
14. 以下程序的输出结果为( )
#include <stdio.h>
#include <conio.h>
main()
{
struct person {
char name[20];
int age;
};
struct person pers[10] = {"xiaoming", 17, "wanghua", 19, "zhang", 18};
printf("%c", pers[1].name[0]);
}
A. w
B. x
C. z
D. a
15. 以下程序的输出结果为( )
#include <stdio.h>
struct abc { int a, b, c; };
main()
{
struct abc s[2] = {{1, 2, 3}, {4, 5, 6}};
int d;
d = s[0].a + s[1].b;
printf("%d", d);
}
A. 5
B. 6
C. 7
D. 8
16. 当定义一个结构体变量时系统分配给他的内存是( )
A. 各成员所需内存量的总和
B. 成员中占内存量最大者所需的容量
C. 结构中第一个成员所需的内存量
D. 结构中最后一个成员所需的内存量
17.以下定义结构体类型变量ss的语句中,不正确的是( )
A.typedef struct
student
{char num[8];
int age;}STU;
STU ss;
B.struct student
{dloat num,
age;}ss;
C,struct
{char num[8];
int gae;
}ss;
D.struct student
{char num[8];
int age;
}struct student ss;
18. 若有以下语句,以下叙述中正确的是( )
typedef struct M{int g;char h;}N;
A.可用M定义结构体变量
B.可用N定义结构体变量
C.M是struct类型的变量
D.N是struct类型的变量
19. 在C语言中,用于访问结构体成员的操作符是( )
A. .
B. ->
C. *
D. &
20. 在C语言中,用于定义结构体类型的关键字是( )
A. struct
B. union
C. enum
D. class
二、简答题(本大题共5小题,每题6分,共30分)
1. 什么是C语言中的结构体?
2. 如何定义一个结构体?
3. 如何创建结构体变量?
4. 如何访问结构体成员?
5. 结构体变量的定义方法有哪些?
三、编程题(本大题共1小题,共10分)
1.定义结构体变量,用来记录年月日,输入年月日,输出日期是本年的第几天。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$$
编写说明:2026版《软件与应用技术考纲百套卷》依据2026版山东省《软件与应用技术类专业知识考试标准》编写,本套试卷共100份,分为三个部分,第一部分是知识点训练卷,每个知识点2份试卷共76份,第二部分是常考题训练卷,每个知识模块2份训练卷共12份,第三个部分是专业综合训练卷,参考历年软件与应用技术类专业真题试卷,编写了12份。
本试卷是2026版《软件与应用技术考纲百套卷》的第13卷,按知识模块1 C语言程序设计知识7.结构体的两点范围要求编写。其两点要求是:
(1)了解结构体变量的定义及初始化。
(2)理解结构体变量的引用。
2026版山东省《软件与应用技术考纲百套卷》 第13卷
知识模块1 C语言程序设计知识
7.结构体 知识点训练卷
一、单项选择题(本大题共20小题,每题3分,共60分)
1. 下面结构体的定义语句中,错误的是( )
A. struct m{int i; int j; int k; }; struct 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
2. 若有以下语句,以下叙述中正确的是
typedef struct s {int m;} T;
A. 可用S定义结构体变量
B. 可用T定义结构体变量
C. S是struct类型的变量
D. T是struct S类型的变量
【答案】B
3. 以下叙述中错误的是( )
A. 可用typedef声明的新类型名来定义变量
B. typedef声明的新类型名必须使用大写字母,否则会出现编译错误
C. 用typedef可以为基本数据类型说明一个新名称
D. 用typedef说明新类型的作用是用一个新的标识符来代表已存在的类型名称
【答案】B
4. 设有以下说明语句:
struct ex{
int x;
float y;
char z;S
}example;
则下面的叙述中不正确的是( )
A.struct式结构体类型的关键字
B.example是结构体类型名
C.x,y,z都是结构体成员名
D.struct ex是结构体类型名
【答案】B
5. 以下程序的输出结果是( )
main( )
{struct s
{int x;
float f;
}a[3];
printf("%d", sizeof(a));
}
A. 8
B. 12
C. 24
D. 6
【答案】C
6. 下列哪个操作符用于对结构体变量进行取地址操作?( )
A. &
B. *
C. ->
D. .
【答案】A
7. 设有以下说明语句:
typedef struct data{
int n;
char ch[8];
}PER;
则下面的叙述中正确的是( )
A.struct data是结构体变量名
B.PER是结构体类型名
C.typedef struct是结构体类型
D.struct是结构体类型名
【答案】B
8. C语言结构体变量在程序运行期间( )
A. 所有成员一直驻留内存
B. 只有一个成员一直驻留内存
C. 没有成员驻留内存
D. 部分成员驻留内存
【答案】A
9. 以下对结构体类型变量的定义中,不正确的是( )
A.typedef struct aa
{int n;float m;}AA;
B.#define AA struct aa
AA{
int n;float m;}stu1;
C.struct
{int n;float m;}aa;
struct aa stu1;
D.struct
{int n;float m;
}stu1;
【答案】C
10. 下列哪个关键字用于定义类类型?( )
A. struct
B. union
C. enum
D. class
【答案】D
11. 已知学生记录描述为:
struct student
{
char no[8],name[10],sex[3];
struct
{int day,month,year;}birth;
};
struct student s;
设变量s中的“生日”应是2005年8月18日,下列对“生日”的赋值方式中正确的是( )
A.day=18;
month=8;
B.s.day=18;
s.month=2005;
C.s.birth.day=18;
s.birth.month=8;
s.birth.year=2005;
D.birth.day=18;
birth.month=8;
birth.year=2005;
【答案】C
12. 给定以下结构体数组和初始化:
struct {
int num;
char name[10];
} x[3] = {1, "china", 2, "USA", 3, "England"};
语句 `printf("n%d,%s", x[1].num, x[2].name)` 的输出结果为( )
A. 2,USA
B. 3,England
C. 1,china
D. 2,England
【答案】D
13. 给定以下结构体类型和变量定义:
struct xyz {
int a;
char c;
} d1 = {1, 'a'};
若定义 `d2` 并赋值 `{6, 'k'}`,以下语句正确的是( )
A. `struct xyz d2 = {6, 'k'};`
B. `xyz d2 = {6, 'k'};`
C. `struct d2 = {6, 'k'};`
D. `d2 = {6, 'k}';`
【答案】A
14. 以下程序的输出结果为( )
#include <stdio.h>
#include <conio.h>
main()
{
struct person {
char name[20];
int age;
};
struct person pers[10] = {"xiaoming", 17, "wanghua", 19, "zhang", 18};
printf("%c", pers[1].name[0]);
}
A. w
B. x
C. z
D. a
【答案】A
15. 以下程序的输出结果为( )
#include <stdio.h>
struct abc { int a, b, c; };
main()
{
struct abc s[2] = {{1, 2, 3}, {4, 5, 6}};
int d;
d = s[0].a + s[1].b;
printf("%d", d);
}
A. 5
B. 6
C. 7
D. 8
【答案】B
16. 当定义一个结构体变量时系统分配给他的内存是( )
A. 各成员所需内存量的总和
B. 成员中占内存量最大者所需的容量
C. 结构中第一个成员所需的内存量
D. 结构中最后一个成员所需的内存量
【答案】A
17.以下定义结构体类型变量ss的语句中,不正确的是( )
A.typedef struct
student
{char num[8];
int age;}STU;
STU ss;
B.struct student
{dloat num,
age;}ss;
C,struct
{char num[8];
int gae;
}ss;
D.struct student
{char num[8];
int age;
}struct student ss;
【答案】D
18. 若有以下语句,以下叙述中正确的是( )
typedef struct M{int g;char h;}N;
A.可用M定义结构体变量
B.可用N定义结构体变量
C.M是struct类型的变量
D.N是struct类型的变量
【答案】B
19. 在C语言中,用于访问结构体成员的操作符是( )
A. .
B. ->
C. *
D. &
【答案】A
20. 在C语言中,用于定义结构体类型的关键字是( )
A. struct
B. union
C. enum
D. class
【答案】A
二、简答题(本大题共5小题,每题6分,共30分)
1. 什么是C语言中的结构体?
【答案】结构体是C语言中一种用户自定义的数据类型,允许将不同类型的数据组合在一起。它由一系列称为成员(或字段)的数据项组成,每个成员可以是不同的数据类型。
2. 如何定义一个结构体?
【答案】使用`struct`关键字来定义结构体。例如:
struct Person {
char name[50];
int age;
float height;
};
3. 如何创建结构体变量?
【答案】一旦定义了结构体,就可以像声明其他类型的变量一样声明结构体变量。例如:
struct Person person1;
4. 如何访问结构体成员?
【答案】使用点操作符`.`来访问结构体的成员。例如,给定一个`Person`类型的变量`person1`,可以这样访问其成员:
strcpy(person1.name, "Alice");
person1.age = 30;
person1.height = 165.5;
5. 结构体变量的定义方法有哪些?
【答案】(1)先定义类型,后定义变量
(2)结构体类型和变量同时定义
(3)直接定义变量
(4)使用用户自定义类型定义结构变量
三、编程题(本大题共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);
}
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$$