当前位置:首页 > 11第十一章结构体和联合体练习
}e;
e.a=1;e.b=2; e.in.x=e.a*e.b; e.in.y=e.a+e.b;
printf(“%d,%d\\n”,e.in.x,e.in.y);
}
10、以下程序的执行结果是 。 #include
union u {
char * name; int age; int income; }s;
s.name=”WANGLING”; s.age=28;
s.income=1000;
printf(“%d\\n”,s.age); } 11、以下程序中使用一个结构体变量表示一个复数,然后进行复数加法和乘法运算。根据复数的定义,其代数式为:A=a+bi,则:复数的加法定义为:
(a+bi)+(c+di)=(a+c)+(b+d)i 复数的乘法定义为:
(a+bi)(c+di)=(ac-bd)+(bc+ad)i
请在程序的空白处填入一条语句或一个表达式。
#include
float real,virtual; }; main() {
struct mulp_number a,b,sum,mul; printf(“输入a.real、a.virtual、
b.real、b.virtual:”);
scanf(“%f%f%f%f”,&a.real,&a.virtual,
&b.real,&b.virtual);
sum.real= (1) ; sum.virtual= (2) ;
mul.real= (3) — (4) ; mul.virtual= (5) + (6) ;
printf(“sum.real=%f,sum.virtual=%f\\n”,
sum.real,sum.virtual);
printf(“mul.real=%f,mul.virtual=%f\\n”,
mul.real,mul.virtual); } 12、以下程序用于在结构体数组中查找分数最高和最低的同学姓名和成绩。请在程序中的空白处填入一条语句或一个表达式。 #include
int max,min,i,j; static struct {
char name[8]; int score;
}stud[5]={“李萍”,92,”王兵”,72,”钟虎”,83,”孙逊”,60,”徐军”,88}; max=min=1 for (i=1;i<5;i++)
if (stud[i].score>stud[max].score)
(1) ; else if (stud[i].score 13、以下函数dele(h,x)用于删除一个整数单链表中值为x的结点,h是链表的首指针,删除成功返回0,否则返回-1,链表的结点结构定义如下: struct link { int data; struct link *next; }; 链表的首结点data域存放该链表中整数的个数,如果链表中整数个数为0,则h—>data为0,h—>next为NULL,而h不指向NULL,find(h,x)函数用于在首指针为h的链表中查找值为x的结点,找到时返回一 个指向x的前趋的指针,否则返回NULL。函数dele(h,x)和find(h,x)的定义如下。请在程序中的空白处填入一条语句或一个表达式。 struct link *find(h,x) struct link *h; int x; { struct link *p, *q; p=h—>next; q=h; while (p!=NULL&&p—>data!=x) {q= (1) ; p= (2) ; } if (p= =NULL) return (NULL); return( (3) ); } dele(h,x) struct link *h; int x; { struct link *q, *find(); if (!(h—>data)) return(-1); if ((q=find(h,x))!= (4) ) { struct link *p; p=q—>next; q—>next= (5) ; free(struct link *p); h—>data--; return(0); } return(-1); } 14、以下程序是对两个数x和y的正确性进行判断:若0<=x {Right,Less0,Great100,MinMaxErr}; char *ErrorMessage[ ]={“输入数据正确”, ”小于0错误”,”大于100错误”,”x>y错误”}; main() { int status,x,y; do { printf(“输入两个数(x,y):”); scanf(“%d%d”,&x,&y); status= (1) ; printf(ErrorMessage[ (2) ]); }while (status!=Right); printf(“Result=%d”,x*x+y*y); } int error(int min,int max) { if (max int x; char *y; struct tree *tpi; }t[ ]={{1,”pascal”,0},{3,”basic”,0}}; main() {struct tree *p=t; char c,*s; s=++p—>y; printf(“%s\\n”,s); s=++p—>y; printf(“%s\\n”,s); c=*p—>y; printf(“%c\\n”,c); c=*p++—>y; printf(“%c\\n”,c); c=*p—>y++; printf(“%c\\n”,c); c=(*p—>y)++; printf(“%c\\n”,c); }
共分享92篇相关文档