任务39:共用体 《编程语言-C语言》45分钟专题训练

| 2份
| 25页
| 86人阅读
| 1人下载

内容正文:

湖南省职教高考《编程语言—C语言》45分钟专题训练专辑,共43份试卷。试卷命题与高考紧密相关,精选具有代表性和典型性的高考常考题。旨在帮助学生系统地复习和巩固计算机类理论知识,熟悉高考题型和命题规律,提高解题能力和应试技巧,为高考取得优异成绩打下坚实的基础,本训练卷适用于即将参加计算机类高考的学生。与本专辑配套的还有湖南省职教高考《计算机应用基础》《计算机组装与维护》《计算机网络技术》45分钟专题训练专辑,欢迎同学和老师们下载使用。 《编程语言—C语言》 项目八: 结构体、共用体、链表 第39卷: 共用体 时间:45分钟 总分:100分 班级___________ 姓名__________ 学号__________ 成绩________ 一、选择题(共23小题,每小题2分,共46分) 1.设int占4字节,char占1字节,float占4字节,有以下定义语句段,则sizeof(x2)的值为( ) struct stu{union{char b1[5];int b2[2];}x1;char b3[8];float c;}x2 A.17 B.20 C.18 D.19 2.下列选项中,叙述正确的一项是( ) A.结构体一经定义,系统就给它分配了所需要的内存单元 B.结构体变量和共用体变量所占内存长度是各成员所占内存长度之和 C.可以对结构体类型和结构体类型变量赋值、存取和运算 D.定义共用体变量后,不能引用共用体变量,只能引用共用体变量中的成员 3.设有定义:union data{int i;char c;float f;}un;,则下列叙述中,不正确的一项是( ) A.un所占的内存长度等于成员c的长度 B.un的地址和其各个成员地址都是同一地址 C.un可以作为函数参数 D.不能对un赋值,但是可以在定义un时对它进行初始化。 4.在C语言中,共用体变量在程序运行期间( ) A.所有成员一直驻留在内存中 B.只有一个成员驻留在内存中 C.不分成员驻留在内存中 D.没有成员驻留在内存中 5.设有定义:union w{int a[3];float b[4];char c[10];}bb;,则语句:printf("%d ",sizeof(bb));的输出结果是( ) A.6 B.16 C.17 D.32 6.设有定义:union type{int i;char ch;}temp;,则执行语句:temp.i=266;后,temp.ch的数值为( ) A.266 B.256 C.10 D.1 7.下列选项中,对共用体类型数据的正确叙述是( ) A.一旦定义了一个共用体变量后,即可引用改变量或该变量中的任意成员 B.一个共用体变量中可以同时存放其所有成员 C.一个共用体变量中不能同时存放其所有成员 D.共用体类型数据可以出现在结构体类型定义中,但结构体类型数据不能出现在共用体类型定义中 8.设有以下程序,程序的输出结果是( ) union p{int i;char ch[2];}a; main() {a.ch[0]=13;a.ch[1]=0;printf("%d ",a.i); getch();} A.13 B.14 C.208 D.209 9.设有定义:union dt{int a;char b;double c;}data;,则下列选项中,叙述不正确的一项是( ) A.data的每个成员起始地址都相同 B.变量data所占的内存字节数与成员c所占字节数相等 C.程序段:data.a=5; printf("%f ",data.c);的输出结果是5.000000 D.data不可以作为函数的参数 10.设有定义:union data{int i;char ch;double f;}x;,则共用体变量x所占用的内存字节数为( ) A.7 B.8 C.10 D.11 11.设有定义:union data{int i;float f;struct{int x;char y;}s;char d;}a;则变量a在内存中所占字节数为( ) A.8 B.9 C.15 D.17 12.下列叙述中,正确的一项是( ) A.一个结构只能包含一种数据类型 B.不同结构中的成员不能有相同的成员名 C.两个结构变量不可以进行大小比较 D.关键字typedef用于定义新的数据类型 13.在C语言中,在定义一个联合体变量时,系统分配给它的存储空间是( ) A.该联合体中第一个成员所需存储空间 B.该联合体中占用最大存储空间的成员所需存储空间 C.该联合体中最后一个成员所需存储空间 D.该联合体中所有成员所需存储空间的总和 14.执行以下程序段的输出结果是( ) union aa{float x,y; char c[6];}; struct st{union aa a1;float w[5];double bc;}wa; main() {printf("%d",sizeof(wa));getch();} A.40 B.36 C.20 D.8 15.设有一个名为“data”的共用体,其中定义了两个成员变量“num”和“ch”,下列用于访问“data”共用体的“ch”成员变量的是( ) A.data.ch B.&data.ch C.(*data).ch D.data->ch 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的长度 B.un的地址和它的各个成员地址都是同一地址 C.un可以作为函数参数 D.不能对un赋值,但可以在定义un时对它初始化 18.执行以下程序段的输出结果是( ) main() {int i,j; union{char a;long b;unsigned char c;}m; m.b=0x1234567; printf("%x ",m.a);getch();} A.1234567 B.12 C.67 D.123 19.执行以下程序段的输出结果是( ) main() {int i,j; union{short a;long b;unsigned char c;}m; m.b=0x1234567; printf("%x ",m.a);getch();} A.1234 B.567 C.4567 D.34567 20.执行以下程序段的输出结果是( ) struct st{int a2;char a1;}; union ss{int r;char s[2];struct st t;}; main() {union ss a; a.s[0]='0';a.s[1]='1'; a.t.a2=a.s[0]+a.s[1]; printf("%d",a.r);getch();} A.97 B.99 C.98 D.96 21.执行以下程序段的输出结果是( ) main() {union{char a[2];int b;}s; s.b=0x112233; printf("%x",s.a[1]);getch();} A.11 B.112 C.22 D.23 22.执行以下程序段的输出结果是( ) main() {union{char a[2];int b;}s; s.b=01122; printf("%d",s.a[1]);getch();} A.2 B.1 C.3 D.11 23.执行以下程序段的输出结果是( ) main() {union{char a[2];int b;float c;}s; s.a[1]='A'; s.c=2026; printf("%d",s.a[1]);getch();} A.64 B.65 C.66 D.67 二、程序运行结果题(本题共7小题,每题3分,共21分) 24.以下程序的运行结果是( ) main() {union {unsigned char c; unsigned int i[4];}z; z.i[0]=0x39; z.i[1]=0x36; printf("%c ",z.c); getch();}; 25.以下程序的运行结果是( ) main() {union {int i[2];long k;char c[4];}r,*s=&r; s->i[0]=0x56; s->i[1]=0x57; printf("%c ",s->c[0]); getch();}; 26.以下程序的运行结果是( ) #include <stdio.h> #include <conio.h> struct w{ char low;char high;}; union u{struct w byte;int word;}uu; main( ) { uu.word=0x1234; printf("Word value:%04x ",uu.word); printf("High value:%02x ",uu.byte.high); printf("Low value:%02x ",uu.byte.low); getch();} 27.以下程序的运行结果是( ) #include <stdio.h> #include <conio.h> main( ) {union EX {struct{ int x;int y;}in; int a;int b;}e; e.a=1;e.b=2; e.in.x=e.a*e.b; e.in.y=e.a+e.b; printf("%d %d",e.in.x,e.in.y); getch();} 28.以下程序的运行结果是( ) #include <stdio.h> #include <conio.h> main( ) {struct EXAMPLE{ union{int x;int y;}in; int a;int b;}e; e.a=1;e.b=2; e.in.x=e.a*e.b; e.in.y=e.a+e.b; printf("%d,%d",e.in.x,e.in.y); getch();} 29.以下程序的运行结果是( ) #include <stdio.h> #include <conio.h> struct w { char low; char high;}; union u { struct w byte; short word;}uw; main( ) { int result; uw.word=0x1234; printf("word value:%04x ",uw.word); printf("high byte:%02x ",uw.byte.high); printf("low byte:%02x ",uw.byte.low); getch();} 30.以下程序的运行结果是( ) #include <stdio.h> #include <conio.h> struct w { char low; char high;}; union u { struct w byte; short word;}uw; main( ) { int result; uw.word=0x123; uw.byte.low=0x89; printf("word value:%04x ",uw.word); result=uw.word+0x2a45; printf("the result:%04x ",result); getch();} 三、阅读程序,修改程序中的错误,不得增行或删行,也不得更改程序结构。请指出错误代码所在的行号,并给出该行修改后的程序代码。每处3分,共9分) 31.设有一个unsigned long型整数,现在要将其前两个字符和后两个字符作为2个unsigned int 型整数输出(假设一个int型数据占2个字节)。程序实现在主函数中输入该long型整数,在函数partition中输出结果。程序中共有三处错误,请改正。 L1 #include <stdio.h> L2 #include <conio.h> L3 void partition(unsigned long int num) L4 {union a L5 {unsigned int part[2]; L6 unsigned long int w;}n,p; L7 p=n; L8 n.w=num; L9 printf("long int=%lx ",num); L10 printf("low—part num=%0x,high—partnum=%0x ", L11 p->part[0],p->part[1]);} L12 main( ) L13 { unsigned long int x; L14 x=0x2345569; L15 partition(*x); L16 getch();} 四、程序填空。按照题目要求,将正确的内容填入相应位置,使得程序完整(每空3分,共24分) 32.下列程序的功能是:使用共用体来处理学校若干人员的数据信息,其中包括学生和教师,学生的数据中包括:姓名、号码、性别、职业、班级,教师的数据包括:姓名、号码、性别、职业、职务。请填空。 #include <stdio.h> #include <conio.h> struct {int num; char name[10]; char sex; char job; union {int clas; char position[10]; }category; }【1】; main() {int i; for(i=0;i<2;i++) {printf("please ehter the date of person: "); scanf("%d %s %c %c",&person[i].num,&person[i].name,&person[i].sex,&person[i].job); if(person[i].job=='s') scanf("%d",&person[i].category.clas); else if(person[i].job=='t') scanf("%s",【2】); else printf("Input error!");} printf(" "); printf("No. name sex job class/position "); for(i=0;i<2;i++) {if(【3】) printf("%6d%10s%4c%4c%10d ",person[i].num,person[i].name, person[i].sex,person[i].job,【4】); else printf("%6d%10s%4c%4c%10s ",person[i].num,person[i].name, person[i].sex,person[i].job,person[i].category.position);} getch();} 33.以下程序的功能是:读入两个学生的情况存入结构数组。每个学生的情况包括:姓名、学号 、性别。若是男生,则还登记视力正常与否(正常用 Y,不正常用 N);对女生则还登记身高和体重。请填空。 #include <stdio.h> #include <stdlib.h> #include<string.h> #include <conio.h> 【1】 {char name[10];int number;char sex; union body {【2】; struct {int hength; int weight; }f; }body; }per[2]; main( ) {int i; for(i=0;i<2;i++) {scanf("%s %d %c",&per[i].name,&per[i].number,&per[i].sex); if(per[i].sex=='m') scanf("%c",【3】); else if(per[i].sex=='f') scanf("%d %d",&per[i].body.f.hength,【4】); else printf("input error'n");} getch();} 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $$ 湖南省职教高考《编程语言—C语言》45分钟专题训练专辑,共43份试卷。试卷命题与高考紧密相关,精选具有代表性和典型性的高考常考题。旨在帮助学生系统地复习和巩固计算机类理论知识,熟悉高考题型和命题规律,提高解题能力和应试技巧,为高考取得优异成绩打下坚实的基础,本训练卷适用于即将参加计算机类高考的学生。与本专辑配套的还有湖南省职教高考《计算机应用基础》《计算机组装与维护》《计算机网络技术》45分钟专题训练专辑,欢迎同学和老师们下载使用。 《编程语言—C语言》 项目八: 结构体、共用体、链表 第39卷: 共用体 时间:45分钟 总分:100分 班级___________ 姓名__________ 学号__________ 成绩________ 一、选择题(共23小题,每小题2分,共46分) 1.设int占4字节,char占1字节,float占4字节,有以下定义语句段,则sizeof(x2)的值为( ) struct stu{union{char b1[5];int b2[2];}x1;char b3[8];float c;}x2 A.17 B.20 C.18 D.19 【答案】B 2.下列选项中,叙述正确的一项是( ) A.结构体一经定义,系统就给它分配了所需要的内存单元 B.结构体变量和共用体变量所占内存长度是各成员所占内存长度之和 C.可以对结构体类型和结构体类型变量赋值、存取和运算 D.定义共用体变量后,不能引用共用体变量,只能引用共用体变量中的成员 【答案】D 3.设有定义:union data{int i;char c;float f;}un;,则下列叙述中,不正确的一项是( ) A.un所占的内存长度等于成员c的长度 B.un的地址和其各个成员地址都是同一地址 C.un可以作为函数参数 D.不能对un赋值,但是可以在定义un时对它进行初始化。 【答案】A 4.在C语言中,共用体变量在程序运行期间( ) A.所有成员一直驻留在内存中 B.只有一个成员驻留在内存中 C.不分成员驻留在内存中 D.没有成员驻留在内存中 【答案】B 5.设有定义:union w{int a[3];float b[4];char c[10];}bb;,则语句:printf("%d ",sizeof(bb));的输出结果是( ) A.6 B.16 C.17 D.32 【答案】B 6.设有定义:union type{int i;char ch;}temp;,则执行语句:temp.i=266;后,temp.ch的数值为( ) A.266 B.256 C.10 D.1 【答案】C 7.下列选项中,对共用体类型数据的正确叙述是( ) A.一旦定义了一个共用体变量后,即可引用改变量或该变量中的任意成员 B.一个共用体变量中可以同时存放其所有成员 C.一个共用体变量中不能同时存放其所有成员 D.共用体类型数据可以出现在结构体类型定义中,但结构体类型数据不能出现在共用体类型定义中 【答案】C 8.设有以下程序,程序的输出结果是( ) union p{int i;char ch[2];}a; main() {a.ch[0]=13;a.ch[1]=0;printf("%d ",a.i); getch();} A.13 B.14 C.208 D.209 【答案】A 9.设有定义:union dt{int a;char b;double c;}data;,则下列选项中,叙述不正确的一项是( ) A.data的每个成员起始地址都相同 B.变量data所占的内存字节数与成员c所占字节数相等 C.程序段:data.a=5; printf("%f ",data.c);的输出结果是5.000000 D.data不可以作为函数的参数 【答案】D 10.设有定义:union data{int i;char ch;double f;}x;,则共用体变量x所占用的内存字节数为( ) A.7 B.8 C.10 D.11 【答案】B 11.设有定义:union data{int i;float f;struct{int x;char y;}s;char d;}a;则变量a在内存中所占字节数为( ) A.8 B.9 C.15 D.17 【答案】A 12.下列叙述中,正确的一项是( ) A.一个结构只能包含一种数据类型 B.不同结构中的成员不能有相同的成员名 C.两个结构变量不可以进行大小比较 D.关键字typedef用于定义新的数据类型 【答案】C 13.在C语言中,在定义一个联合体变量时,系统分配给它的存储空间是( ) A.该联合体中第一个成员所需存储空间 B.该联合体中占用最大存储空间的成员所需存储空间 C.该联合体中最后一个成员所需存储空间 D.该联合体中所有成员所需存储空间的总和 【答案】B 14.执行以下程序段的输出结果是( ) union aa{float x,y; char c[6];}; struct st{union aa a1;float w[5];double bc;}wa; main() {printf("%d",sizeof(wa));getch();} A.40 B.36 C.20 D.8 【答案】A。注意系统分配空间时按字节。 15.设有一个名为“data”的共用体,其中定义了两个成员变量“num”和“ch”,下列用于访问“data”共用体的“ch”成员变量的是( ) A.data.ch B.&data.ch C.(*data).ch D.data->ch 【答案】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的长度 B.un的地址和它的各个成员地址都是同一地址 C.un可以作为函数参数 D.不能对un赋值,但可以在定义un时对它初始化 【答案】C 18.执行以下程序段的输出结果是( ) main() {int i,j; union{char a;long b;unsigned char c;}m; m.b=0x1234567; printf("%x ",m.a);getch();} A.1234567 B.12 C.67 D.123 【答案】C 19.执行以下程序段的输出结果是( ) main() {int i,j; union{short a;long b;unsigned char c;}m; m.b=0x1234567; printf("%x ",m.a);getch();} A.1234 B.567 C.4567 D.34567 【答案】C 20.执行以下程序段的输出结果是( ) struct st{int a2;char a1;}; union ss{int r;char s[2];struct st t;}; main() {union ss a; a.s[0]='0';a.s[1]='1'; a.t.a2=a.s[0]+a.s[1]; printf("%d",a.r);getch();} A.97 B.99 C.98 D.96 【答案】A 21.执行以下程序段的输出结果是( ) main() {union{char a[2];int b;}s; s.b=0x112233; printf("%x",s.a[1]);getch();} A.11 B.112 C.22 D.23 【答案】C 22.执行以下程序段的输出结果是( ) main() {union{char a[2];int b;}s; s.b=01122; printf("%d",s.a[1]);getch();} A.2 B.1 C.3 D.11 【答案】A 23.执行以下程序段的输出结果是( ) main() {union{char a[2];int b;float c;}s; s.a[1]='A'; s.c=2026; printf("%d",s.a[1]);getch();} A.64 B.65 C.66 D.67 【答案】A 二、程序运行结果题(本题共7小题,每题3分,共21分) 24.以下程序的运行结果是( ) main() {union {unsigned char c; unsigned int i[4];}z; z.i[0]=0x39; z.i[1]=0x36; printf("%c ",z.c); getch();}; 【答案】9 25.以下程序的运行结果是( ) main() {union {int i[2];long k;char c[4];}r,*s=&r; s->i[0]=0x56; s->i[1]=0x57; printf("%c ",s->c[0]); getch();}; 【答案】V 26.以下程序的运行结果是( ) #include <stdio.h> #include <conio.h> struct w{ char low;char high;}; union u{struct w byte;int word;}uu; main( ) { uu.word=0x1234; printf("Word value:%04x ",uu.word); printf("High value:%02x ",uu.byte.high); printf("Low value:%02x ",uu.byte.low); getch();} 【答案】 Word value:1234 High value:12 Low value:34 27.以下程序的运行结果是( ) #include <stdio.h> #include <conio.h> main( ) {union EX {struct{ int x;int y;}in; int a;int b;}e; e.a=1;e.b=2; e.in.x=e.a*e.b; e.in.y=e.a+e.b; printf("%d %d",e.in.x,e.in.y); getch();} 【答案】4 8 28.以下程序的运行结果是( ) #include <stdio.h> #include <conio.h> main( ) {struct EXAMPLE{ union{int x;int y;}in; int a;int b;}e; e.a=1;e.b=2; e.in.x=e.a*e.b; e.in.y=e.a+e.b; printf("%d,%d",e.in.x,e.in.y); getch();} 【答案】3,3 29.以下程序的运行结果是( ) #include <stdio.h> #include <conio.h> struct w { char low; char high;}; union u { struct w byte; short word;}uw; main( ) { int result; uw.word=0x1234; printf("word value:%04x ",uw.word); printf("high byte:%02x ",uw.byte.high); printf("low byte:%02x ",uw.byte.low); getch();} 【答案】 word value:1234 high byte:12 low byte:34 30.以下程序的运行结果是( ) #include <stdio.h> #include <conio.h> struct w { char low; char high;}; union u { struct w byte; short word;}uw; main( ) { int result; uw.word=0x123; uw.byte.low=0x89; printf("word value:%04x ",uw.word); result=uw.word+0x2a45; printf("the result:%04x ",result); getch();} 【答案】 word value:0189 the result:2bce 三、阅读程序,修改程序中的错误,不得增行或删行,也不得更改程序结构。请指出错误代码所在的行号,并给出该行修改后的程序代码。每处3分,共9分) 31.设有一个unsigned long型整数,现在要将其前两个字符和后两个字符作为2个unsigned int 型整数输出(假设一个int型数据占2个字节)。程序实现在主函数中输入该long型整数,在函数partition中输出结果。程序中共有三处错误,请改正。 L1 #include <stdio.h> L2 #include <conio.h> L3 void partition(unsigned long int num) L4 {union a L5 {unsigned int part[2]; L6 unsigned long int w;}n,p; L7 p=n; L8 n.w=num; L9 printf("long int=%lx ",num); L10 printf("low—part num=%0x,high—partnum=%0x ", L11 p->part[0],p->part[1]);} L12 main( ) L13 { unsigned long int x; L14 x=0x2345569; L15 partition(*x); L16 getch();} 答案: L6 unsigned long int w;}n,*p; L7 p=&n; L15 partition(x); 四、程序填空。按照题目要求,将正确的内容填入相应位置,使得程序完整(每空3分,共24分) 32.下列程序的功能是:使用共用体来处理学校若干人员的数据信息,其中包括学生和教师,学生的数据中包括:姓名、号码、性别、职业、班级,教师的数据包括:姓名、号码、性别、职业、职务。请填空。 #include <stdio.h> #include <conio.h> struct {int num; char name[10]; char sex; char job; union {int clas; char position[10]; }category; }【1】; main() {int i; for(i=0;i<2;i++) {printf("please ehter the date of person: "); scanf("%d %s %c %c",&person[i].num,&person[i].name,&person[i].sex,&person[i].job); if(person[i].job=='s') scanf("%d",&person[i].category.clas); else if(person[i].job=='t') scanf("%s",【2】); else printf("Input error!");} printf(" "); printf("No. name sex job class/position "); for(i=0;i<2;i++) {if(【3】) printf("%6d%10s%4c%4c%10d ",person[i].num,person[i].name, person[i].sex,person[i].job,【4】); else printf("%6d%10s%4c%4c%10s ",person[i].num,person[i].name, person[i].sex,person[i].job,person[i].category.position);} getch();} 答案:①person[2] ②person[i].category.position ③person[i].job=='s' ④person[i].category.clas 33.以下程序的功能是:读入两个学生的情况存入结构数组。每个学生的情况包括:姓名、学号 、性别。若是男生,则还登记视力正常与否(正常用 Y,不正常用 N);对女生则还登记身高和体重。请填空。 #include <stdio.h> #include <stdlib.h> #include<string.h> #include <conio.h> 【1】 {char name[10];int number;char sex; union body {【2】; struct {int hength; int weight; }f; }body; }per[2]; main( ) {int i; for(i=0;i<2;i++) {scanf("%s %d %c",&per[i].name,&per[i].number,&per[i].sex); if(per[i].sex=='m') scanf("%c",【3】); else if(per[i].sex=='f') scanf("%d %d",&per[i].body.f.hength,【4】); else printf("input error'n");} getch();} 答案:①struct ②char eye ③&per[i].body.eye ④&per[i].body.f.weight 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $$

资源预览图

任务39:共用体 《编程语言-C语言》45分钟专题训练-第1页
1
任务39:共用体 《编程语言-C语言》45分钟专题训练-第2页
2
任务39:共用体 《编程语言-C语言》45分钟专题训练-第3页
3

由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。