C程序第8章习题参考答案.docx
- 文档编号:7772915
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:19
- 大小:17.33KB
C程序第8章习题参考答案.docx
《C程序第8章习题参考答案.docx》由会员分享,可在线阅读,更多相关《C程序第8章习题参考答案.docx(19页珍藏版)》请在冰豆网上搜索。
C程序第8章习题参考答案
习题8参考答案
一、单项选择题
DCCDADDDDB
二、填空题
①若干个数据项
②结构体成员
③定义结构体数据类型的变量
④同时存在
⑤同时
⑥需要存储区域最大的一个分配存储空间
⑦long*
⑧char*
⑨double*
三、阅读程序题
1.110,z
2.ascal
basic
b
3.5,3
4.51
60
21
5.liming19
6.abcdefghijk
四、程序设计题
//xt080401.cpp
#include
structcomp
{doublere;
doubleim;
};
typedefstructcompCOMP;
voidmain()
{COMPsub(COMPx,COMPy);
COMPa,b,res;
printf("Inputcomplexnuma:
");
scanf("%lf,%f",&a.re,&a.im);
printf("Inputcomplexnumb:
");
scanf("%lf,%f",&b.re,&b.im);
res=sub(a,b);
printf("res.re=%g,res.im=%g\n",res.re,res.im);
}
COMPsub(COMPx,COMPy)
{COMPt;
t.re=x.re-y.re;
t.im=x.im-y.im;
returnt;
}
//xt080402.cpp
#include
#include
voidmain()
{structnode
{intx;
structnode*next;
};
intn;
structnode*h=NULL,*p,*q;
printf("Inputanumber:
");
scanf("%d",&n);
while(n)
{p=(structnode*)malloc(sizeof(structnode));
p->x=n;
p->next=h;
if(!
h)
h=p;
elseif(n<=h->x)
{p->next=h;
h=p;
}
else
{q=h;
while(q->next&&n>q->next->x)
q=q->next;
p->next=q->next;
q->next=p;
}
printf("Inputanumber:
");
scanf("%d",&n);
}
p=h;
n=0;
while(p)
{printf("%8d",p->x);
if(++n%6==0)
printf("\n");
p=p->next;
}
printf("\n");
}
//xt080403.cpp
#include
#include
#defineN3
structstud
{charid[5];
charname[20];
intscore[4];
doubleave;
};
voidinputscore(structstud*rec);
voidprintscore(structstud*s);
voidsum_ave(structstud*s);
voidmain()
{structstudst[N];
inti;
for(i=0;i inputscore(&st[i]); sum_ave(st); printscore(st); } voidinputscore(structstud*rec) {inti; charin_buf[10]; gets(rec->id); gets(rec->name); for(i=0;i<4;i++) {gets(in_buf); rec->score[i]=atoi(in_buf); } } voidsum_ave(structstud*s) {intk,i,sum; for(k=0;k {sum=0; for(i=0;i<4;i++) sum+=s[k].score[i]; s[k].ave=sum/4; } } voidprintscore(structstud*s) {inti,k; for(k=0;k {printf("%s\t%s: ",s[k].id,s[k].name); for(i=0;i<4;i++) printf("%5d",s[k].score[i]); printf("\t%f\n",s[k].ave); } } //xt080404.cpp #include #include #defineN10 voidmain() {voidreverse(intv[],intn); intarr[N],i; printf("Inputtheelementofarray: \n"); for(i=0;i scanf("%d",&arr[i]); reverse(arr,N); for(i=0;i printf("%5d",arr[i]); printf("\n"); } voidreverse(intv[],intn) {structnode {intx; structnode*next; }; structnode*h=NULL,*p; inti; for(i=0;i {p=(structnode*)malloc(sizeof(structnode)); p->x=v[i]; p->next=h; h=p; } p=h; for(i=0;p;i++,p=p->next) v[i]=p->x; } //xt080405.cpp #include #defineN3 structstu {longid; doubleshu,yu,ave; }; voidmain() {structstus[N]; voidsort(structstuv[],intn); structstu*p; for(p=s;p {scanf("%ld,%lf,%lf",&(p->id),&(p->shu),&(p->yu)); p->ave=(p->shu+p->yu)/2; } sort(s,N); for(p=s;p printf("%ld--%5.2f%5.2f%5.2f\n",p->id,p->shu,p->yu,p->ave); } voidsort(structstuv[],intn) {inti,j,k; structstut; for(i=0;i {k=i; for(j=i+1;j if((*(v+j)).ave>(*(v+k)).ave) k=j; if(k! =i) t=*(v+i),*(v+i)=*(v+k),*(v+k)=t; } } //xt080406.cpp #include #include structlist {intd; structlist*link; }; typedefstructlistL; voidmain() {L*createlist(); voidprintlist(L*h); L*head; head=createlist(); printlist(head); } L*createlist() {L*p,*q,*ph; inta; ph=(L*)malloc(sizeof(L)); p=q=ph; printf("Inputtheelementoflist,-1forend.\n"); scanf("%d",&a); while(a! =-1) {p=(L*)malloc(sizeof(L)); p->d=a; q->link=p; q=p; scanf("%d",&a); } p->link=NULL; returnph; } voidprintlist(L*h) {L*p=h->link; while(p! =NULL) {printf("%5d",p->d); p=p->link; } printf("\n"); } //xt080407.cpp #include #include structlist {intd; structlist*link; }; typedefstructlistL; voidmain() {L*createlist(); voidprintlist(L*h); voidinsert(L*h,inta,intkey); inta,k; L*head; head=createlist(); printf("InputvalueforInsert.\n"); scanf("%d,%d",&a,&k); insert(head,a,k); printlist(head); } L*createlist() {L*p,*q,*ph; inta; ph=(L*)malloc(sizeof(L)); p=q=ph; printf("Inputtheelementoflist,-1forend.\n"); scanf("%d",&a); while(a! =-1) {p=(L*)malloc(sizeof(L)); p->d=a; q->link=p; q=p; scanf("%d",&a); } p->link=NULL; returnph; } voidprintlist(L*h) {L*p=h->link; while(p! =NULL) {printf("%5d",p->d); p=p->link; } printf("\n"); } voidinsert(L*h,inta,intkey) {L*s,*p,*q; s=(L*)malloc(sizeof(L)); s->d=key; q=h; p=h->link; if(p==NULL) {s->link=p; q->link=s; return; } while(p->d! =a&&p->link! =NULL) {q=p; p=p->link; } if(p->d==a) {s->link=p; q->link=s; } else {s->link=NULL; p->link=s; } } //xt080408.cpp #include #include structlist {intd; structlist*link; }; typedefstructlistL; voidmain() {L*createlist(); voidprintlist(L*h); voidinsert(L*h,inta,intkey); voidreverselist(L*h); inta,k; L*head; head=createlist(); printf("InputvalueforInsert.\n"); scanf("%d,%d",&a,&k); insert(head,a,k); printlist(head); reverselist(head); printlist(head); } L*createlist() {L*p,*q,*ph; inta; ph=(L*)malloc(sizeof(L)); p=q=ph; printf("Inputtheelementoflist,-1forend.\n"); scanf("%d",&a); while(a! =-1) {p=(L*)malloc(sizeof(L)); p->d=a; q->link=p; q=p; scanf("%d",&a); } p->link=NULL; returnph; } voidprintlist(L*h) {L*p=h->link; while(p! =NULL) {printf("%5d",p->d); p=p->link; } printf("\n"); } voidinsert(L*h,inta,intkey) {L*s,*p,*q; s=(L*)malloc(sizeof(L)); s->d=key; q=h; p=h->link; if(p==NULL) {s->link=p; q->link=s; return; } while(p->d! =a&&p->link! =NULL) {q=p; p=p->link; } if(p->d==a) {s->link=p; q->link=s; } else {s->link=NULL; p->link=s; } } voidreverselist(L*h) {L*p,*q; p=h->link; if(p! =NULL) {h->link=NULL; do {q=p->link; p->link=h->link; h->link=p; p=q; }while(p! =NULL); } } //xt080409.cpp #include #include typedefstructnode {intno; structnode*next; }NODE; voidmain() {intn,start,end,i,count; NODE*h,*p,*tail,*newh; printf("Inputthenumberofpeople: "); scanf("%d",&n); if(n<=0) {printf("nmustbe>=0! \n"); return; } printf("Inputthestartingpointandendingpoint: "); scanf("%d,%d",&start,&end); if(start<1||end<1) {printf("Dataerror! \n"); return; } newh=NULL; tail=(NODE*)malloc(sizeof(NODE)); h=tail; h->no=n; for(i=n-1;i>=1;i--) {p=(NODE*)malloc(sizeof(NODE)); p->no=i; p->next=h; h=p; } tail->next=h; h=tail; start=(start-1)%n; for(i=0;i h=h->next; for(count=n;count>1;count--) {start=(end-1)%count; for(i=0;i h=h->next; if(newh) {tail->next=h->next; tail=h->next; } else {newh=h->next; tail=newh; } h->next=h->next->next; } tail->next=h; tail=h; tail->next=NULL; count=0; if(n==1) newh=tail; while(newh) {printf("%5d",newh->no); newh=newh->next; if(++count%6==0) printf("\n"); } printf("\n"); } //xt080410.cpp #include #include typedefstructnode {floatcoef; intexp; structnode*next; }NODE; voidmain() {NODE*pa,*pb,*pc,*tail,*p,*q,*r; floatcoef; intexp,count; pa=(NODE*)malloc(sizeof(NODE)); pa->coef=0.0; pa->exp=-1;/*建立多项式A的头节点*/ tail=pa; do {printf("输入多项式A中每一项的系数和指数(指数小于0时结束): "); scanf("%f,%d",&coef,&exp); if(exp<0) break; p=(NODE*)malloc(sizeof(NODE)); p->coef=coef; p->exp=exp; tail->next=p; tail=p; }while (1); tail->next=NULL; pb=(NODE*)malloc(sizeof(NODE)); pb->coef=0.0; pb->exp=-1;/*建立多项式B的头节点*/ tail=pb; do {printf("输入多项式B中每一项的系数和指数(指数小于0时结束): "); scanf("%f,%d",&coef,&exp); if(exp<0) break; p=(NODE*)malloc(sizeof(NODE)); p->coef=coef; p->exp=exp; tail->next=p; tail=p; }while (1); tail->next=NULL; if(pa->next==NULL) pc=pb; elseif(pb->next==NULL) pc=pa; else {pc=(NODE*)malloc(sizeof(NODE)); pc->coef=0.0; pc->exp=-1;/*建立多项式C的头节点*/ pc->next=NULL; tail=pc; pa=pa->next; while(pa) {p=pb->next; while(p) {coef=pa->coef*p->coef; exp=pa->exp+p->exp; q=pc; while(q->next) {if(exp==q->next->exp) {q->next->coef+=coef; gotonext; } elseif(q->next->exp>exp) break; else q=q->next; } r=(NODE*)malloc(sizeof(NODE)); r->coef=coef; r->exp=exp; r->next=q->next; q->next=r; next: p=p->next; } pa=pa->next; } } p=pc; while(p->next) {if(p->next->coef==0.0) {q=p->next; p->next=q->next; free(q); } p=p->next; } printf("多项式A和多项式B的乘积为: \n"); p=pc; count=0; while(p->next) {printf("(%5.1f,%2d)",p->next->coef,p->next->exp); if(++count%6==0) printf("\n"); p=p->next; } printf("\n"); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序 习题 参考答案