第七章 结构体和共用体《编程语言基础-C语言》(高教版第五版)章节过关卷

2025-03-04
| 2份
| 20页
| 175人阅读
| 3人下载

资源信息

学段 中职
学科 职教专业课
课程 C语言程序设计
教材版本 C语言程序设计高教版(第五版)全一册
年级 高一
章节 第7章 结构体和共用体
类型 作业-单元卷
知识点 结构体和共用体
使用场景 同步教学-单元练习
学年 2025-2026
地区(省份) 全国
地区(市) -
地区(区县) -
文件格式 ZIP
文件大小 257 KB
发布时间 2025-03-04
更新时间 2025-03-04
作者 糖醋排骨009
品牌系列 学易金卷·阶段检测模拟卷
审核时间 2025-03-04
下载链接 https://m.zxxk.com/soft/50787453.html
价格 3.00储值(1储值=1元)
来源 学科网

内容正文:

《编程语言基础——C语言》高等教育出版社(第五版) 第七章 结构体和共用体 章节过关卷 考试时间:90分钟 满分:100分 姓名 班级 学号 1、 单项选择题(本题共20小题,每题2分,共40分) 1. 设有以下语句,则下面叙述中正确的是( ) typedef struct REC { char c; int a[4];} REC1; A. 可以用REC定义结构体变量 B. REC1是 struct REC类型的变量 C. REC是struct 类型的变量 D. 可以用REC1定义结构体变量 答案:D 2. 下列关于结构的说法错误的是( ) A. 结构中可设定若干个不同数据类型的成员 B. 结构是由用户自定义的一种数据类型 C. 结构中成员的数据类型可以是另一个已定义的结构 D. 在定义结构时,可以为成员设置默认值 答案:D 3. 以下关于结构体的叙述中,错误的是( ) A. 结构体中的成员可以具有不同的数据类型 B. 构体中的成员不可以与结构体变量同名 C. 结构体是一种可由用户构造的数据类型 D. 结构体中的成员可以是指向自身结构的指针类型 答案:B 4. 以下对结构体类型变量st的定义中,错误的是( ) A. struct { char c;int a;} st; B. struct { char c;int a;} TT; struct TT st; C. typedef struct { char c;int a;} TT; TT st; D. #define TT struct TT{ char c;int a;} st; 答案:B 5. 说明一个结构体变量时,系统分配给它的内存是( ) A. 各成员所需内存量的总和 B. 结构中第一个成员所需内存量 C. 成员中占内存量最大者所需的容量 D. 结构中最后一个成员所需内存量 答案:A 6. C语言结构体类型变量在程序执行期间( ) A. 所有成员一直驻留在内存中 B. 只有一个成员驻留在内存中 C. 部分成员驻留在内存中 D. 没有成员驻留在内存中 答案:A 7. C语言共用体类型变量在程序执行期间( ) A. 所有成员一直驻留在内存中 B. 只有一个成员驻留在内存中 C. 部分成员驻留在内存中 D. 没有成员驻留在内存中 答案:B 8. 以下对共用体类型数据的正确叙述是( ) A.一旦定义了一个共用体变量后,即可引用该变量或该变量中的任意成员 B.一个共用体变量中可以同时存放其所有成员 C.一个共用体变量中不能同时存放其所有成员 D.共用体类型数据可以出现在结构体类型定义中,但结构体类型数据不能出现在共用体类型定义中。 答案:C 9. 设有以下说明语句,则下面的叙述不正确的是( ) struct stu { int a; float b;} stutype; A. struct 是结构体类型的关键字 B. struct stu 是用户定义的结构体类型名 C. stutype 是用户定义的结构体类型名 D. a 和b都是结构体成员名 答案:C 10. 以下程序的运行结果是( ) #include<stdio.h> #include<conio.h> int main( ) { struct date { int year, month, day; }today; printf("%d ",sizeof(struct date));getch();} A.6 B.8 C.10 D.12 答案:D 11. 以下程序的运行结果是( ) #include<stdio.h> #include<conio.h> int main( ) { struct person { char name[9]; int age;}; struct person a[10]={"John",17, "Paul",19,"Mary",18, "adam",16}; printf("%c",a[2]. name[1]); printf("%c ",a[2].name[0]); getch();} A.d B.M C.aM D.PM 答案:C 12. 若有如下定义,则以下对结构体成员的引用中错误的是( ) struct person { int id;char name[10]; } per, *s=&per; A. per. name B. s—>name[O] C. (*per).name[8] D. ( *s).id 答案:C 13. 已知学生记录及变量的定义如下, 以下能给s中的year成员赋值2025的语句是( ) struct student { int no; char name[20]; char sex; struct { int year,month,day;} birth; }; struct student s, * ps; ps=&s; A. s. year=2025; B. ps. year=2025; C. ps—>year=2025; D. s.birth. year=2025; 答案:D 14. 以下程序的运行结果是( ) #include<stdio.h> #include<conio.h> int main( ) { struct cmplx { int x;int y;} cnum[2]={2,7,6,3}; printf("%d ",cnum[0]. y/cnum[0]. x * cnum[1]. x); getch();} A.18 B.0 C.2 D.7 答案:A 15. 以下程序的运行结果是( ) #include<stdio.h> #include<conio.h> int main( ) { struct WTU { char name[12]; char sex; double score[2];}; struct WTU x={"Lin",'f',88.9,74.25} ,y={"Ma",'m',84.1,95.5}; y=x; printf("%s,%c,%2.0f,%2.0f ",y.name,y.sex,y.score[1],y.score[0]); getch();} A. Lin,f,74,89 B.Ma,m,84,95 C.Lin,f,88.9,74.25 D.Ma,m,84.1,95.5 答案:A 16. 若有以下定义和语句, 则以下语句正确的是( ) union data { int i; char c; float f;} a; int n; A. a=5; B. a={2,’a',1.2}; C. printf("%d ",a); D. n=a; 答案:B 17. 设有以下说明,则下面不正确的叙述是( ) union data { int i; char c; float f;} un; A. un 所占的内存长度等于成员f的K度 B. un 的地址和它的各成员地址都是同一地址 C. un 可以作为函数参数 D. 不能对 un赋值,但可以在定义 un时对它初始化 答案:C 18. 定义以下结构体数组,那么语句:printf”%d”,s[0].x*s[1].x)的输出结果为( ) struct c{int x,int y;}s[2]={1,3,2,7}; A.14 B.12 C.2 D.6 答案:C 19. 定义以下结构体类型,那么语句:printf(“%d”,sizeof(a))的输出结果为( ) struct s{int x;float f;}a[3]; A.8 B.12 C.4 D.24 答案:D 20. 对于以下定义,说法不正确的一项是( ) union data {int i;char c;float f;}a,b; A.变量a所占的内存长度等于成员f的长度 B.变量a的地址和它各成员地址都是相同的 C.不能对变量a赋初值 D.可以在定义的时候对a进行初始化 答案:A 二、程序运行结果题(本题共7小题,每题3分,共21分) 21. 以下程序的运行结果是【 】。 #include<stdio.h> #include<conio.h> struct n { int x;char c;}; int main( ) { struct n a={20,'a'}; func(a);printf("%d,%c",a.x,a.c);getch();} int func(struct n b) { b. x=20;b. c='y';} 答案:20,a 22. 以下程序的运行结果是【 】。 #include<stdio.h> #include<conio.h> main() { struct ABCD { struct { int x; int y;}on; int a; int b;}e; e.a=4;e.b=5; e.on. x=e.a * e.b; e.on. y=e.a+e.b; printf("%d,%d",e. on. x,e. on. y);getch();} 答案:20,9 23. 以下程序的运行结果是【 】。 #include<stdio.h> #include<conio.h> struct ppt { float i; char arr[20];}; int main( ) { struct ppt bt; printf("bt size:%d ",sizeof(struct ppt));getch();} 答案:bt size:8 24. 以下程序的运行结果是【 】。 #include<stdio.h> #include<conio.h> #include<string.h> struct std{ int num;char name[10];double m;}; void fun(struct std k) { k.num=101; strcpy(k. name, "LiLin"); k.m=1227.0;} int main( ) {struct std q={ 34, "LiWei",2025.3};fun(q); printf("%d,%s,%6.1f ",q.num,q.name,q.m);getch();} 答案:34,LiWei,2025.3 25. 以下程序的运行结果是【 】。 #include<stdio.h> #include<conio.h> union pw { int i;char ch[2];} a; main( ) { a. ch[0]=34;a. ch[1]=0; printf("%d ",a.i);getch();} 答案:34 26. 以下程序的运行结果是【 】。 #include<stdio.h> #include<conio.h> int main( ) { int j; union { int a;long b;unsigned char c;}m; m.b=0125; printf("%o,",m. a);printf("%x ",m. c);getch();} 答案:125,55 27. 以下程序的运行结果是【 】。 #include<stdio.h> #include<conio.h> int main( ) { union { long a;int b;char c;double f;}m; printf("%d ",sizeof(m));getch();} 答案:8 三、程序填空。按照题目要求,将正确的内容填入相应位置,使得程序完整(每空3分,共24分) 28. 函数 findbook 的功能是:在有 M个元素的结构体数组 s中查找名为nam的书。若找到,函数返回数组下标;否则,函数返回一1。请填空。 #include <string.h〉 #define M 100 struct data { int id; char name[20]; double price;} book[M]; int findbook(struct data s[], char nam[]) { int i; for(i=0;i<M;i++) if(strcmp(【1】)==0) return i; 【2】 ;} 答案: 【1】s[i].name,nam 【2】return -1 29. 以下程序用来按学生姓名查询其排名和平均成绩。查询可连续进行,直到输入0时结束。请填空。 #include <stdio. h〉 #include <string.h> #define NUM 4 struct student { int rank; char * name; float score;}; 【1】 stu[]={ 3, "LiWei", 82.3, 4, "WangYang", 88.2, 1, "LiuXin", 94.1, 2, "FangHui", 93.6, }; int main( ) { char str[10]; int i; do { printf("Enter a name:"); scanf("%s",str); for (i=0;i<NUM;i++) if(【2】) { printf("name :%8s ",stu[i].name); printf("rank:%3s ",stu[i]. rank); printf("average :%5.lf ",stu[i]. score); 【3】; } if(【4】) printf("Not found'n"); } while(strcmp(str,”O")!=0);} 答案: 【1】struct student 【2】strcmp(str,str[i].name)==0 【3】break 【4】i>=NUM 30. 以下程序用来输出结构体变量ex所占存储单元的字节数,请填空。 struct st { char name[20];double score;}; main() {【1】 ex; printf”ex size:%d ”,sizeof(【2】));} 答案: 【1】struct st 【2】struct st或ex 四、阅读程序,修改程序中的错误,不得增行或删行,也不得更改程序结构。请指出错误代码所在的行号,并给出该行修改后的程序代码。(每处3分,共15分) 31. 以下程序用于输入两个学生的姓名和成绩,然后输出这两个学生的平均成绩,程序中存在5处错误,请改正。 L1 #include<stdio.h> L2 #include<conio.h> L3 define N 2 L4 struct Student L5 { char name[4]; L6 float score;}; L7 main() L8 {struct Student stu[N]; L9 int i=0;float rels=0; L10 for(;i<N;i++) L11 { printf("input scores of student%d: ",i+1); L12 printf("name:"); L13 scanf("%s",&stu[i].name); L14 printf("score:"); L15 scanf("%f",stu[i].score); } L16 for(i=0;i<N;i++) L18 rels+=stu[i].name; L19 printf("avg score is:%3.2f",rels); L20 getch();} 答案: 【1】L3 #define N 2 【2】L13 scanf("%s",stu[i].name); 【3】L15 scanf("%f",&stu[i].score); } 【4】L18 rels+=stu[i].score; 【5】L19 printf("avg score is:%3.2f",rels/N); 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $$ 《编程语言基础——C语言》高等教育出版社(第五版) 第七章 结构体和共用体 章节过关卷 考试时间:90分钟 满分:100分 姓名 班级 学号 1、 单项选择题(本题共20小题,每题2分,共40分) 1. 设有以下语句,则下面叙述中正确的是( ) typedef struct REC { char c; int a[4];} REC1; A. 可以用REC定义结构体变量 B. REC1是 struct REC类型的变量 C. REC是struct 类型的变量 D. 可以用REC1定义结构体变量 2. 下列关于结构的说法错误的是( ) A. 结构中可设定若干个不同数据类型的成员 B. 结构是由用户自定义的一种数据类型 C. 结构中成员的数据类型可以是另一个已定义的结构 D. 在定义结构时,可以为成员设置默认值 3. 以下关于结构体的叙述中,错误的是( ) A. 结构体中的成员可以具有不同的数据类型 B. 构体中的成员不可以与结构体变量同名 C. 结构体是一种可由用户构造的数据类型 D. 结构体中的成员可以是指向自身结构的指针类型 4. 以下对结构体类型变量st的定义中,错误的是( ) A. struct { char c;int a;} st; B. struct { char c;int a;} TT; struct TT st; C. typedef struct { char c;int a;} TT; TT st; D. #define TT struct TT{ char c;int a;} st; 5. 说明一个结构体变量时,系统分配给它的内存是( ) A. 各成员所需内存量的总和 B. 结构中第一个成员所需内存量 C. 成员中占内存量最大者所需的容量 D. 结构中最后一个成员所需内存量 6. C语言结构体类型变量在程序执行期间( ) A. 所有成员一直驻留在内存中 B. 只有一个成员驻留在内存中 C. 部分成员驻留在内存中 D. 没有成员驻留在内存中 7. C语言共用体类型变量在程序执行期间( ) A. 所有成员一直驻留在内存中 B. 只有一个成员驻留在内存中 C. 部分成员驻留在内存中 D. 没有成员驻留在内存中 8. 以下对共用体类型数据的正确叙述是( ) A.一旦定义了一个共用体变量后,即可引用该变量或该变量中的任意成员 B.一个共用体变量中可以同时存放其所有成员 C.一个共用体变量中不能同时存放其所有成员 D.共用体类型数据可以出现在结构体类型定义中,但结构体类型数据不能出现在共用体类型定义中。 9. 设有以下说明语句,则下面的叙述不正确的是( ) struct stu { int a; float b;} stutype; A. struct 是结构体类型的关键字 B. struct stu 是用户定义的结构体类型名 C. stutype 是用户定义的结构体类型名 D. a 和b都是结构体成员名 10. 以下程序的运行结果是( ) #include<stdio.h> #include<conio.h> int main( ) { struct date { int year, month, day; }today; printf("%d ",sizeof(struct date));getch();} A.6 B.8 C.10 D.12 11. 以下程序的运行结果是( ) #include<stdio.h> #include<conio.h> int main( ) { struct person { char name[9]; int age;}; struct person a[10]={"John",17, "Paul",19,"Mary",18, "adam",16}; printf("%c",a[2]. name[1]); printf("%c ",a[2].name[0]); getch();} A.d B.M C.aM D.PM 12. 若有如下定义,则以下对结构体成员的引用中错误的是( ) struct person { int id;char name[10]; } per, *s=&per; A. per. name B. s—>name[O] C. (*per).name[8] D. ( *s).id 13. 已知学生记录及变量的定义如下, 以下能给s中的year成员赋值2025的语句是( ) struct student { int no; char name[20]; char sex; struct { int year,month,day;} birth; }; struct student s, * ps; ps=&s; A. s. year=2025; B. ps. year=2025; C. ps—>year=2025; D. s.birth. year=2025; 14. 以下程序的运行结果是( ) #include<stdio.h> #include<conio.h> int main( ) { struct cmplx { int x;int y;} cnum[2]={2,7,6,3}; printf("%d ",cnum[0]. y/cnum[0]. x * cnum[1]. x); getch();} A.18 B.0 C.2 D.7 15. 以下程序的运行结果是( ) #include<stdio.h> #include<conio.h> int main( ) { struct WTU { char name[12]; char sex; double score[2];}; struct WTU x={"Lin",'f',88.9,74.25} ,y={"Ma",'m',84.1,95.5}; y=x; printf("%s,%c,%2.0f,%2.0f ",y.name,y.sex,y.score[1],y.score[0]); getch();} A. Lin,f,74,89 B.Ma,m,84,95 C.Lin,f,88.9,74.25 D.Ma,m,84.1,95.5 16. 若有以下定义和语句, 则以下语句正确的是( ) union data { int i; char c; float f;} a; int n; A. a=5; B. a={2,’a',1.2}; C. printf("%d ",a); D. n=a; 17. 设有以下说明,则下面不正确的叙述是( ) union data { int i; char c; float f;} un; A. un 所占的内存长度等于成员f的K度 B. un 的地址和它的各成员地址都是同一地址 C. un 可以作为函数参数 D. 不能对 un赋值,但可以在定义 un时对它初始化 18. 定义以下结构体数组,那么语句:printf”%d”,s[0].x*s[1].x)的输出结果为( ) struct c{int x,int y;}s[2]={1,3,2,7}; A.14 B.12 C.2 D.6 19. 定义以下结构体类型,那么语句:printf(“%d”,sizeof(a))的输出结果为( ) struct s{int x;float f;}a[3]; A.8 B.12 C.4 D.24 20. 对于以下定义,说法不正确的一项是( ) union data {int i;char c;float f;}a,b; A.变量a所占的内存长度等于成员f的长度 B.变量a的地址和它各成员地址都是相同的 C.不能对变量a赋初值 D.可以在定义的时候对a进行初始化 二、程序运行结果题(本题共7小题,每题3分,共21分) 21. 以下程序的运行结果是【 】。 #include<stdio.h> #include<conio.h> struct n { int x;char c;}; int main( ) { struct n a={20,'a'}; func(a);printf("%d,%c",a.x,a.c);getch();} int func(struct n b) { b. x=20;b. c='y';} 22. 以下程序的运行结果是【 】。 #include<stdio.h> #include<conio.h> main() { struct ABCD { struct { int x; int y;}on; int a; int b;}e; e.a=4;e.b=5; e.on. x=e.a * e.b; e.on. y=e.a+e.b; printf("%d,%d",e. on. x,e. on. y);getch();} 23. 以下程序的运行结果是【 】。 #include<stdio.h> #include<conio.h> struct ppt { float i; char arr[20];}; int main( ) { struct ppt bt; printf("bt size:%d ",sizeof(struct ppt));getch();} 24. 以下程序的运行结果是【 】。 #include<stdio.h> #include<conio.h> #include<string.h> struct std{ int num;char name[10];double m;}; void fun(struct std k) { k.num=101; strcpy(k. name, "LiLin"); k.m=1227.0;} int main( ) {struct std q={ 34, "LiWei",2025.3};fun(q); printf("%d,%s,%6.1f ",q.num,q.name,q.m);getch();} 25. 以下程序的运行结果是【 】。 #include<stdio.h> #include<conio.h> union pw { int i;char ch[2];} a; main( ) { a. ch[0]=34;a. ch[1]=0; printf("%d ",a.i);getch();} 26. 以下程序的运行结果是【 】。 #include<stdio.h> #include<conio.h> int main( ) { int j; union { int a;long b;unsigned char c;}m; m.b=0125; printf("%o,",m. a);printf("%x ",m. c);getch();} 27. 以下程序的运行结果是【 】。 #include<stdio.h> #include<conio.h> int main( ) { union { long a;int b;char c;double f;}m; printf("%d ",sizeof(m));getch();} 三、程序填空。按照题目要求,将正确的内容填入相应位置,使得程序完整(每空3分,共24分) 28. 函数 findbook 的功能是:在有 M个元素的结构体数组 s中查找名为nam的书。若找到,函数返回数组下标;否则,函数返回一1。请填空。 #include <string.h〉 #define M 100 struct data { int id; char name[20]; double price;} book[M]; int findbook(struct data s[], char nam[]) { int i; for(i=0;i<M;i++) if(strcmp(【1】)==0) return i; 【2】 ;} 29. 以下程序用来按学生姓名查询其排名和平均成绩。查询可连续进行,直到输入0时结束。请填空。 #include <stdio. h〉 #include <string.h> #define NUM 4 struct student { int rank; char * name; float score;}; 【1】 stu[]={ 3, "LiWei", 82.3, 4, "WangYang", 88.2, 1, "LiuXin", 94.1, 2, "FangHui", 93.6, }; int main( ) { char str[10]; int i; do { printf("Enter a name:"); scanf("%s",str); for (i=0;i<NUM;i++) if(【2】) { printf("name :%8s ",stu[i].name); printf("rank:%3s ",stu[i]. rank); printf("average :%5.lf ",stu[i]. score); 【3】; } if(【4】) printf("Not found'n"); } while(strcmp(str,”O")!=0);} 30. 以下程序用来输出结构体变量ex所占存储单元的字节数,请填空。 struct st { char name[20];double score;}; main() {【1】 ex; printf”ex size:%d ”,sizeof(【2】));} 四、阅读程序,修改程序中的错误,不得增行或删行,也不得更改程序结构。请指出错误代码所在的行号,并给出该行修改后的程序代码。(每处3分,共15分) 31. 以下程序用于输入两个学生的姓名和成绩,然后输出这两个学生的平均成绩,程序中存在5处错误,请改正。 L1 #include<stdio.h> L2 #include<conio.h> L3 define N 2 L4 struct Student L5 { char name[4]; L6 float score;}; L7 main() L8 {struct Student stu[N]; L9 int i=0;float rels=0; L10 for(;i<N;i++) L11 { printf("input scores of student%d: ",i+1); L12 printf("name:"); L13 scanf("%s",&stu[i].name); L14 printf("score:"); L15 scanf("%f",stu[i].score); } L16 for(i=0;i<N;i++) L18 rels+=stu[i].name; L19 printf("avg score is:%3.2f",rels); L20 getch();} 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $$

资源预览图

第七章  结构体和共用体《编程语言基础-C语言》(高教版第五版)章节过关卷
1
第七章  结构体和共用体《编程语言基础-C语言》(高教版第五版)章节过关卷
2
第七章  结构体和共用体《编程语言基础-C语言》(高教版第五版)章节过关卷
3
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。