c程序設(shè)計(jì)第四版譚浩強(qiáng)第九章答案.docx

上傳人:小** 文檔編號(hào):13288720 上傳時(shí)間:2020-06-12 格式:DOCX 頁(yè)數(shù):15 大小:18.31KB
收藏 版權(quán)申訴 舉報(bào) 下載
c程序設(shè)計(jì)第四版譚浩強(qiáng)第九章答案.docx_第1頁(yè)
第1頁(yè) / 共15頁(yè)
c程序設(shè)計(jì)第四版譚浩強(qiáng)第九章答案.docx_第2頁(yè)
第2頁(yè) / 共15頁(yè)
c程序設(shè)計(jì)第四版譚浩強(qiáng)第九章答案.docx_第3頁(yè)
第3頁(yè) / 共15頁(yè)

下載文檔到電腦,查找使用更方便

5 積分

下載資源

還剩頁(yè)未讀,繼續(xù)閱讀

資源描述:

《c程序設(shè)計(jì)第四版譚浩強(qiáng)第九章答案.docx》由會(huì)員分享,可在線閱讀,更多相關(guān)《c程序設(shè)計(jì)第四版譚浩強(qiáng)第九章答案.docx(15頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、#include #include /* int days(int y,int m,int d) //計(jì)算天數(shù) { int days=0,i; int a[12]={31,28,31,30,31,30,31,31,30,31,30,31}; if(y%4==0&&y%100!=0||y%400==0) //判斷是否為閏年 a[1]+=1; if(m==1) return days; else { for(i=0;i

2、 days+=a[i]; days+=d; return days; } } struct date { int year; int month; int day; int days; }a; int main() { printf("enter date:"); scanf("%d %d %d",&a.year,&a.month,&a.day); a.days=days(a.year,a.month,a.day); printf("%d年%d月%d日是該年的第%d天\n",a.year,a.month,a.day,a.days)

3、; } */ /*#define N 10 //第3、4題時(shí)N為5,第5題時(shí)N為10 struct student { int num; char name[20]; float score[3]; float ave; //第3、4、5題共用一個(gè)結(jié)構(gòu)體類型 }stu[N]; */ /* void print(struct student a[]) { int i; printf("學(xué)號(hào) 姓名\t三門課成績(jī)\n"); for(i=0;i

4、tf("%ld %s\t%-5.1f %-5.1f %-5.1f\n",a[i].num,a[i].name,a[i].score[0],a[i].score[1],a[i].score[2]); } int main() { int i; printf("請(qǐng)輸入%d個(gè)學(xué)生的信息:學(xué)號(hào)、姓名、三門課成績(jī):\n",N); for(i=0;i

5、stu); } */ /* void print(struct student a[]) { int i; printf("學(xué)號(hào) 姓名\t三門課成績(jī)\n"); for(i=0;i

6、nt i; printf("請(qǐng)輸入%d個(gè)學(xué)生的信息:學(xué)號(hào)、姓名、三門課成績(jī):\n",N); for(i=0;i

7、0102 chen 60 64 90 10103 guo 80 78 90 10104 lu 80 64 90 10105 xu 60 65 90 10106 huang 90 78 90 10107 chen 70 66 90 10108 rong 90 72 90 10109 yang 50 63 90 10110 zhang 50 71 90 */ /* int main() { int i,m=0; float average=0; printf("請(qǐng)輸入%d個(gè)學(xué)生的信息:學(xué)號(hào)、姓名、三門課成績(jī):\n",N); for(i=0;i

8、 { scanf("%d %s %f %f %f",&stu[i].num,&stu[i].name,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]); stu[i].ave=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2])/3; average+=stu[i].ave/N; } for(i=1;istu[m].ave) m=i; printf("三門課程總平均成績(jī)?yōu)?%5.1f\n成績(jī)最高的學(xué)生是:\

9、n學(xué)號(hào):%d\n姓名:%s\n三門課成績(jī):%5.1f,%5.1f,%5.1f\n平均成績(jī):%6.2f\n",average,stu[m].num,stu[m].name,stu[m].score[0],stu[m].score[1],stu[m].score[2],stu[m].ave); } */ /* #define N 13 //定義人數(shù) struct a { int num; //原來(lái)的序號(hào) int count; //報(bào)數(shù)數(shù)目 struct a *next; };

10、 int main() { int i,j=1; struct a *p1,*p2,b[N]; p1=b; for(i=0;inext!=p1) //p1的next成員指向自己時(shí)表明只剩最后一

11、個(gè)人 { p1->count=j; //報(bào)數(shù) if(j==2) p2=p1; //p2的作用是標(biāo)記報(bào)數(shù)為2的人 if(j==3) { j=1; p2->next=p1->next; //將報(bào)數(shù)為3的next成員賦值給上一個(gè)報(bào)數(shù)為2的next成員,使之指向下一個(gè)報(bào)數(shù)為1的//成員; } else j+=1; p1=p1->next; //p1指向下一個(gè)count不為3的成員 } printf("最后留在圈子的人原來(lái)的序號(hào)為:%d\n",p

12、1->num); } */ /* # define L sizeof(struct student) struct student { long num; float score; struct student *next; }; int n; struct student *creat(void) //生成單向動(dòng)態(tài)鏈表的函數(shù) { struct student *head; struct student *p1,*p2; n=0; p1=p2=malloc(L); scanf("%ld,%f",&p1->

13、num,&p1->score); head=NULL; while(p1->num!=0) { n+=1; if(n==1)head=p1; else p2->next=p1; p2=p1; p1=malloc(L); scanf("%ld,%f",&p1->num,&p1->score); } p2->next=NULL; return head; } void print(struct student *head) //輸出鏈表的函數(shù) { struct student *p=head; prin

14、tf("\nnow,these records are:\n"); while(p!=NULL) { printf("%ld %5.1f\n",p->num,p->score); p=p->next; } } struct student *del1(struct student *head,long num) //刪除指定節(jié)點(diǎn)的函數(shù),方法一,指定刪除節(jié)點(diǎn)的數(shù)據(jù) { struct student *p1,*p2; p1=head; if(p1->num==num) return head=p1->next; else {

15、 while(p1->num!=num) { p2=p1; p1=p1->next; } p2->next=p1->next; p1->next=NULL; return head; } } struct student *del2(struct student *head,int n) //方法二,指定刪除節(jié)點(diǎn)序號(hào) { struct student *p1,*p2; int i=1; p1=head; if(i==n) return head=p1->next; else {

16、 while(i++next; } p2->next=p1->next; p1->next=NULL; return head; } } int main() { struct student *head; long num; //int n; head=creat(); print(head); printf("\n輸入要?jiǎng)h除學(xué)生的學(xué)號(hào):"); //printf("\n輸入

17、要?jiǎng)h除節(jié)點(diǎn)序號(hào):"); scanf("%ld",&num); //scanf("%d",&n); head=del1(head,num); //head=del2(head,n); print(head); } */ /* # define L sizeof(struct student) struct student { long num; float score; struct student *next; }; int n; struct student

18、*creat(void) //生成單向動(dòng)態(tài)鏈表的函數(shù) { struct student *head; struct student *p1,*p2; n=0; p1=p2=malloc(L); scanf("%ld,%f",&p1->num,&p1->score); head=NULL; while(p1->num!=0) { n+=1; if(n==1)head=p1; else p2->next=p1; p2=p1; p1=malloc(L); scanf("%ld,%f",&p1-

19、>num,&p1->score); } p2->next=NULL; return head; } void print(struct student *head) //輸出鏈表的函數(shù) { struct student *p=head; printf("\nnow,these records are:\n"); while(p!=NULL) { printf("%ld %5.1f\n",p->num,p->score); p=p->next; } } struct student *del1(struct studen

20、t *head,long num) //刪除指定節(jié)點(diǎn)的函數(shù),num為指定刪除節(jié)點(diǎn)的數(shù)據(jù) { struct student *p1,*p2; p1=head; if(p1->num==num) return head=p1->next; else { while(p1->num!=num) { p2=p1; p1=p1->next; } p2->next=p1->next; p1->next=NULL; return head; } } struct student *

21、insert(struct student *head,struct student *p,int n) //插入節(jié)點(diǎn)的函數(shù),n為新節(jié)點(diǎn)序號(hào) { struct student *p1,*p2; int i=1; p1=head; if(i==n) { p->next=p1; head=p; } else { while(i++next; } p2->next=p; p->next=p1; } return head; }

22、 int main() { struct student *head,*p; int n; long num; head=creat(); print(head); printf("\n輸入要?jiǎng)h除學(xué)生的學(xué)號(hào):"); scanf("%d",&num); head=del(head,num); print(head); p=malloc(L); //為插入的新節(jié)點(diǎn)開(kāi)辟單元,否則p

23、的值不確定 printf("\n輸入要添加學(xué)生的學(xué)號(hào),成績(jī),序號(hào):"); scanf("%ld,%f,%d",&p->num,&p->score,&n); head=insert(head,p,n); print(head); } */ /* # define L sizeof(struct student) struct student { int num; float score; struct student *next; }; int n; struct student *creat(void) //生成單向動(dòng)態(tài)鏈

24、表的函數(shù) { struct student *head; struct student *p1,*p2; n=0; p1=p2=malloc(L); scanf("%d %f",&p1->num,&p1->score); head=NULL; while(p1->num!=0) { n+=1; if(n==1)head=p1; else p2->next=p1; p2=p1; p1=malloc(L); scanf("%d %f",&p1->num,&p1->score); } p2->next=NULL

25、; return head; } void print(struct student *head) //輸出鏈表的函數(shù) { struct student *p=head; printf("\nnow,these records are:\n"); while(p!=NULL) { printf("%d %5.1f\n",p->num,p->score); p=p->next; } } struct student *sort(struct student *head) //建立鏈表排序函數(shù) { stru

26、ct student *p1,*p2; int t; float s; p1=head; p2=p1->next; while(p1&&p2) //不能寫(xiě)為p1,否則當(dāng)p1指向最后一個(gè)結(jié)點(diǎn)時(shí),最后一句循環(huán)語(yǔ)句出問(wèn)題 { while(p2) { if(p1->num>p2->num) { t=p1->num; s=p1->score; p1->num=p2->num; p1->score=p2->score; p2->num=t; p2->

27、score=s; p2=p2->next; } else //不能省略else語(yǔ)句,否則遇到p1->numnum時(shí)無(wú)限循環(huán) p2=p2->next; } p1=p1->next; p2=p1->next; } return head; } struct student *cat(struct student *head1,struct student *head2) //建立鏈表合并函數(shù) { struct student *p,*t; p=head1; while(p) {

28、 t=p; //循環(huán)結(jié)束時(shí)t將指向a鏈表的最后一個(gè)指針 p=p->next; } t->next=head2; return head1; } int main() { struct student *a,*b; printf("輸入鏈表a:\n"); a=creat(); printf("輸入鏈表b:\n"); b=creat(); print(sort(cat(a,b))); } */ /*測(cè)試數(shù)據(jù) 10018 89 10016 64 10014 81 10012 94 0 0 100

29、17 67 10015 68 10013 76 10011 85 0 0 */ /* # define L sizeof(struct student) struct student { long num; char name[20]; struct student *next; }; int n; struct student *creat(void) //生成單向動(dòng)態(tài)鏈表的函數(shù) { struct student *head; struct student *p1,*p2; n=0; p1=p2=ma

30、lloc(L); scanf("%ld %s",&p1->num,p1->name); head=NULL; while(p1->num!=0) { n+=1; if(n==1)head=p1; else p2->next=p1; p2=p1; p1=malloc(L); scanf("%ld %s",&p1->num,p1->name); } p2->next=NULL; return head; } void print(struct student *head) //輸出鏈表的函數(shù) { str

31、uct student *p=head; printf("\n現(xiàn)在鏈表a為:\n"); while(p!=NULL) { printf("%ld %s\n",p->num,p->name); p=p->next; } } struct student *delsame(struct student *a,struct student *b) //從a中刪去與b相同學(xué)號(hào)的節(jié)點(diǎn) { struct student *p1,*p2,*p3; long num; int s,k=0; p3=p1=a;p2=b; while(p1)

32、{ s=0; num=p1->num; while(p2) { if(p2->num!=num) p2=p2->next; else { s=1; break; } } if(s==1) p3->next=p1->next; //若a最后一個(gè)相同,p3的指針數(shù)據(jù)為null else { p3=p1; //每找到一個(gè)與b不相等的指針時(shí),p3指向它 k+=1; //每找到一個(gè)與b不相等的指針時(shí),k累加1 if(

33、k==1) //找到第一個(gè)與b不相等的指針時(shí),將頭指針賦值給a a=p1; } p1=p1->next; //p1指向下一個(gè)指針 p2=b; //p2重新指向鏈表b開(kāi)頭 } if(k==0) //k=0表明a,b鏈表相同,返回null return a=NULL; else return a; } int main() { struct student *a,*b; printf("輸入鏈表a:\n"); a=creat(); printf("輸入鏈表b:\n")

34、; b=creat(); a=delsame(a,b); print(a); } */ /* #define L sizeof(struct inf) struct inf { long num; int age; char name[20]; char sex; struct inf *next; }; int n; struct inf *creat(void) //生成單向動(dòng)態(tài)鏈表的函數(shù) { struct inf *head; struct inf *p1,*p2; n=0; p1=

35、p2=malloc(L); scanf("%ld %s %c %d",&p1->num,p1->name,&p1->sex,&p1->age); head=NULL; while(p1->num!=0) { n+=1; if(n==1)head=p1; else p2->next=p1; p2=p1; p1=malloc(L); scanf("%ld %s %c %d",&p1->num,p1->name,&p1->sex,&p1->age); } p2->next=NULL; return head; } void prin

36、t(struct inf *head) //輸出鏈表的函數(shù) { struct inf *p=head; printf("\nnow,these inf are:\n"); while(p!=NULL) { printf("%ld %s %c %d\n",p->num,p->name,p->sex,p->age); p=p->next; } } struct inf *delage(struct inf *head,int a) //刪除指定年齡節(jié)點(diǎn)的函數(shù) { struct inf *p1,*p2; p

37、1=head; while(p1->age==a) p1=p1->next; head=p1; p2=p1; while(p1->next!=NULL) { if(p1->age==a) { p2->next=p1->next; p1=p1->next; } else { p2=p1; p1=p1->next; } } if(p1->age==a) p2->next=NULL; return head; } int main() { struct inf *head;

38、int a; head=creat(); print(head); printf("\n輸入要?jiǎng)h除的年齡:"); scanf("%d",&a); head=delage(head,a); print(head); } */ /*測(cè)試數(shù)據(jù) 10009 chen f 24 10010 wang m 28 10011 li f 28 10012 zhao m 28 10013 chen f 24 10014 wei m 25 10015 yang f 26 10016 tian m 28 10016 tian m 28 10017 mei f 27 10018 liu m 28 10019 chen f 24 */

展開(kāi)閱讀全文
溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!