MSE C语言第九章习题.doc_第1页
MSE C语言第九章习题.doc_第2页
MSE C语言第九章习题.doc_第3页
MSE C语言第九章习题.doc_第4页
MSE C语言第九章习题.doc_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

考研网 /下面是研究生考试网为报考GCT软件工程硕士的考生整理的MSE考研复习备考资料。希望这些资料能够给考生一定帮助。在此,预祝考生复习备考顺利!第十章结构体和共用体一、单选题(50题)1、下面四个运算符中,优先级最低的是 A. . B. ( ) C. - D. +2、 当说明一个结构体变量时系统分配给它的内存是 A. 结构中最后一个成员所需内存量B. 结构中第一个成员所需内存量C. 成员中占内存量最大者所需的容量D. 各成员所需内存量的总和3、当说明一个共用体变量时系统分配给它的内存是 A. 结构中最后一个成员所需内存量B. 结构中第一个成员所需内存量C. 成员中占内存量最大者所需的容量D. 各成员所需内存量的总和4、C语言共用体类型变量在程序运行期间 A. 所有成员一直驻留在内存中B. 只有一个成员驻留在内存中C. 部分成员驻留在内存中D. 没有成员驻留在内存中5、下面对typedef的叙述中正确的是 A. 用typedef可以定义各种类型名和变量B. 用typedef可以增加新类型C. 用typedef只是将已存在的类型用一个新的标识符来代表D. 使用tvpedef不利于程序的通用和移植6、以下对结构体类型变量的定义中正确的是_ _。A .#dedine STUDENT struct student B. struct studentSTUDENT int num;int num; float age;float age; ;std; student std;C. struct D. struct int num; int num;float age; float age;std1; stdstruct student std;7、已知学生记录描述为:struct studentint no;char name20;float score; s;对变量s中的name成员的正确赋值方式是 A. r=”wang”; B. name= “wang”;C. strcpy (name, “wang”) D. strcpy (,”wang”);8、设有以下说明语句:struct stuint a;float b;s;下面的叙述不正确的是 A. struct是结构体类型的关键字B. struct stu是用户定义的结构体类型C. s是用户定义的结构体类型名D. a和b都是结构体成员名9、在IBM_PC机上使用C语言,若有如下定义:struct stuint a;float b;s;则结构变量s占用内存的字节数是 A. 2 B. 4 C. 6 D. 810、若有以下定义:struct studentint age;int num;stu, *p=&stu;则以下不正确的引用是_ _A. (p+)-num B. p-num C. (*p).num D. stu-num11、以下scanf函数调用语句中对结构体变量成员的不正确引用是 struct studentchar name20;int age; int sex;s5, *p=s;A. scanf(s, );B. scanf(d, &s0.age);C. scanf(d, (p-sex);D. scanf(d, p-age);12、有以下定义和语句,则值为6的表达式是 struct stu int score; struct stu *b; a3= 5, &a1, 7, &a2, 9,0, * p=&a0;A. p- score+ B. p+-scoreC. *p- score D. +p-score13、已知学生记录描述为:struct student int no; char name20; struct int year; int month; int day; birth;s;设变量s中的“生日”应是“1984年11月11日”,下列对“生日”的正确赋值方式是 A. year= 1984; B. birth.year= 1984;month=11; birth.month11;day11; birth.day= 11;C. s.year= 1984; D. s.birth.year=1984;s.month11; s.birth.month11;s.day11; s.birth.day11;14、有以下说明和定义语句:struct student int age; char num8; stu3=20,200401,21,200402,10,200403;struct student *p=stu;以下选项中引用结构体变量成员的表达式错误的是 A. (p+)-num B. p-num C. (*p).num D. stu3.age15、以下程序运行后的输出结果是_ 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.00 B. 270.00 C. 280.00 D. 285.0016、设有如下定义: struct 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.a17、若有以下说明和定义:typedef int *INTEGERINTEGER p,*q;以下叙述正确的是_。A. p是int型变量 B. p是基类型为int的指针变量 C. q是基类型为int的指针变量 D. 程序中可用INTEGER代替int类型名18、若指针p已正确定义,要使p指向两个连续的整型动态存储单元,不正确的语句是 A. p=2*(int*)malloc(sizeof(int); B. p=(int*)malloc(2*sizeof(int);C. p=(int*)malloc(2*2); D. p=(int*)calloc(2,sizeof(int);19、若有下面的说明和定义:struct test int ml; char m2; float m3;union uu char ul5; int u22; ua; myaa;则sizeof(struct test )的值是 A. 12 B. 16 C. 14 D. 920、设有以下说明语句:typedef struct int n; char ch8; PER;则下面叙述中正确的是 A. PER是结构体变量名 B. PER是结构体类型名C. typedef struct 是结构体类型 D. struct 是结构体类型名21、假定建立了以下链表结构,指针p、q分别指向如图所示的结点,则以下不能将q所指结点插入到链表末尾的语句组是 A. q-next=NULL; p=p-next; p-next=q; B. p=p-next; q-next=p-.next; p-next=q;C. p=p-next; q-next=p; p-next=q; D. p=(*p).next; (*q).next=(*p).next; (*p).next=q;22、以下对结构体类型变量的定义中,不正确的是 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;struct aa td1; 23、设有以下结构类型说明和变量定义,则变量a在内存所占字节数是 。struct stud char num6; int s4; double ave; a,*p;A. 20 B. 22 C. 24 D. 18 24、有以下结构体说明和变量的定义,且如下图所示指针p指向变量a,指针q指向变量b。则不能把结点b连接到结点a之后的语句 struct node char data; struct node *next; a,b,*p=&a,*q=&b;A. a.next=q; B. p.next=&b; C. p-next=&b; D. (*p).next=q;25、根据下面的定义,能打印出字母M的语句是 struct personchar name9; int age; class10=John,17,Paul,19,Mary,18,adam,16;A. printf(%cn, );B. printf(cn, 1);C. printf(cn, 1);D. printf(cn, 0);26、若有以下定义和语句:union dataint i;char c; float f; a;int n;则以下语句正确的是 A. a=5; B. a=2,a,1.2; C. printf(dn,a); D. n=a;27、设有以下说明,则下面不正确的叙述是 union dataint i;char c;f1oat f; un;A. un所占的内存长度等于成员f的长度B. un的地址和它的各成员地址都是同一地址C. un可以作为函数参数D. 不能对un赋值,也不能在定义un时对它初始化28、在IBM_PC机上使用C语言,若有如下定义:union dataint i; char ch; double f;b;则共用体变量b占用内存的字节数是 A. 1 B. 2 C. 8 D. 1129、以下程序的运行结果是 includestdio.hunion pw int i; char ch2; a;main() a.ch0=13; a.ch1=0;printf(dn,a.i);A. 13 B. 14 C. 208 D. 20930、对于以下结构定义:struct int len; char *str; *p; p-str+中的+加在 A. 指针str上 B. 指针p上 C).str所指的内容上 D. 以上均不是31、若有以下说明和语句, 已知int和double类型分别占2和8个字节,则sizeof(st)的值为 struct st char a10;union int i; double y; u;A. 18 B. 20 C. 12 D. 以上均不是32、对于以下程序段, 运行后i值为 enum WEEKS 1,2,3,4,5,6,7 ;enum WEEKS a=1;int i=0;switch (a) case 1: i=1;case 2: i=2;default: i=3;A. 1 B. 0 C. 3 D. 上述程序有语法错误33、对于enum RAIN, CLOUD, CLEAR weather; 做如下操作: weather=1; weather=CLOUD; 下列哪个说法是对的 A. 是错的 B. 是错的 C. 与是一样的 D. 以上都错34、设有以下说明,则*(int *)(p+1)+2) 的值是 static struct int x, y3; a3 = 1,2,3,4,5,6,7,8,9,10,11,12, *p=a; A.3 B. 7 C. 10 D. 以上都错35、有定义如下:struct sk int a;float b;data ,*p;如果 p=&data;则对于结构变量data的成员a的正确引用是_。A. (*).data.a B. (*p).a C. p-data.a D. p.data.a36、已知:struct st int n;struct st *next;static struct st a3=1,&a1,3,&a2,5,&a0,*p;如果下述语句的显示是2,则对p的赋值是_。printf(%d, +(p-next-n);A. p=&a0; B. p=&a1; C. p=&a2; D. p=&a3;37、已知:struct person char name10;int age; class10=LiMing,29,ZhangHong,21,WangFang,22;下述表达式中,值为72的是_。A. class0-age + class1-age+ class2-age B. 5 C. 5 D. class-name538、已知:struct int i;char c;float a; test;则sizeof(test)的值是 。A. 4 B. 5 C. 6 D. 739、已知:union int i;char c;float a;test;则sizeof(test)的值是 。A. 4 B. 5 C. 6 D. 740、已知:union u_type int i;char ch;float a;temp;现在执行temp.i=266;printf(%d,temp.ch)的结果是 。A. 266 B. 256 C. 10 D. 141、若有以下程序段:struct dent int n;int *m;int a=1, b=2, c=3;struct dent s3 = 101,&a,102,&b,103,&c ;struct dent *p=s;则以下表达式中值为2的是 。A. (p+)-m B. *(p+)-m C. (*p).m D. *(+p)-m42、若有以下说明语句,则对结构变量pup中sex域的正确引用是 。struct pupil char name20;int sex;pup,*p;p=&pup;A. p.pup.sex B. p-pup.sex C. (*p).pup.sex D. (*p).sex43、以下对结构变量stul中成员age的非法引用是 。struct student int age;int num;stu1,*p;p=&stu1;A. stu1.age B. student.age C. p-age D. (*p).age44、已知:struct sk int a;int age;date, *p;如果要使指针p指向data中的成员a,正确的赋值语句是_。A. p = (struct sk *)&data.a; B. p = (struct sk *)data.a;C. p = &data.a; D. *p = data.a;45、已知 enum week sun,mon,tue,wed,thu,fri,satday;则正确的赋值语句是_。A. sun=0; B. san=day; C. sun=mon; D. day=sun;46、已知 enum color red,yellow=2,blue,white,blackren;执行下述语句的输出结果是_。printf(%d,ren=white);A. 0 B. 1 C. 3 D. 447、已知 enum namezhao=1,qian,sun,liman;执行下述程序段后的输出是_。man=0;switch(man) case 0: printf(Peoplen);break;case 1: printf(Mann);break;case 2: printf(Womann);break;default: printf(Errorn);A. People B. Man C. Woman D. Error48、下述关于枚举类型名的定义中,正确的是_。A. enum a= one,two,three ; B. enum a one=9,two=-1,three ;C. enum a=one,two,three; D. enum a one,two,three49、以下tree为已定义的结构体类型,选择出错误的函数定义 。A. struct tree funa(struct tree s ) B. int *funb(char s ) C. struct tree *func( char *s) C. int *fund(char *s10 ) 50、已知函数原型为: struct tree *f ( int x1, int *x2, struct tree x3, struct tree *x4)其中tree为已定义的结构体类型,且有下列变量定义: struct tree pt, *p; int i;请选择正确的函数调用语句 。A. &pt=f (10, &i, pt, p); B. p=f (i+, (int *)p, pt, &pt);C.p=f (i+1, &(i+2), *p, p) D. f (i+1, &i, p, p);二、读程序,写运行结果(20题 一般题:提高题=2:1)一般题1、下面程序的运行结果是 typedef union studentchar name10; long sno; char sex; float score4;STU;main() STU a5; printf(%dn, sizeof(a);2、下列程序的输出结果是 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);3、以下程序的运行结果是 includestdio.hmain() struct dateint year, month, day;today;printf(dn,sizeof(struct date);4、下面程序的运行结果是 main() struct cmplx int x; int y; cnum2=1, 3, 2, 7;printf(dn, cnum0.y/cnum0.x*cnum1.x);5、下面程序的运行结果是 struct str1 char c5, *s; ;main ( ) struct str1 s12=“ABCD”, ”DEGH”, “IJK”, “LMN”;struct str2 struct str1 sr;int d; s2= “OPQ”, “RST”, 32767;printf( “%s”, s2. sr. c2);6、下面程序的运行结果是 main ( ) union char c; int i; t;t.c=A; t.i=1;printf(“ %d, %d”, t.c, t.i); 7、下面程序的运行结果是 main ( ) union int a2; long k; char c4; t, *s=&t;s-a0=0x39; s-a1=0x38;printf(“%lx”, s-k); 8、下面程序的运行结果是 struct n int x; char c; ;main ( ) struct n a=10, x; func (a); printf (“%d%c”, a.x, a.c);func (struct n b) b.x=20;b.c=y;9、下面程序的运行结果是 struct int a;int *b; s4, *p; main ( ) int n=1, k;for(k=0; ka, (p+)-a); 10、下面程序的运行结果是 struct student int num; char name20; char sex; int age; ; struct student stu3 = 1001, “Li Lin”, M, 18, 1002, “Zhang Fun”, M, 19, 1004, “Wang Min”, F, 20 ; main() struct student *p; p = &stu1; printf(“%dn”,(p+)-num); 11、下面程序的运行结果是 #include “stdio.h”struct cmplx int x, y; cnum2=1,3,2,7;main() printf (“%dn”,cnum0.y*cnum1.x);12、下面程序的运行结果是 #include struct stu int num; char name10; int age; ;void fun (struct stu *p) printf(“%sn”, (*p).name); main() struct stu s3=9801,”zhang”,20,9802,”wang”,19,9803,”zhao”,18; fun (s+2);13、下面程序的运行结果是 #include main() union char c; int i; t; t.c=A; t.i=1; printf(“%d, %d”, t.c, t.i);14、下面程序的运行结果是 #include main() struct date int year, month, day; today;union long i; int k; char c; mix; printf(“ date:%dt”, sizeof(struct date); printf(“mix:%dn”,sizeof(mix); 提高题15、以下程序运行后的输出结果是_#include struct NODEint 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);16、下面程序的输出结果是_。#include main() union int i2;long k;char c4;r,*s=&r;s-i0=0x39;s-i1=0x38;printf(%cn,s-c0);17、以下程序的输出结果是_。#include main() union EXAMPLE struct int x,y;in;int a,b;e;e.a=1;e.b=2;e.in.x=e.a*e.b;e.in.y=e.a+e.b;printf(%d,%dn,e.in.x,e.in.y);18、下面程序的运行结果是 #include main() struct EXAMPLE union int x,y;in;int a,b;e;e.a=1;e.b=2;e.in.x=e.a*e.b;e.in.y=e.a+e.b;printf(%d,%dn,e.in.x,e.in.y);19、下面程序的运行结果是 #include int d5= 10, 20,30, 40,50;struct s int x, *y; a5=100,&d0,200,&d1,300,&d2,400,&d3,500,&d4; main() int i=0; printf(”%d ,%dt“, ai.x, *ai.y); printf(”%d ,%dt “, +ai.x, +*ai.y); printf(”%d,%dn“, a+i.x, *+ai.y); 20、下面程序的运行结果是 enum coin penny, nickel, dime, quarrer, half, dollar;char *name= “penny”,nickel”, “dime”, “quarrer”, “half”, “dollar”;main() enum cion money1, money2; money1=dime; money2=dollar; printf(%d %dt”, money1,money2); printf(“%s %sn”,name(int)money1, name(int)money2);三、完善程序(15题 一般题:提高题=2:1)一般题1、设有三人的姓名和年龄存在结构体数组中,以下程序输出年龄居中者的姓名和年龄。struct man char name20; int age;person=“li”, 18, ”wang”, 19, “zhang”, 20;main() int i, j, max, min; max=min=person0.age; for(i=1; i max) (1); else if(personi.agemin) (2); for(i=0; i 3; i+) if( personi.age!=max (3) personi.age!=min) printf(“%s %dn”, , personi.age); break; 2、以下程序按“选择排序”法对结构体数组a按字段num进行降序排列。#include #define N 8struct c int num; char name20;aN;void main() int i, j ,k, t;char na20; for (i=0; iN; i+) scanf(“%d%s”, &ai.num, ); for (i=0; iN-1;i+) (1) ; for (j=i+1; j ak.num) (2) ; if (i!=k) t=ai.num; ai.num=ak.num; (3) ;strcpy(na, ); strcpy(, ); (4) ; for (i=0; iN; i+) printf(“%d,%sn”, ai.num, );3、下面程序的功能是从键盘上顺序输入整数,直到输入的整数小于0时才停止输入。然后反序输出这些整数。#include struct data int x;struct data *link;*p;void input() int num;struct data *q;printf(Enter data:);scanf(%d, &num);if( numx = num;q-link = p;p=q;(3) ;main() printf(Enter data until datax);(5) ;4、下面程序的功能是从终端上输入个人的年龄、性别和姓名,然后输出。#include stdio.hstruct man char name20;unsigned age;char sex7;main ( ) struct man person5;data_in(person, 5);data_out(person, 5);data_in(struct man *p, int n ) struct man *q = (1) ;for( ;page, p-sex);(2) ;data_out( struct man *p, int n ) struct man *q = (3) ;for( ;pname, p-age, p-sex);5、以下函数creatlist用来建立一个带头结点的单链表,新的结点总是插入在链表的末尾。链表的头指针作为函数值返回,链表最后一个结点的next域放入NULL,作为链表结束标志。data为字符型数据域,next为指针域。读入时字符以#表示输入结束(#不存入链表)。 struct node char data; struct node * next; (1) creatlist( ) struct node * h, * s, * r; char ch;h=(struct node *) malloc(sizeof(struct node);r=h;while(ch=getchar( )!=# ) s=(struct node *)malloc(sizeof(struct node); s-data= (2) ; r-next=s; r=s;r-next= (3) ;return h;6、计算并输出复数的差。struct comp float re, im; ;struct comp *m( struct comp *x, struct comp *y) (1) ; z=( struct comp *) malloc( sizeof(struct comp); z-re=x-re-y-re; z-im=x-im-y-im; return (2) ;main() struct comp *t;,a, b; a.re=1; a.im=2; b.re=3; b.im=4; t=m ( (3) ); printf(“z.re=%f, z.im=%f”, t-re, t-im);7、用选择法对7个学生的成绩按升序排序,并输出排序后的学生的姓名和成绩。#include struct student char name10; float score; ;void sort (struct student *, int);void main() struct student stu7= lilin,97,zhang,76,wang,81, fun,61,tan,98,ren,64, wu,90 ; int i; sort( (1) , 7); for(i=0; i7; i+) printf(%s,%5.2fn, , stui.score ); void sort(struct student x , int n) int i,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论