![第六次上机实验内容多因素排序_第1页](http://file4.renrendoc.com/view/60d709ae1ece6445ea8a133e32217c4b/60d709ae1ece6445ea8a133e32217c4b1.gif)
![第六次上机实验内容多因素排序_第2页](http://file4.renrendoc.com/view/60d709ae1ece6445ea8a133e32217c4b/60d709ae1ece6445ea8a133e32217c4b2.gif)
![第六次上机实验内容多因素排序_第3页](http://file4.renrendoc.com/view/60d709ae1ece6445ea8a133e32217c4b/60d709ae1ece6445ea8a133e32217c4b3.gif)
![第六次上机实验内容多因素排序_第4页](http://file4.renrendoc.com/view/60d709ae1ece6445ea8a133e32217c4b/60d709ae1ece6445ea8a133e32217c4b4.gif)
![第六次上机实验内容多因素排序_第5页](http://file4.renrendoc.com/view/60d709ae1ece6445ea8a133e32217c4b/60d709ae1ece6445ea8a133e32217c4b5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
上机多因素排序91020343559608384851结构体类型的使用1.结构体类型的概念把不同类型的数据组合在一个类型之中,作为一个整体进行处理——结构体类型。2要表示日期structdate{intyear,month,day;};要表示学生情况structstudent{charname[20],number[9];floats1,s2,s3;};结构体类型32.结构体类型的声明结构体类型声明: struct结构体名 { 类型名1 成员名表1; 类型名2 成员名表2; ┇ 类型名n成员名表n; };关键字也称“域”;4结构体类型产品销售记录由产品代码dm(字符型4位),产品名称mc(字符型10位),单价dj(整型),数量sl(整型),金额je(长整型)四部分组成structproduct{chardm[5];charmc[11];intdj;intsl;longintje;}访问成员pl.dj,pl.dmsell[0].dj,sell[0].dmsell[10],pl;5[实例]假设学生的信息包括序号、姓名、平时成绩、上机成绩、笔试成绩和总评成绩,其中总评成绩的计算公式为
总评成绩=平时成绩×10%+上机成绩×40%+笔试成绩×50% 根据给定的平时成绩、上机成绩和笔试成绩计算总评成绩,并输出学生的信息。6声明结构体类型
structstudent { intno; charname[10]; floats1,s2,s3,total; };编程点拨:7在主函数中定义“structstudent”类型变量hou。main(){
}structstudenthou={0};就像float、int型一样使用。8main(){
}structstudenthou={0};为各个成员赋值并按照公式计算总评成绩。hou.no=5;strcpy(,”houhao”);hou.s1=90.0;hou.s2=87.0;hou.s3=92.0;hou.total=hou.s1*0.1+hou.s2*0.4+hou.s3*0.5;9main(){
}structstudenthou={0};hou.no=5;strcpy(,”houhao”);hou.s1=90.0;hou.s2=87.0;hou.s3=92.0;hou.total=hou.s1*0.1+hou.s2*0.4+hou.s3*0.5;输出各个成员的值。printf(”no=%d\nname=%s\n”,hou.no,);printf(”s1=%f,s2=%f,s3=%f\n”,hou.s1,hou.s2,hou.s3);printf(”total=%f\n”,hou.total);10main(){
}structstudenthou={0};hou.no=5;strcpy(,”houhao”);hou.s1=90.0;hou.s2=87.0;hou.s3=92.0;hou.total=hou.s1*0.1+hou.s2*0.4+hou.s3*0.5;printf(”no=%d\nname=%s\n”,hou.no,);printf(”s1=%f,s2=%f,s3=%f\n”,hou.s1,hou.s2,hou.s3);printf(”total=%f\n”,hou.total);hounos1s22字节16字节5hou90.092.028字节87.0s3totalname10字节结构体变量名.成员名11main(){
}structstudenthou={0};hou.no=5;strcpy(,”houhao”);hou.s1=90.0;hou.s2=87.0;hou.s3=92.0;hou.total=hou.s1*0.1+hou.s2*0.4+hou.s3*0.5;printf(”no=%d\nname=%s\n”,hou.no,);printf(”s1=%f,s2=%f,s3=%f\n”,hou.s1,hou.s2,hou.s3);printf(”total=%f\n”,hou.total);等价于structstudenthou={5,“houhao”,90.0,87.0,92.0};12main(){
}structstudenthou={0};hou.no=5;strcpy(,”houhao”);hou.s1=90.0;hou.s2=87.0;hou.s3=92.0;hou.total=hou.s1*0.1+hou.s2*0.4+hou.s3*0.5;printf(”no=%d\nname=%s\n”,hou.no,);printf(”s1=%f,s2=%f,s3=%f\n”,hou.s1,hou.s2,hou.s3);printf(”total=%f\n”,hou.total);scanf(“",&hou.no,,&hou.s1,&hou.s2,&hou.s3);%d%s%f%f%f13【实例】结构体数组中存放5个学生的姓名和身高,调用函数找出其中身高最高的学生,并在主函数中输出该学生的有关信息。
14声明结构体类型
structstudent{ charname[10]; intstature;};编程点拨:15#defineN5main(){}定义结构体类型数组和存放身高最高的学生的结构体变量为结构体数组元素赋值找身高最高的学生输出其信息structstudentstd[N]={0},stdmax={0};inti=0;for(i=0;i<N;i++){ printf(”name%d:”,i+1);gets(std[i].name); printf(”height%d:”,i+1);scanf(”%d”,&std[i].stature); getchar();}stdmax=seek(std);printf(”Thenameofthehigheststudentis:”);puts();printf(”Itsheightis%d\n”,stdmax.stature);stdmax=seek(std);structstudentseek(structstudent*p);16structstudentseek(structstudent*p){}定义存放最高学生信息的结构体变量假设第1个学生最高,将其信息放在变量中比较找最高的学生将该学生的信息返回到主函数structstudentmax={0},*q=NULL;max=*p;for(q=p;q<p+N;q++) if(max.stature<q->stature) max=*q;returnmax;可以将一个结构体变量的值整体赋给另一个结构体变量17structstudentseek(structstudentp[]){}该如何实现?18产品五个因素的比较排列问题19产品五个因素的比较排列,是结构体操作问题已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称mc(字符型10位),单价dj(整型),数量sl(整型),金额je(长整型)四部分组成。其中:金额=单价*数量计算得出。函数ReadDat()是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按产品代码从小到大进行排列,若产品代码相同,则按金额从小到大进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT8.DAT中。部分源程序已给出。请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。(第60套)20#include<stdio.h>#include<mem.h>#include<string.h>#include<conio.h>#include<stdlib.h>#defineMAX100typedefstruct{chardm[5];/*产品代码*/charmc[11];/*产品名称*/intdj;/*单价*/intsl;/*数量*/longje;/*金额*/}PRO;PROsell[MAX];voidReadDat();voidWriteDat();voidSortDat(){}voidmain(){memset(sell,0,sizeof(sell));ReadDat();SortDat();WriteDat();}
voidReadDat(){FILE*fp;charstr[80],ch[11];inti;
fp=fopen("IN.DAT","r");for(i=0;i<100;i++){fgets(str,80,fp);memcpy(sell[i].dm,str,4);memcpy(sell[i].mc,str+4,10);memcpy(ch,str+14,4);ch[4]=0;sell[i].dj=atoi(ch);memcpy(ch,str+18,5);ch[5]=0;sell[i].sl=atoi(ch);sell[i].je=(long)sell[i].dj*sell[i].sl;}fclose(fp);}
21编程点拨实际是一个结构体数组排序问题,采用比较交换排序产品代码从小到大进行排列:产品代码是结构体中的成员,并且产品代码是字符串,如何进行大小比较不能使用str1>str2进行比较大小只能使用strcmp()实现字符串比较:strcmp(str1,str2)>0,则str1大于str2产品代码相等,按金额排序如何处理代码22voidSortDat()
{
for(i=0;i<MAX-1;i++)
for(j=i+1;j<MAX;j++)
if(strcmp(sell[i].dm,sell[j].dm)>0)
{
t=sell[i];
sell[i]=sell[j];
sell[j]=t;
}
}else
if(strcmp(sell[i].dm,sell[j].dm)==0
&&(sell[i].je>sell[j].je)){
t=sell[i];
sell[i]=sell[j];
sell[j]=t;
}
关键点:用比较交换排序,比较两个字符串大小strcmp(sell[i].dm,sell[j].dm)如果代码相同,比较金额结构体变量间可以相互赋值inti,j;
PROt;23voidSortDat(){inti,j;PROswap;for(i=0;i<MAX-1;i++)for(j=i+1;j<MAX;j++)if(strcmp(sell[i].mc,sell[j].mc)>0||strcmp(sell[i].mc,sell[j].mc)==0&&sell[i].je>sell[j].je){s[i];sell[i]=sell[j];sell[j]=swap;}}24voidWriteDat(void){FILE*fp;inti;
fp=fopen("OUT8.DAT","w");for(i=0;i<100;i++){fprintf(fp,"%s%s%4d%5d%10Ld\n",sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je);}fclose(fp);}25其他类型在文件中有200个正整数,且每个数均在1000至9999之间。函数ReadDat()读取这200个数存放到数组aa中。请编制函数j
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年全球及中国机器人用立体摄像头行业头部企业市场占有率及排名调研报告
- 2025年全球及中国油藏模拟软件行业头部企业市场占有率及排名调研报告
- 2025年全球及中国电子保险丝芯片行业头部企业市场占有率及排名调研报告
- 2025-2030全球中低牌号无取向硅钢行业调研及趋势分析报告
- 2025年全球及中国特殊需求三轮车行业头部企业市场占有率及排名调研报告
- 2025年全球及中国超精密非球面磨床行业头部企业市场占有率及排名调研报告
- 2025-2030全球软件工程智能平台行业调研及趋势分析报告
- 2025-2030全球1P储能锂电池行业调研及趋势分析报告
- 2025年全球及中国漫画书出版商行业头部企业市场占有率及排名调研报告
- 2025年全球及中国自动血压脉搏测试仪行业头部企业市场占有率及排名调研报告
- 第一章 整式的乘除 单元测试(含答案) 2024-2025学年北师大版数学七年级下册
- JD37-009-2024 山东省存量更新片区城市设计编制技术导则
- 水利水电工程监理平行检测表部分
- 分部分项工程质量检验计划表
- 社区卫生服务中心医疗服务推荐病-2023版1-4-10
- HY/T 266-2018外压中空纤维超滤膜表面亲水性的测试接触角法
- 【英文原版小说】the things they carried《负荷》
- 领导干部如何管理压力与情绪课件
- 2022-2023年度神农中华农业科技奖科研和科普类推荐书和摘要表(样本)
- 大学成绩单中文(word版)
- 海南省儋州市各县区乡镇行政村村庄村名明细及行政区划代码居民村民委员会
评论
0/150
提交评论