




已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第九章91定义一个结构体变量(包括年、月、日)。计算该日在本年中是第几天,注意闰年问题。解:Structint year;int month;int day;date;main()int days; printf(“Input year,month,day:”); scanf(“%d,%D,%d”,&date.year,&date.month,&date.day); switch(date.month)case 1: days=date.day; break; case 2: days=date.day+31; break; case 3: days=date.day+59; break; case 4: days=date.day+90; break; case 5: days=date.day+120; break;case 6: days=date.day+31; break; case 7: days=date.day+181; break; case 8: days=date.day+212; break;case 9: days=date.day+243; break;case 10: days=date.day+273; break;case 11: days=date.day+304; break;case 12: days=date.day+334; break;if(date.year%4=0&date.year%100!=0|date.year%400=0)&date.month=3)days+=1;printf(“n%d/%d is the %dth day in%d.”,date.month,data.day,days,date,year);9.2写一个函数days,实现上面的计算。由主函数将年、月、日传递给days 函数,计算后将日数传回主函数输出。解:struct y_m_dint year:int month;int day;date;intdays(struct y_m_d date1)int sum;switch(data.month)case 1:sum=date1.day; break;case 2:sum=date1.day+31; break;case 3:sum=date1.day+59; break;case 4:sum=date1.day+90; break;case 5:sum=date1.day+120; break;case 6:sum=date1.day+151; break;case 7:sum=date1.day+181; break;case 8:sum=date1.day+212; break;case 9:sum=date1.day+243; breakcase 10:sum=date1.day+243; breakcase 11:sum=date1.day+243; breakcase 12:sum=date1.day+243; break;9.3编写一个函数print,打印一个学生的成绩数,该数组中有5个学生的数据记录,每个记录包括num、name、sore3,用主函数输入这些记录,用print函数输出这些记录。解:#define N 5struct studentchar num6; char name8; int score4;stuN;main()int I,j ; for(I=0;IN;I+)printf(“Input score of student %d:n”,I+1); printf(“no.:”); scanf(“%s”,stui.num); printf(“name:”); scanf(“%s”,); for(j=0;j3;j+) printf(“score%d:”j+1); scanf(“%d”,&stui.scorej);printf(“n”);print(stu);print(struct student stu6)int I,j; printf(“%5s%10s”,stui.num,); for(j=0;j3;j+) printf(“%9d”,stui.scorej); print(“n”);9.4在上题的基础上,编写一个函数input,用来输入5个学生的数据记录。解: #define N 5 struct student char num6; char name8;int score4stuN;input(struct student stu)int I,j;for(I=0;IN;I+)printf(“input scores of student %d:n”,I+1);printf(“NO.:”);scanf(“%s”,stui.num);printf(“name: ”);scanf(“%s”, );for(j=0;j3;j+)printf(“score%d:”,j+); scanf(“%d”, &stui.scorej);printf(“n”);9.5 有10个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入10个学生的数据,要求打印出3门课的总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课成绩)解:#define N 10struct studentchar num6char name8int score4float avr;stuN;main()int I,j,max,maxi,sum;float average;for(I=0;IN;I+)printf(“nInput scores of student %d:n”,I+1); printf(“NO.:”); scanf(“%s”,stui.num); printf(“name”); scanf(“%s”,);for(j=0;j3;j+)printf(“score %d:”,j+1); scanf(“%d”, &stui.scorej);average=0;max=0;maxi=0;for(i=0;i3;i+)sum=0;for(j=0;jmax)max=sum;maxi=I;average/=N;printf(“NO. name score1 score2 score3 averagen”);for(I=0;IN;I+)printf(“%5s%10s”,stui.num, );for(j=0;j3;j+)printf(“%9d”,stui.scorej);printf(“%8.2fn”,stui.avr);printf(“average=%6.2fn”,average);printf(“The highest score is:%s,score total:%d.”,max);9.6 编写一个函数new,对n个字符开辟连续的存储空间,此函数应返回一个指针,指向字符串开始的空间。New(n)表示分配n个字节的内存空间。解:new函数如下:#define NULL 0#define NEWSIZE 1000char newbufNEWSIZE;char *newp=newbuf;char *new(int n)if (newp+n=newbuf)&(pnewbuf+NEWSIZE) newp=p;9.8已有a、b亮光链表,每个链表中的结点包括学好、成绩。要求把两个链表合并,按学号升序排列。解: #include#define NULL 0#define LENsizeof(struct student)strut studentlong num;int scor;struct student *next ;struct student listA,listB;int n,sum=0;main()struct student *creat(void);struct student *insert(struct student *,struct student *);void print(struct student *);stuct student *ahead , *bhead,*abh;printf(“ninput list a:n”);ahead=creat();sum=sum+|n;abh=insert(ahead,bhead);print(abh);struct student *creat(void)struct student *p1,*p2,*head;n=0;p1=p2=(struct student *)malloc(LEN);printf(“input number&scores of student:n”);printf(“if number Is 0,stop inputing.n”);scanf(“%ld,%d”,&p1-num,&p1-score);head=NULL;while(p1-num!=0)n=n+1;if(n=1)head=p1;else p2-next =p1;p2=p1;p1=(struct student *)malloc(LEN);scanf(“%ld,%d”,&p1-num,&p1-score);p2-next=NULL;return(head);struct student *insert(struct student *ah,struct student *bh)struct student *pa1 , *pa2,*pb1,*pb2;pa2=pa1=ah;pb2=pb1=bh;do while(pb1-numpa1-num)&(pa1-next!=NULL)pa2=pa1;pa1=pa1-next;if(pb-numnum)if(ah=pa1)ah=pb1;else pa2-next=pb1;pb1=pb1-next;pb2-next=pa1;pa2=pb2;pb2=pb1;while(pa1-next!=NULL)|(pa1=NULL&pb1!=NULL);if(pb1-numpa1-num)&(pa1-next=NULl) ap1-next=pb1;return(ah);void print(struct student *head)struct student *p;printf(“%ld%dn”,p-num,p-score);p=p-next;while(p!=NULL);9.9 13个人围成一圈,从第1个人开始顺序报号1、2、3。凡报到“3”者退出圈子。找出最后留在圈子中的人原来的序号。解:#define N 13struct personint number;int nextop;linkN+1;main()int I,count,h;for(I=1;I=N;I+)if(I=N) linki.nextp=1; else linki.nextp=I+1; linki.number=I;printf(“n”);count=0;h=N;printf(“sequence that person2 leave the circle:n”);while(countN-1)I=0; while(I!=3) h=linkh.nextp; if(linkh.number) I+;printf(“%4d”,linkh.number);linkh.number=0;count+;printf(“nThe last one is”);for(I=1;ii=N;I+) if(linki.number)printf(“%3d”,lini.number);9.10有两个链表a和b,设结点中包含学号、姓名。从1链表中删去与b链表中有相同学号的那些结点。解:#define LA 4#define LB 5#define NULL 0struct studentchar nump6; char name8; struct student *next;ALA,bLB;main()struct student aLA=“101”,”Wang”,“102”,”LI”,“105”,”zhang”,“106”,”Wei”;struct studentbLB=“103”,”Zhang”,“104”,”Ma”,“105”,”Chen”,“107”,”Guo”,“108”,”Lui”;int I,j;struct student *p, *p1,*p2,*pt,*head1,*head2; head1=a;head2=b;printf(“list a :n”);for(p1=head1,i=1;p1next=a+I;printf(“%8s%8sn”,p1-num,p1-name);p1=p1-next;p-next=NULL;printf(“n list b:n”);for(p2=head2,I=1;p2next=b+I;printf(“%8s%8sn”,p2-num,p2-name);p2=pa-next;p-next=NULL;printf(“n”);p1=head1;while(p1!=NULL)p2=head2;while(p2!=NULL&strcmp(p1-num,p2-num)!=0)p2=p2-next;if(strcmp(p1-num,p2-num=0) if(p1=head1) head1=p1-next; else p-next=p1-next;p=p1;p1=p1-next;p1=hedad1;printf“n result:n”;while(p1!=NULL)printf(“%7s %7sn”,p1-num,p1-name);p1=p1-next;9.11建立一个链表,每个结点包括:学号、姓名、性别、年龄。输入一个年龄,如果链表中的结点所包含的年龄等于此年龄,则将此结点删去。解:#define NULL 0 #define LEN sizeof(struct student) struct student char num6; char name8; char sex2; int age; stuct student *next;stu10;main()struct student *p,*pt,*head;int I,length,iage,flag=1;int find=0;while(flag=1)printf(“input length of list(10):”);scanf(“%d”,&length);if(length10)flag=0;for(I=0;Inext=p; pt=p; ptintf(“NO:”); scanf(“%s”,p-num);prntf(“name:”);scanf(“%s”,p-name);printf(“sex:”);scanf(“%s”,p-sex);printf(“age:”);scanf(“%s”,p-age);p-next=NULL;p=head;printf(“n NO. name sex agen”);while(p!=NULL)printf(“%4s%8s%6s%6dn”,p-num, p-name, p-sex, p-age); p=p-next; printf(“Input age:”);scanf(“%d”,&iage);pt=head;p=pt;if(pt-age=iage)p=pt-next;head=pt=p;find=1;else pt=pt-next;while(pt!=NULL)if(pt-age=iage)p-next=pt-next;find=1;else p=pt;pt=pt-next; if(!find)printf(“Not found%d.”,iage); p=head; printf(“n NO.name sex agen”); while(p!=NU
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电商直播基地项目2025年社区服务与居民参与度评估报告
- 莱赛激光新质生产力
- 2025年人际交往与沟通能力测试卷及答案
- 图文转换表格类课件
- 2025年单位安全重点部位周查情况记录
- 2025年“全国安全生产月”《安全知识》答题活动备考模拟题(含答案)
- 工程重大危险方案百度(3篇)
- 塑石工程施工方案(3篇)
- 装饰工程探店方案设计(3篇)
- 新型建房工程施工方案(3篇)
- T-BSRS 128-2024 核医学放射性废液快速处理技术要求
- 《血小板功能障碍与血栓形成》课件
- 《融资攻略》课件
- TCTBA 005-2024 TCECA-G 0326-2024 合同能源管理招标规范 轨道交通
- 工勤岗转管理岗申请书
- 特种设备定期检验与维护管理
- 2025年上海闵行区高三一模高考英语模拟试卷(含答案详解)
- 《陕西省分布的国家重点保护野生植物名录》
- 2025年国网数科控股公司招聘高校毕业生37人(第一批)高频重点提升(共500题)附带答案详解
- 食管肿瘤护理查房
- 2024公路水运工程工地建设标准化指南
评论
0/150
提交评论