第十一章作业 1.在PC机上使用C语言,若有如下定义: struct data int i; float f }a, 则结构变量a占用内存的字节数是 2.在PC机上使用C语言,若有如下定义: union data int i float f }a, 则结构变量a占用内存的字节数是 3.根据下面的定义,能打印出字母M的语句是 struct person( char name[ 9]; struct person class[ 10]=(John",17 4.以下程序运行结果 struct sl(char c[4],s struct s2(char cp struct sl ssl }s2={“ghi”,{“ jkI, mno”} printf("%c, %cn,, sl c[0], *sl s); printf("%s, %sIn, s2. cp, s2. ssl.S); printf("%S, %sn,++s2. cp, ++s2. ssl. s) 5.以下程序运行结果 truct s int as float b maino struct sx={1983.5,” zhang”}
第十一章作业 1. 在 PC 机上使用 C 语言,若有如下定义: struct data { int i; char ch; float f; }a; 则结构变量 a 占用内存的字节数是 2. 在 PC 机上使用 C 语言,若有如下定义: union data { int i; char ch; float f; }a; 则结构变量 a 占用内存的字节数是 3. 根据下面的定义,能打印出字母 M 的语句是 struct person { char name[9]; int age; }; struct person class[10]={“John “,17, “Paul”,19, “Mary”,18, “Adam”,16 }; 4. 以下程序运行结果 main() { struct s1{char c[4],*s; }s1={“abc”,”def”}; struct s2{char *cp; struct s1 ss1; }s2={“ghi”,{“jkl”,”mno”}}; printf(“%c,%c\n”,s1.c[0],*s1.s); printf(“%s,%s\n”,s1.c, s1.s); printf(“%s,%s\n”,s2.cp, s2.ss1.s); printf(“%s,%s\n”,++s2.cp, ++s2.ss1.s); 5. 以下程序运行结果 struct s{ int a; float b; char *c; }; main() { struct s x={19,83.5,”zhang”};
struct s*px=&x printf("%d%f%sIn,xa, x b, xc); printf("%d%f%sInPx->a, "px).b, px->c) printf(" %c%sn,"px->c-1, &'px->c 1; 6.以下程序运行结果 # include“ stdio.h char c[21 i union unx; xc[O]=10, xc[l]=I printf("n%d”,xi) 7.以下程序运行结果 int b: S[4] Int 4;i++) i.a=n; s[]b=s[]a+1; n=n+2 p=&s[0] printf("%d”,++p-xa) 8.以下程序的功能是统计链表中结点的个数,其中 first为指向第一个结点的指针(即为头 指针),请填空 struct link( char date struct link *next
struct s *px=&x; printf(“%d%f%s\n”,x.a,x.b,x.c); printf(“%d%f%s\n”,px->a,(*px).b,px->c); printf(“%c%s\n”,*px->c-1,&px->c[1]); } 6. 以下程序运行结果 #include “stdio.h” union un { int i; char c[2]; } main() { union un x; x.c[0]=10; x.c[1]=1; printf(“\n%d”,x.i); } 7. 以下程序运行结果 union ks { int a; int b; }; union ks s[4]; union ks *p; main() { int n=1,i; printf(“\n”); for(i=0;ia); printf(“%d”,++p->a); } 8. 以下程序的功能是统计链表中结点的个数,其中 first 为指向第一个结点的指针(即为头 指针),请填空 struct link{ char date; struct link *next; };
struct link*p, *first 9.以下min30函数的功能是:计算循环单链表frst中每3个相邻结点数据域中的和,并返 回其最小值,填空 first struct node int data struct node *link int min3 (struct node*first) i struct node p=first m3=p->data+p->link->data+p->link->link->data for(p=p->link, pl =first; p= p->link i m=p->data+-p->link->data+p->link->link->data; if( return(m3) 10.输入20个学生的姓名和年龄并存在结构数组中,设计一个程序从中查找年龄最大和最 小的学生的姓名和年龄并打印出来 ll.编程序:建立一个带有头指针的单向链表,链表结点中数据通过键盘输入,当输入数据 为-1时,表示输入结束 12.已知head指向一个单向链表,链表中每个结点包含数据域(data)和指针域(ink),请 编写程序实现如图所示链表的逆置 all all
… struct link *p,*first; int c=0; p=first; while( p->next!=null ) { c++ ; p= p->next ; } 9. 以下 min3()函数的功能是:计算循环单链表 first 中每 3 个相邻结点数据域中的和,并返 回其最小值,填空 struct node{ int data; struct node *link; int min3(struct node *first) { struct node *p=first; int m,m3; m3=p->data+p->link->data+p->link->link->data; for(p=p->link;p!=first;p= p->link ) { m=p->data+p->link->data+p->link->link->data; if( m3>m ) m3=m; return(m3); } main() { … } 10. 输入 20 个学生的姓名和年龄并存在结构数组中,设计一个程序从中查找年龄最大和最 小的学生的姓名和年龄并打印出来 11. 编程序:建立一个带有头指针的单向链表,链表结点中数据通过键盘输入,当输入数据 为-1 时,表示输入结束 12. 已知 head 指向一个单向链表,链表中每个结点包含数据域(data)和指针域(link),请 编写程序实现如图所示链表的逆置 first … … data link data link data link link data a b c null head data link data link data link head c b a null data link data link data link