对结构体排序(用c语言实现)

对结构体排序(用c语言实现)

ID:34762584

大小:65.18 KB

页数:6页

时间:2019-03-10

对结构体排序(用c语言实现)_第1页
对结构体排序(用c语言实现)_第2页
对结构体排序(用c语言实现)_第3页
对结构体排序(用c语言实现)_第4页
对结构体排序(用c语言实现)_第5页
资源描述:

《对结构体排序(用c语言实现)》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、/********************************************实践发现用qsort()对数组排序和对结构体排序其实并*没有什么明显的不同,将一般数组换为结构体数组即可,同*时在排序辅助函数中作相似的变化即可.*同时也发现,程序中的N值似乎不能很大,如N不到52000本人的*小本就OVER了,程序直接警告退出.*?出现的问题是:当N取值为51699时,程序运行一点点就自动结束了,*即程序没有运行完就结束了,也没有结束,反正挺正常的,不知道什么原因.?*经反复验证,在本机上N的最大取值为51698.*************************

2、******************/#include#include#include#defineN51698typedefstructstudent{intnum;//由N自动编号.intsex;//非0即1.intmath;//数学成绩.intenglisgh;//英语成绩.intsum;//成绩总和.}stu;/***********************************按总分降序排列.*此段程序对于qsort()函数来说是必须的.**********************************/

3、intCMP(conststu*a,conststu*b){if(a->sum>b->sum)return-1;elseif(a->sum==b->sum)return0;elsereturn1;}/***************************************每个学生的各科成绩由系统随机生成,学生数*N可由上面设定.*本程序既打印到屏幕上又生成了一个文本文件stu.txt.*结构体排序将在主函数里实现.**************************************/intmain(){stuis[N];longi,rank,temp;//分

4、别为控制变量和名次,上一个人的名次.FILE*fp;char*str="numsexmathenglishsum";//字符串.char*str1="ranknumsexmathenglishsum";fp=fopen("stu.txt","w");//以只写方式打开文件.srand((unsigned)time(NULL));//随机种子.for(i=0;i

5、is[i].englisgh=rand()%100;//英语成绩.is[i].sum=is[i].math+is[i].englisgh;//计算总成绩.}printf("%s",str);fprintf(fp,"%s",str);//将提示字符串写入文件.for(i=0;i

6、s[i].math,is[i].englisgh,is[i].sum);}printf("");//打印空行.fprintf(fp,"%c",'');qsort(is,N,sizeof(stu),CMP);//结构体排序.printf("%s",str1);//打印提示串.fprintf(fp,"%s",str1);for(i=0;i0)//判断名次.{if(is[i].sum==is[i-1].sum)rank=temp;//如果成绩相同,则他们名次相同.elserank=i+1;//否则他的名次就与他是第几个被打印有关.}el

7、serank=i+1;//第一个成绩毫无疑问是第1名.temp=rank;//记得保存当前人的名次,以备下一个参考.printf("%d%ld%d%d%d%d",rank,is[i].num,is[i].sex,is[i].math,is[i].englisgh,is[i].sum);fprintf(fp,"%ld%d%d%d%d%d",rank,is[i].num,is[i].sex,is[i].math,is[i].englisgh,is[i].sum);}fclose(fp);//关闭文件.return0;}

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。