对结构体排序(用C语言实现).doc

对结构体排序(用C语言实现).doc

ID:51704198

大小:38.95 KB

页数:6页

时间:2020-03-15

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

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

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

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

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

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

5、++){//is[i].num=rand()%1300+1;is[i].num=i+1;//编号.is[i].sex=rand()%2;//设定性别.is[i].math=rand()%100;//数学成绩.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、.{printf("%d%ld%d%d%d",is[i].num,is[i].sex,is[i].math,is[i].englisgh,is[i].sum);fprintf(fp,"%ld%d%d%d%d",is[i].num,is[i].sex,is[i].math,is[i].englisgh,is[i].sum);}printf("");//打印空行.fprintf(fp,"%c",'');qsort(is,N,sizeof(stu),CMP);//结构体排序.printf("%s",str1

7、);//打印提示串.fprintf(fp,"%s",str1);for(i=0;i0)//判断名次.{if(is[i].sum==is[i-1].sum)rank=temp;//如果成绩相同,则他们名次相同.elserank=i+1;//否则他的名次就与他是第几个被打印有关.}elserank=i+1;//第一个成绩毫无疑问是第1名.temp=rank;//记得保存当前人的名次,以备下一个参考.printf("%d%ld%d%d%d%d",rank,is[i].num,is[i].sex

8、,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. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。