c语言按总分高低排序函数 c语言总成绩排序

C语言按总分由高到低排序

#includestdio.h

创新互联服务项目包括文登网站建设、文登网站制作、文登网页制作以及文登网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,文登网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到文登省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

#includestdlib.h

typedef struct Student

{

double score[4];

double sum;

double avg;

}stu;

void save(int n)

{

FILE *w = fopen("score.dat","w");

printf("Please input %d students' 4 scores:\n",n);

int i;

double score[4];

double sum;

for(i=0;in;i++)

{

sum = 0;

scanf("%lf%lf%lf%lf" ,score[0],score[1],score[2],score[3]);

sum = score[0]+score[1]+score[2]+score[3];

fprintf(w,"%lf\t%lf\t%lf\t%lf\t%lf\t%lf\n" ,score[0],score[1],score[2],score[3],sum,sum/4);

}

fclose(w);

return;

}

void read(stu a[])

{

FILE *r = fopen("score.dat","r");

int i=0;

while(fscanf(r,"%lf%lf%lf%lf%lf%lf" ,a[i].score[0],a[i].score[1],a[i].score[2],a[i].score[3],a[i].sum,a[i].avg)!= EOF)

{

i = i+1;

}

fclose(r);

return;

}

void sort(stu a[],int n)

{

int i;

int j;

stu tmp;

for(i=n-1;i0;i--){

for(j=0;ji;j++){

if(a[j].sum  a[j+1].sum){

tmp = a[j];

a[j] = a[j+1];

a[j+1] = tmp;

}

}

}

return;

}

void output(stu a[],int n)

{

FILE *w = fopen("score.dat","w");

int i;

for(i=0;in;i++)

{

fprintf(w,"%lf\t%lf\t%lf\t%lf\t%lf\t%lf\n" ,a[i].score[0],a[i].score[1],a[i].score[2],a[i].score[3],a[i].sum,a[i].avg);

}

fclose(w);

}

int main()

{

stu a[128];

int  n;

while(scanf("%d",n) != EOF)

{

if(n = 0) break;

save(n);

read(a);

sort(a,n);

output(a,n);

}

return 0;

}

用函数的调用编程:输入n个学生的m门成绩,并按总分由高到低将名字排序

第一步:抽象出算法数据结构。首先学生总数是n,而每个学生拥有m个成绩,即对应一个n中的i,有m个数据与之对应。因此可以得到结论,采用二维数组来储存n个学生m门成绩。按照总分排序,即将每个i对应的m门成绩加起来进行排序即可。

第二步:具体算法(c语言伪代码)

#include stdio.h

#include stdlib.h

#define MaxVertexNum 100

void order(int num[][],int n,in m)

{

int i,j;

for(i=0;in;i++)

{

for(j=2;jm;j++)

{

num[i][1]=num[i][1]+num[i][j]

}

}

int temp;

for(i=0;in;i++)

{

for(j=0;jn;j++)

{

if(num[0][1]num[i][1])

{

num[0][1]= num[i][1];

}

}

}

}

int main(int argc, char *argv[])

{

int n,m,i,j;

printf("请输入学生的个数n和成绩门数m,用空格分开\n");

scanf("%d %d",n,m);

int scores[n-1][m];

//输入成绩

for(i=0;in;i++){

printf("请输入第%d个学生的成绩:\n",i);

scores[i][0]=i;

for(j=1;jm;j++)

{

scanf("%d",scores[i][j]);

}

}

//开始排序

system("PAUSE");

return 0;

}

C语言,请编写函数fun,它的功能是:按分数的高低排列学生的记录,高分在前。

定义结构体类型的变量,用于临时储存需要被交换的结构体(tmp = a[i]; a[i] = a[j]; a[j] = tmp;

)。跟交换两个int类型变量数值的道理是一样的。例如:int a = 1, b = 2, tmp; tmp = a; a = b; b = tmp; // 然后a和b的值就对调了。

要求用c语言编写,将总分排序(由高到低),并按总分从高到低输出成绩表

#includestdio.h

#includestdlib.h

struct test

{

char num[3];

char name[20];

char sex[10];

int  run;

int fw;

int yw;

int swim;

int total;

}a[10];

void main()

{

int i,j;

struct test b;

FILE *fp;

fp=fopen("1.txt","r");

if(fp==NULL)

{

printf("文件打开错误!\n");

exit(0);

}

for(i=0;i10;i++)

fscanf(fp,"%s        %s     %s    %d      %d              %d        %d                %d\n",a[i].num,a[i].name,a[i].sex,a[i].run,a[i].fw,a[i].yw,a[i].swim,a[i].total);

fclose(fp);

for(i=0;i9;i++)

for(j=0;j10-i;j++)

if(a[j].totala[j+1].total)

{

b=a[j];

a[j]=a[j+1];

a[j+1]=b;

}

printf("\n编号  姓名  性别  5km  俯卧撑  仰卧起坐  400m游泳  总分\n");

for(i=0;i10;i++)

printf("%s   %s    %s    %d    %d       %d       %d       %d\n",a[i].num,a[i].name,a[i].sex,a[i].run,a[i].fw,a[i].yw,a[i].swim,a[i].total);

printf("\n");

}

好了这下满足你的要求了!

!!!!!!!!对了,你自己改下文件名字哈!我为了方便就没用你写的那个文件名!


网站标题:c语言按总分高低排序函数 c语言总成绩排序
当前网址:http://scyanting.com/article/hpsccd.html