




已阅读5页,还剩19页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第十四部分:结构体与共用体及用户定义类型一、选择题:(1)有以下程序段typedef struct NODE int num; struct NODE *next; OLD;以下叙述中正确的是A)以上的说明形式非法B)NODE是一个结构体类型C)OLD是一个结构体类型D)OLD是一个结构体变量(2)有以下程序# include struct STU int num; float TotalScore; ;void f(struct STU p) struct STU s2=20044,550,20045,537; p.num = s1.num; p.TotalScore = s1.TotalScore;main() struct STU s2=20041,703,20042,580; f(s0); printf(%d %3.0fn, s0.num, s0.TotalScore);程序运行后的输出结果是A)20045 537B)20044 550C)20042 580D)20041 703(3)有以下程序# include struct STU char name10; int num; ;void f(char *name, int num) struct STU s2=SunDan,20044,Penghua,20045; num = s0.num; strcpy(name, );main() struct STU s2=YangSan,20041,LiSiGuo,20042,*p; p=&s1; f(p-name, p-num); printf(%s %dn, p-name, p-num);程序运行后的输出结果是A)SunDan 20042B)SunDan 20044C)LiSiGuo 20042 D)YangSan 20041(4)有以下程序struct STU char name10; int num; float TotalScore; ;void f(struct STU *p) struct STU s2=SunDan,20044,550,Penghua,20045,537, *q=s; +p ; +q; *p=*q;main() struct STU s3=YangSan,20041,703,LiSiGuo,20042,580; f(s); printf(%s %d %3.0fn, , s1.num, s1.TotalScore);程序运行后的输出结果是A)SunDan 20044 550B)Penghua 20045 537C)LiSiGuo 20042 580D)SunDan 20041 703(5)若有以下说明和定义union dt int a; char b; double c;data;以下叙述中错误的是 A)data的每个成员起始地址都相同B)变量data所占内存字节数与成员c所占字节数相等C)程序段:data.a=5;printf(%fn,data.c);输出结果为5.000000D)data可以作为函数的实参(6)设有如下说明typedef struct ST long a; int b; char c2; NEW;则下面叙述中正确的是 A)以上的说明形式非法B)ST是一个结构体类型C)NEW是一个结构体类型D)NEW是一个结构体变量(7)有以下结构体说明和变量定义,如图所示,指针pqr分别指向此链表中三个连续结点。struct node int data; struct node *next; *p,*q,*r;现要将q所指结点从链表中删除,同时保持链表的连续,以下不能完成指定操作的语句是 A)p-next=q-next;B)p-next=p-next-next;C)p-next=r;D)p=q-next;(8)以下对结构体类型变量td的定义中,错误的是 A)typedef struct aa int n; float m; AA; AA td;B)struct aa int n; float m; td; struct aa td;C)struct int n; float m; aa; struct aa td;D)struct int n; float m; td;(9) 有以下说明和定义语句struct student int age; char num8;struct student stu3=20,200401,21,200402,109,200403;struct student *p=stu;以下选项中引用结构体变量成员的表达式错误的是A) (p+)-num B) p-num C) (*p).num D) stu3.age1012.以下程序的功能是:建立一个带有头结点的单向链表,并将存储在数组中的字符依次转储到链表的各个结点中,请从与下划线处号码对应的一组选若中选择出正确的选项。#include stuct node char data; struct node *next;(10) CreatList(char *s) struct node *h,*p,*q); h=(struct node *) malloc(sizeof(struct node); p=q=h; while(*s!=0) p=(struct node *) malloc(sizeof(struct node); p-data= (11) ; q-next=p; q= (12) ; s+; p-next=0; return h;main() char str=link list; struct node *head; head=CreatList(str); .(10) A) char * B) struct node C) struct node* D) char(11) A) *s B) s C) *s+ D)(*s)+(12) A) p-next B) p C) s D) s-next(13) 设有以下语句typedef struct S int g; char h; T;则下面叙述中正确的是A) 可用S定义结构体变量 B)可以用T定义结构体变量C)S是struct类型的变量 D)T是struct S类型的变量(14) 有以下程序struc STU char name10; int num;void f1(struct STU C) struct STU b=“LiSiGuo”,2042; c=b;void f2(struct STU *C) struct STU b=“SunDan”,2044; *c=b;main( ) struct STU a=“YangSan”,2041,b=“WangYin”,2043; f1(a) ;f2(&b) ; printf(“%d %dn”,a.num,b.num);执行后的输出结果是A)2041 2044 B)2041 2043 C)2042 2044 D)2042 2043(15) 有以下程序struct STU char name10; int num; int Score;main( ) struct STU s5=“YangSan”,20041,703,“LiSiGuo”,20042,580, “wangYin”,20043,680,“SunDan”,20044,550, “Penghua”,20045,537,*p5,*t; int i,j; for(i=0;i5;i+) pi=&si; for(i=0;i4;i+) for(j=i+1;jScorepj-Score) t=pi;pi=pj;pj=t; printf(“5d %dn”,s1.Score,p1-Score);执行后输出结果是A) 550 550 B) 680 680 C) 580 550 D) 580 680(16) 有以下程序#include struct NODEint num;struct NODE *next;main( ) struct NODE *p,*q,*r;int sum=0;p=(struct NODE *)malloc(sizeof(struct NODE);q=(struct NODE *)malloc(sizeof(struct NODE);r=(struct NODE *)malloc(sizeof(struct NODE);p-num=1;q-num=2;r-num=3;p-next=q;q-next=r;r-next=NULL;sum+=q-next-num;sum+=p-num;printf(“%dn”,sum);执行后的输出结果是A) 3 B) 4 C) 5 D) 6(17) 以下选项中不能正确把c1定义成结构体变量的是A) typedef struct B) struct color cl int red; int red;int green; int green;int blue; int blue; COLOR; ;COLOR cl;C) struct color D) struct int red; int red;int green; int green;int blue; int blue; c l; c l ;(18) 有以下程序struct s int x,y; data2=10,100,20,200;main () struct s *p=data;printf(%dn,+(p-x);程序运行后的输出结果是A) 10 B) 11 C) 20 D)21(19) 有以下结构体说明和变量定义,如图所示,指针p、q、r分别指向一个链表中的三个连续结点。struct node int datastruct node *next ; *p, *q, *r;现要将q和r所指结点的先后位置交换,同时要保持链表的连续,以下错误的程序段是A) r-next=q; q-next=r-next; p-next=r;B) q-next=r-next; p-next=r; r-next=q;C) p-next=r; q-next=r-next; r-next=q;D) q-next=r-next; r-next=q; p-next=r;(20) 设有如下说明typedef structintn;charc;doublex;STD;则以下选项中,能正确定义结构体数组并赋初值的语句是A) STD tt2=1,A,62,2, B,75;B) STD tt2=1,A,62,2, B,75;C) struct tt2=1,A,2, B;D)structtt2=1,A,62.5,2, B,75.0;(21) 有以下程序main()union unsigned intn;unsigned charc; u1;ul.c=A;printf(%cn,u1.n);执行后输出结果是A) 产生语法错B) 随机值C) AD) 65(22)若要说明一个类型名STP,使得定义语句STP s等价于char*s,以下选项中正确的是A) typedef STP char *s;B) typedef *char STP;C) typedef stp *char;D) typedef char* STP;(23) 设有如下定义struct sscharname10;intage;charsex;std3,*p=std;下面各输入语句中错误的是A) scanf(%d,&(*p).age);B) scanf(%s,&);C) scanf(%c,&std0.sex)D) scanf(%c,&(p-sex);(24) 有以下程序struct STU char num10; float score3; ;main() struct stu s3=“20021”,90,95,85,“20022”,95,80,75,“20023”,100,95,90,*p=s;int i; float sum=0;for(i=0;iscorei;printf(“%6.2fn”,sum);程序运行后的输出结果是A) 260.00B) 270.00C) 280.00 D) 285.00(25) 设有如下定义:struck sk int a;float b;data;int *p;若要使P指向data中的a域,正确的赋值语句是A) p=&a;B) p=data.a;C) p=&data.a;D) *p=data.a;(26) 有以下程序#include struct NODE int num; struct NODE *next; ;main() struct NODE *p,*Q,*R;p=(struct NODE*)malloc(sizeof(struct NODE);q=(struct NODE*)malloc(sizeof(struct NODE);r=(struct NODE*)malloc(sizeof(struct NODE);p-num=10; q-num=20; r-num=30;p-next=q;q-next=r;printf(“%dn”,p-num+q-next-num);程序运行后的输出结果是A) 10B) 20C) 30D) 40(27) 若有以下说明和定义typedef int *INTEGER;INTEGER p,*q;以下叙述正确的是A) P是int型变量 B) p是基类型为int的指针变量C) q是基类型为int的指针变量 D) 程序中可用INTEGER代替int类型名(28) 若有下面的说明和定义:struct test int ml; char m2; float m3;union uu char ul5; int u22; ua; myaa;则sizeof(struct test )的值是A) 12B) 16C) 14D) 9(29) 若以下定义:struct link int data;struck link *next;a,b,c,*p,*q;且变量a和b之间已有如下图所示的链表结构:a bdata next data next 5 9 0 pcdata next 7 q指针p指向变量a,q指向变量c。则能够把c插入到a和b 之间并形成新的链表的语句组是:A) a.next=c; c.next=b; B) p.next=q; q.next=p.next;C) p-next=&c; q-next=p-next; D) (*p).next=q; (*q).next=&b;(30) 设有以下说明语句typedef struct int n;char ch8;PER;则下面叙述中正确的是A) PER 是结构体变量名 B) PER是结构体类型名C) typedef struct 是结构体类型 D) struct 是结构体类型名(31) 以下各选项企图说明一种新的类型名,其中正确的是A) typedef v1 int; B) typedef v2=int;C) typedefv1 int v3; D) typedef v4: int;(32) 以下程序的输出结果是struct HAR int x, y; struct HAR *p; h2;main() h0,x=1;h0;y=2;h1,x=3;h1;y=4;h0,p=&h1,p=h;printf(“%d %d n”,(h0,p)-x,(h1,p)-y);A) 12 B) 23 C) 14 D) 32(33) 以下程序的输出结果是union myun struct int x, y, z; u;int k; a;main() a.u.x=4; a.u.y=5; a.u.z=6;a.k=0;printf(%dn”,a.u.x);A) 4B) 5C) 6D) 0(34) 设有以下说明语句struct ex int x ; float y; char z ; example;则下面的叙述中不正确的是A) struct结构体类型的关键字B) example是结构体类型名C) x,y,z都是结构体成员名D) struct ex是结构体类型(35) 以下程序的输出是A) 10 B) 11 C) 51 D) 60struct st int x; int *y; *p;int dt4= 10,20,30,40 ;struct st aa4= 50,&dt0,60,&dt0,60,&dt0,60,&dt0,;main() p=aa; printf(“%dn”,+(p-x);(36) 假定建立了以下链表结构,指针p、q分别指向如图所示的结点,则以下可以将q所指结点从链表中删除并释放该结点的语句组是A) free(q); p-next=q-next;B) (*p).next=(*q).next; free(q);C) q=(*q).next; (*p).next=q; free(q);D) q=q-next; p-next=q; p=p-next; free(p);(37) 有如下定义struct personchar name9; int age;strict person class10=“Johu”, 17,“Paul”, 19“Mary”, 18,“Adam 16,;根据上述定义,能输出字母M的语句是A) prinft(“%cn”,class3.mane);B) pfintf(“%cn”,1);C) prinft(“%cn”,1);D) printf(“%cn”,0);(38) 以下对结构体类型变量的定义中,不正确的是A) typedef struct aa B) #define AA struct aa int n; AA int n;float m; float m;AA; td1;AA td1; C) struct D) struct int n; int n;float m; float m;aa; td1;stuct aa td1;(39) 若已建立如下图所示的单向链表结构,Pdata next在该链表结构中,指针p、s分别指向图中所示结点,则不能将s所指的结点插入到链表末尾仍构成单向链表的语句组是A) p =p-next; s-next=p; p-next=s;B) p =p-next; s-next=p-next; p-next=s;C) s-next=NULL; p=p-next; p-next=s;D) p=(*p).next; (*s).next=(*p).next; (*p).next=s;(40) 下列程序的输出结果是 A) 5 B) 6 C) 7 D) 8 struct abc int a, b, c; ; main() struct abc s2=1,2,3,4,5,6; int t; t=s0,a+s1,b; printf(%d n,t); (41) 有以下结构体说明和变量的定义,且如下图所示指针p指向变量a,指针q指向变量b。则不能把结点b连接到结点a之后的语句是 A) a.next=q; B) p.next=&b; C) p-next=&b; D) (*p).next=q; struct node char data; struct node *next; a,b,*p=&a,*q=&b; data next data next(42) 变量a所占内存字节数是 A) 4 B) 5 C) 6 D) 8 union U char st4; int i; long l; ; struct A int c; union U u; a;(43) 以下选项中,能定义s为合法的结构体变量的是 A) typedef struct abc B) struct double a; double a; char b10; char b10; s; s; C) struct ABC D) typedef ABC double a; double a; char b10; char b10; ABC s; ABC s;(44) 以下程序的输出结果是A) 2 B) 1 C)0 D)不确定main() union char i2; int k; r;r.i0=2; r.i1=0;printf“%dn”,r.k;(45) 设有以下定义或语句,则输出的结果是(指针变量占两个字节)A) 20 B) 16 C) 14 D)12struct date long *cat;struct date *next;double dog;too;printf(“%dn”,sizeof(too);(46) 有以下程序 #include struct stu int num; char name10; int age; ; void fun(struct stu *p) printf(%sn,(*p).name); main() struct stu students3= 9801,Zhang,20, 9802,Wang,19, 9803,Zhao,18 ; fun(students+2); 输出结果是A) Zhang B)ZhaoC) Wang D) 18(47) 设有以下说明和定义: typedef union long i; int k5; char c; DATE; struct date int cat; DATE cow; double dog; too; DATE max; 则下列语句的执行结果是 printf (%d,sizeof (struct date ) +sizeof(max);A) 26 B) 30 C) 18 D) 8(48) 设有如下定义: struct skint a;float b;data,*p; 若有p=&data;,则对data中的a域的正确引用是A)(*p).data.a B)(*p).a C)p-data.a D)p.data.a(49) 若程序中有下面的说明和定义 struct abc int x;char y; struct abc s1,s2;则会发生的情况是A) 编译进错 B) 程序将顺利编译连接执行C) 能顺利通过编译连接但不能执行 D) 能顺利通过编译但连接出错(50) 若有下面的说明和定义,则sizeof(struct aa) 的值是struct aa int r1;double r2; float r3;union uuchar u15; long u22; ua; mya;A)30B)29C)24D)22(51) 字符0的ASCII码的十进制数为48,且数组的第0个元素在低位,则以下程序的输出结果是#includemain( ) union int i2; long k; char c4; r,*s=&r;s-i0=0x39;s-i1=0x38;printf(%cn,s-c0) A) 39 B) 9 C) 38 D) 8(52) 设有以下定义:typedef union long i;int k5;char c;DATE;struct date int cat;DATE cow;double dog;too;DATE max;则下列语句的执行结果是printf(%d,sizeof(struct date)+sizeof(max);A) 25 B) 30 C) 18 D) 8(53) 根据下面的定义,能打印出字母M的语句是A) printf(%cn,);D) printf(%cn,0);B) printf(%cn,1);C) printf(%cn,1);struct person char name9; int age;struct person class10=John,17,Paul,19,Mary,18,Adam,16;(54) 下面程序的输出是A) 0 B) 1 C) 3 D) 6main() struct cmplx int x; int y; cnum2=1,3,2,7;printf(%dn,cnum0.y /cnum0.x * cnum1.x);(55) 已知字符0的ASCII码为十六进制的30,下面程序的输出是A) 6 B) 9 C) 0 D) 3main() union unsigned char c;unsigned int i4; z;z.i0=0x39;z.i1=0x36;printf(%cn,z.c);(56) 下面程序的输出是A) 32 B) 16 C) 8 D) 24typedef union long x2;int y4;char z8; MYTYPE;MYTYPE them;main() printf(%dn, sizeof(them);(57) 若已建立下面的链表结构,指针p、s分别指向图中所示的结点,则不能将s所指的结点插入到链表末尾的语句组是A) s-next=NULL; p=p-next; p-next=s;B) p=p-next; s-next=p-next; p-next=s;C) p=p-next; s-next=p; p-next=s;D) p=(*p).next; (*s).next=(*p).next; (*p).next=s;(58) 下面程序的输出结果为struct st int x;int *y; *p;int dt4=10,20,30,40;struct st aa4= 50,&dt0,60,&dt1,70,&dt2,80,&dt3 ;main() p=aa;printf(%dn, +p-x );printf(%dn, (+p)-x);printf(%dn, +( *p-y);A) 10 B) 50 C) 51 D) 60 20 60 60 70 20 21 21 31(59) 有以下程序:#includeunion pw int i; char ch2; a;main() a.ch0=13; a.ch1=0; printf(%dn,a.i); 程序的输出结果是(注意: ch0在低字节,ch1在高字节。)A) 13 B) 14 C) 208 D) 209(60) 设有以下语句:struct st int n; struct st *next; static struct st a3=5,&a1,7,&a2,9,0,*p;p=&a0;则表达式【60】 的值是6。A)p + + -n B) p-n + + C) (*p).n + + D) + + p-n二、填空题:(1)以下程序运行后的输出结果是 【1】 。struct NODE int num; struct NODE *next; ;main() struct NODE s3=1, 0,2, 0,3, 0, *p, *q, *r; int sum=0; s0.next=s+1; s1.next=s+2; s2.next=s; p=s; q=p-next; r=q-next; sum+=q-next-num; sum+=r-next-next-num; printf(%dn, sum);(2)以下程序运行后的输出结果是【2】 。 struct NODE int k; struct NODE *link;main() struct NODE m5,*p=m,*q=m+4; int i=0; while(p!=q) p-k=+i; p+; q-k=i+; q-; q-k=i; for(i=0;i5;i+) printf(%d,mi.k); printf(n);(3) 以下程序的运行结果是【3】 # include typedef struct student char name10; long sno; float score; STU;main( ) STU a=“zhangsan”,2001,95,b=“Shangxian”,2002,90,c=“Anhua”,2003,95,d,*p=&d; d=a; if(strcmp(,)0) d=b; if(strcmp(,)0) d=c; printf(“%ld%sn”,d.sno,p-name); (4) 已有定义如下:struct node int data;struct node *next;| *p;以下语句调用malloc函数,使指针p指向一个具有struct node类型的动态存储空间。请填空。p=(struct node *) malloc( 【4】 ); (5) 设有以下定义struct ssintinfo;struct ss *link;x,y,z;且已建立如下图所示链表结构:X Y Z 请写出删除点y的赋值语句【5】 。(6) 下面程序的运行结果是: 6 。typedef union student char name10;long
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 外卖盒饭活动方案
- 夜间派对活动方案
- 墙布套餐活动方案
- 夏天洗护活动方案
- 夜游锦江活动方案
- 外公外婆亲子活动方案
- 夏日咖啡活动方案
- 外卖餐厅活动方案
- 大班定向活动方案
- 大型活动开业活动方案
- 信息必刷卷04(广东省卷专用)2025年中考数学(解析版)
- 餐饮服务与管理课件 菜单的设计与制作
- 2025年度次季度工业级5G专网部署技术服务合同模板
- 大数据分析在食品检测精度提高中的应用策略
- 山东师范大学《大学英语本科(专升本)》期末考试复习题及参考答案
- Unit 6 A great week (教学设计)-2024-2025学年外研版(三起)(2024)英语三年级下册
- 2025版小细胞肺癌免疫治疗专家共识解读
- 职业技能培训:保健按摩师
- JJF(津) 5003-2024 汽车制造专用加注机校准规范
- 2025年绍兴市部分市属国有企业招聘笔试参考题库含答案解析
- 团队建设与团队管理培训
评论
0/150
提交评论