导航:首页 > 源码编译 > 成绩排序算法

成绩排序算法

发布时间:2022-11-27 10:21:44

㈠ 编写c语言程序用三个函数求10个同学的平均分及成绩排序

1、写一个主函数,10个成绩放在一个数组里。
2、然后写一个求平均值的函数,返回平均值,用循环语句求和在求平均值,小学生应该都会求平均值。
3、再写一个排序算法,先模仿一个冒泡排序算法,最简单的排序算法。

这样不就三个函数了吗?,这个题主要让你初步掌握,数组,循环语句的使用,函数的调用,函数参数的传递,函数值的返回等。学习C就自己多练,多想这样会进步,代码就不写了吧,对你不好。

㈡ 对学生成绩表(只有总成绩),请分别用冒泡排序和快速排序算法,对成绩表按综合成绩非递减有序排序

冒泡排序是一种交换排序方式。设有n个数据依次放在数组元素a(1)至a(n)中,用冒泡法对这n个数据进行递增排序的过程为:先比较a(1)与a(2),若逆序则交换之,接着比较a(2)与a(3),若逆序就交换……依次进行,知道将a(n-1)与a(n)比较交换完,才算完成了第一轮比较交换。然后以同样规则进行第二次交换……一直到数据排好序为止。最坏情形下比较1/2 n(n-1)次,交换3/2 n(n-1)次。
快速排序是由着名计算机学家C.A.R.Hoare在起泡排序的基础上提出的一种高效率的排序算法。它的基本思想是:在待排序数列中选取一个元素(通常是第一个元素)x,按某一规律经过多次交换位置后,它移到某一位置,以此位置对原数列进行划分,使得得到的两个子数列对x来说符合排序规律。元素x称为此数列中的划分元素。接着按此方法对两个字数列再划分,直到得到不需要进一步划分的子数列为止。这一过程具有明显的递归性。
快速排序多数情况下比冒泡排序要高效,若需要算法或代码可以hi本人。

㈢ c语言程序设计 成绩排序

BiThrTree bt = NULL;
CreateBTree(bt);//生成一棵二杈排序树(输入单个字符,以#结束)
InOrderPrint_1(bt); //中序遍历输出结点(递归)
cout << endl;
BiThrTree BT = InOrderThreading(bt);//中序遍历二杈树,并将其中序线索化
InOrderTraverse_Thr(BT);//中序遍历线索二杈树的非递归算法, T 指向头结点
system("PAUSE");
return EXIT_SUCCESS;
}
void InOrderTraverse_Thr(BiThrTree T)//中序遍历线索二杈树的非递归算法, T 指向头结点
{
BiThrTree p = T->lchild; //p指向根结点
while (p != T) //空树或遍历结束时,p == T
{

㈣ 请问如何用c语言把100个同学的成绩按高低秩序排列出来了

我可以教你一个大概的思路,因为我现在网吧,
先定义一个结构体struct student,
里面包含{
char name[100];
float score;
};
然后定义scanf输入成绩,记得在定义个struct student指针类型(也是数组类型)
之后你在用冒泡排序法去只比较st->score里面数值的大小(先用for,再在里面用if判断),
再后把结构体之间的位置调换,(记得比较的是st->score,调换的是st)
t = st【i】;
st【i】=st【j】;
st【j】=t;
这样再输出就行了

㈤ 成绩分析中的 三率一分算名次 谁知道怎么算的

通俗的来讲,“三率”指的就是某个群体的优秀率、良好率、及格率;“一分”指的是平均分。当然,在分析“三率一分”的同时,可以分析很多其他的指标,故校领导说需要分析“三率一分”,我们不要简单地认为只有几个指标,可以从不同方面进行分析。
1、成绩录入名册。
在操作“一分三率”统计表之前,要先建立考试名册。考试名册按学校按班级按座位号排列,试卷亦按此顺序排放,查对试卷数与学生名册是否相符,是否有缺考。成绩录入时由一人读数一人录入一人检录,录完后再次核对。
2、学生分数排序。(以《一分三率表·五数总》为例)
按“学校(升或降序皆可)——班级(升序)——分数(降序)”排序。
【操作】:选定从姓名到成绩的列,执行“数据——排列” ,在复选框“主要关键字”栏选择“学校”列,在“次要关键字”栏选择“班级”列,在“主要关键字”栏选择“成绩”列,确定。
3、按班编写序号。用不同颜色按分数(因为一分三率是以班级评价)从高到低以01向下填充(为后面的三率查找人数服务)。
4、确定三率人数。
(1)确定优秀人数:公式“总人数×优秀率(15%)=优秀人数”。本例中,优秀人数应是:1000×15%=150(人),但由于最后一位的94分并列到164位,则取优秀人数为164。
(2)确定良好人数:公式“总人数×良好率(40%)=良好人数”。本表中,良好人数应是:1000×40%=400(人),但400位下84分还并列到404,则取良好人数为404人。
(3)确定及格人数:公式“总人数×及格率(80%)=及格人数”。本表中,及格人数应是:1000×80%=800(人),但52分并列到806,则取及格人数为806人。

㈥ 对全国高考分数排名用什么排序算法好在线等解答

应该是计数排序,因为高考成绩是值为0~750分的整数,而且就算分数有什么0.5,高考也会干脆搞四舍五入,或者直接不给0.5,来确保所有分值都是整数,给计数排序提供了可行性。
计数排序可以将时间复杂度降到最低,为o(n+r),n为人数(约1000万人!),r=满分+1=751;而简单排序法如冒泡 、选择、插入的时间复杂度都会达到o(n^2)。而且计数排序所用时间长度还比较稳定,最好与最坏的情况基本没有什么差距。
这样算来,计数排序在时间上整整领先了8个数量级,而如今处理器的频率都是几个GHz(10^9 Hz级别),还是多核的,10的8~9次方的处理次数在时间上不会造成过大的负担。
内存占用上,虽然这个算法有一定空间复杂度,为o(n+r),高考全国统一考号为14位,需要以长整数的格式存储(最大值约为9.223*10^18),所以每个考号占8个字节,总共8*(n+r)字节,折算下来大概80多MB,而且原始表单存储在硬盘里,整个计分程序的内存占用,满打满算也就是你用浏览器看几个网页的内存占用,这对现在的电脑不是轻轻松松?无论是处理速度还是内存占用,在高考总分排名上,计数排序都是最优方案,拥有最高效率。

再者,计数排序还可以带来一个不错的副产物,就是每个分值(或分段)的人数也可以在最后用表格的方式生成,在数据库内给考生排好序的同时,也给院校招生,与考生估测自己可以进哪个院校,都提供了方便。
总之,虽然我没有亲自参与过这个项目,我只是被排名,被院校挑选的,但是最后,我凭借自己所学的知识,推理出了高考分数的排名机制——计数排序。
补充知识:
计数排序,是给最大最小值差距不大的一组整数(整数的个数可以很多)排序的一种算法,例如高考总分0~750分,考试分数0~100(或150)分,之类的。它不是很依赖大小的比较,它主要的机制是,遍历整个原始表单,记住每个对应数值上的对象个数,很多时候也得存储这些对象对应的编号,这些事作完以后,再根据数值顺序,给出已经排序完毕的表单,还可以顺便生成每个数值,或数值段的人数。计数排序算法在处理特定任务上有较大优势。

㈦ (一)学生成绩排名 采用选择法,将学生成绩从高到低进行排序,再输入一个学生的成绩,将此成绩按照排序规

#include<stdio.h>
//#define num 10
//int a[10];
void main()
{
int a[10];
int studentNum;
int i;

void Ascending(int a[],int studentNum); //声明升序函数
void Descending(int a[],int studentNum);//声明降序函数
void Input(int a[],int studentNum);//插入新成绩函数
studentNum = 10;
printf("请输入%d个学生成绩\n",studentNum);
for(i = 0;i < studentNum;i++)
{
scanf("%d",&a[i]);
}

Descending(a,studentNum);
printf("经排序后的数为:\n");
for(i = 0;i < studentNum;i++)
{
printf("%d\t",a[i]);
}
Input(a,studentNum);
}

//升序排列
void Ascending(int a[10],int studentNum)
{
int i,j;
for(i = 0;i < studentNum;i++)
{
for(j = i + 1;j <= studentNum;j++)
{
if(a[j] < a[i])
{
int t = a[i];
a[i] = a[j];
a[j] = t;
}
}
}

}

//降序排列
void Descending(int a[10],int studentNum)
{
int i;
Ascending(a,studentNum);
for(i = 0;i < (studentNum - 1)/2;i++)
{
int t = a[i];
a[i] = a[studentNum - 1 - i];
a[studentNum - 1 - i] = t;
}
}

//插入新成绩函数
void Input(int a[10],int studentNum)
{
int b[11];
int i,newScore;
int con;
printf("是否要插入一个新成绩1/0:");
scanf("%d",&con);
if(con == 1)
{
printf("请输入新的成绩:");
scanf("%d",&newScore);
for(i = 0;i < studentNum;i++)
{
b[i] = a[i];
}
b[studentNum] = newScore;
studentNum++;
Ascending(b,studentNum);
printf("经升序后的数为:\n");
for(i = 0;i < studentNum;i++)
{
printf("%d\t",b[i]);
}
Descending(b,studentNum);
printf("\n经降序后的数为:\n");
for(i = 0;i < studentNum;i++)
{
printf("%d\t",b[i]);
}
Input(b,studentNum);
}
else
{
printf("程序结束!");
}
}

㈧ 1,先按语文降序排列,语文成绩相同的再按计算机升序排序.

输入"=总分*1000000+语文*1000+数学*1+等等*0.001“

也就是说把总分扩大,总分大的就大,总分相等就以语文大的为大,语文还相等就以数学,就此类推,最后还一样大。

输入“=RANK(E2,E$3:E$100)”。


(8)成绩排序算法扩展阅读

常见排序算法 :

快速排序、希尔排序、堆排序、直接选择排序不是稳定的排序算法,而基数排序、冒泡排序、直接插入排序、折半插入排序、归并排序是稳定的排序算法。

分类:

1、稳定排序:假设在待排序的文件中,存在两个或两个以上的记录具有相同的关键字,在用某种排序法排序后,若这些相同关键字的元素的相对次序仍然不变,则这种排序方法是稳定的。其中冒泡,插入,基数,归并属于稳定排序,选择,快速,希尔,归属于不稳定排序。

2、就地排序:若排序算法所需的辅助空间并不依赖于问题的规模n,即辅助空间为O(1),则称为就地排序。

㈨ 用结构体完成N个学生M名课程的成绩排序 用C语言编写

#include<stdio.h>


intmain()
{
structstudent
{
intstunum;
charstuname[20];
intstuscore1;
intstuscore2;
intstuscore3;
};

inti=0;
intj=0;
intrange=0;
structstudentstudents[100];
structstudenttemp;
intn=0;
printf("请输入学生总数: ");
scanf("%d",&n);

for(i=0;i<n;i++)
{
scanf("%d%s%d%d%d",&students[i].stunum,students[i].stuname,&students[i].stuscore1,&students[i].stuscore2,&students[i].stuscore3);
}

scanf("%d",&range);
switch(range)
{
case1:
{
for(i=0;i<n;i++)
{
for(j=0;j<n-1-i;j++)
{
if(students[j].stuscore1<students[j+1].stuscore1)
{
temp=students[j];
students[j]=students[j+1];
students[j+1]=temp;

}
if(students[j].stuscore1==students[j+1].stuscore1)
{
if(students[j].stunum>students[j+1].stunum)
{
temp=students[j];
students[j]=students[j+1];
students[j+1]=temp;
}


}
}
}
for(i=0;i<n;i++)
{
printf("%d%s%d%d%d ",students[i].stunum,students[i].stuname,students[i].stuscore1,students[i].stuscore2,students[i].stuscore3);
}
break;
}
case2:
{
for(i=0;i<n;i++)
{
for(j=0;j<n-1-i;j++)
{
if(students[j].stuscore2<students[j+1].stuscore2)
{
temp=students[j];
students[j]=students[j+1];
students[j+1]=temp;

}
if(students[j].stuscore2==students[j+1].stuscore2)
{
if(students[j].stunum>students[j+1].stunum)
{
temp=students[j];
students[j]=students[j+1];
students[j+1]=temp;
}


}
}
}
for(i=0;i<n;i++)
{
printf("%d%s%d%d%d ",students[i].stunum,students[i].stuname,students[i].stuscore1,students[i].stuscore2,students[i].stuscore3);
}
break;
}
case3:
{
for(i=0;i<n;i++)
{
for(j=0;j<n-1-i;j++)
{
if(students[j].stuscore3<students[j+1].stuscore3)
{
temp=students[j];
students[j]=students[j+1];
students[j+1]=temp;

}
if(students[j].stuscore3==students[j+1].stuscore3)
{
if(students[j].stunum>students[j+1].stunum)
{
temp=students[j];
students[j]=students[j+1];
students[j+1]=temp;
}


}
}
}
for(i=0;i<n;i++)
{
printf("%d%s%d%d%d ",students[i].stunum,students[i].stuname,students[i].stuscore1,students[i].stuscore2,students[i].stuscore3);
}
break;
}
}
return0;
}

㈩ 国考成绩计算方法是什么

2019年国家公务员考试笔试成绩计算有以下规定:

1.分数计算:一般情况下,计算方法为(行测+申论)/2=笔试总分,因为行测和申论的总分是200分而成绩计算是百分制,所以要除以2。

2、排名计算:当几个人笔试总成绩完全一样时,该几个人用同一个排名序号,在其后者按照人数序位给予。例如假设如果第一名是80分,有三个人都是79分,如果紧随其后的是78分,那么几人的排序是第一名80分,第二名三人79分,第五名78分。

3、排位顺序:如果两个人笔试成绩都一样,那么就按照行测成绩进行排序,所以像2中的三个79分的,前后顺序是按照行测顺序排名的。如果出现全部成绩都一样的情况(尽管概率很低),也是按照行测成绩来决定先后的。

另外,多说一些,在阅卷时,行测和申论的阅卷方式如下:

行测:常识和图形推理一般每题0.6分,其余文字部分一般0.8分,数量关系、资料分析一般每题1分;

申论:

小题是踩点给分,20分的题目中,做到有层次的一般是3分,能把原词都提炼出来的一般可以得到12分,能适当概括成为短语的得到5分,每个都是长篇大论写满的一般很难得到高分,一般都是8分左右。

大作文:紧扣材料的,包括观点和例子,总分30分;稍微有点文采的,加上5分,卷面要求是5分,实质上占到了10分左右。剩下的就是其他方面了。

阅读全文

与成绩排序算法相关的资料

热点内容
法国电影一个偷画 浏览:879
店长的h命令必须服从 浏览:94
cad填充命令是什么 浏览:870
java引用类型值类型 浏览:240
徐锦江叶子楣方唐镜 浏览:59
可以在线看片的网站 浏览:133
小米加密兔手机壁纸 浏览:613
2019程序员笔记本 浏览:477
武大小孩子厉害的电影有哪些 浏览:35
找一个可以看的网址 浏览:79
四个字的国外电影,小孩儿 浏览:411
推荐看片网站 浏览:652
主角叫林飞的小说是什么 浏览:683
闲置服务器能干什么工作 浏览:949
asdr q-2299123 浏览:987
中国最大尺度古装电影 浏览:695
电影和电视播放器 浏览:113
樱桃小说by小花喵 浏览:514
英国看片网站叫什么名字 浏览:676
法兰克plc编程软件 浏览:359