78.对学生成绩进行排序
2015-07-07 21:43
603 查看
函数fun的功能是:对N名学生的学习成绩。按从高到低的顺序找出前m(m<=10)名学生来,并将这些学生数据存放在一个动态分配的连续存储区域内,此存储区的首地址作为函数值返回。
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<alloc.h> #include<string.h> #define N 10 typedef struct ss { char num[10]; int s; }STU; STU *fun(STU a[], int m) { STU b , *t; int i, j, k; t = (STU *)calloc(sizeof(STU), m); for (i = 0;i < N;i++) b[i] = a[i]; for (k = 0;k < m;k++) { for (i = j = 0;i < N;i++) if (b[i].s>b[j].s) j = i; t[k] = b[j]; b[j].s = 0; } return t; } outresult(STU a[], FILE *pf) { int i; for (i = 0;i < N;i++) fprintf(pf,"No=%s Mark=%d\n", a[i].num, a[i].s); fprintf(pf, "\n\n"); } int main() { STU a = { {"A01",81},{"A02",89},{"A03",66}, {"A04",87},{"A05",77},{"A06",90}, {"A07",79}, {"A08",61},{"A09",80}, {"A10",71} }; STU *pOrder; int i, m; printf("****The Original data****\n"); outresult(a, stdout); printf("\nGive the number of student who have bettrer score:"); scanf("%d", &m); while (m > 10) { printf("\nGive the number of the students who have detter score: "); scanf("%d", &m); } pOrder = fun(a, m); printf("****The Result****\n"); printf("The top :\n"); for (i = 0;i < m;i++) printf("%s %d\n", pOrder[i].num, pOrder[i].s); free(pOrder); system("pause"); return 0; }
相关文章推荐
- [一车大师]微信运营心得
- 【LeetCode】232. Implement Queue using Stacks
- android反射组件 (一个)java 它们的定义annotation基础知识
- STL之内存管理
- 开始玩hadoop 11 --Hbase 入门 shell基础命令
- c++强制类型转换:dynamic_cast、const_cast 、static_cast、reinterpret_cast
- 设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1
- HTTP协议简介
- Java知多少(完结篇)
- 七月二号
- 破解TexturePacker加密资源 —— 使用IDA
- hdu 1719 Friend 数学推导
- OpenSSL windows 下编译
- 【学习笔记】【OC语言】第一个OC程序
- Implement Queue using Stacks
- 求三角形面积
- 学术牛人读外文文献
- 理解C++ dynamic_cast
- 人脸识别技术大总结—Face Detection & Alignment
- 判断主力强控盘股顶底的四个技巧