当前位置:首页 » 编程语言 » c语言的成绩排序

c语言的成绩排序

发布时间: 2023-01-14 05:59:57

c语言 怎么对成绩排序

#include <stdlib.h>

int cmp(const void *a, const void *b)
{
student *x=(student*)a;
student *y=(student*)b;
if(x->score[0] > y->score[0])//升序排序(从小到大) 如果>改成<,就是降序排序(从大到小)
return 1;
return 0;
}
//上面函数放在struct student下面,需要该结构
//排序方式可以灵活调整,上面我只是用第一门分数进行比较
//你也可以用其它分数进行比较,多写2个函数就行,如int cmp2(const void*a,const void*b)等等。

//排序函数

qsort(stu,STU_NUM,sizeof(stu[0]),cmp);
//stu是数组名,STU_NUM是数组元素个数,cmp就排序方式(可以替换为cmp2等等)

Ⅱ C语言成绩排序

#include<bits/stdc++.h>
usingnamespacestd;

structdata{
charst1[233],st2[233];
doublea,b,c;
}a[233];

intmycomp(constdata&a,constdata&b){
return((a.a+a.b+a.c)<(b.a+b.b+b.c));
}

intmain(){
intn=1;
while(scanf("%s%s%lf%lf%lf",&a[n].st1,&a[n].st2,&a[n].a,&a[n].b,&a[n].c)!=EOF)
n++;
n--;
sort(a+1,a+n+1,mycomp);
for(inti=1;i<=n;i++)
printf("%s%s%.2lf%.2lf%.2lf ",a[i].st1,a[i].st2,a[i].a,a[i].b,a[i].c);
}

Ⅲ C语言怎么进行成绩的排序

#include<stdio.h>
int main()
{
int a[10],i,j,t,k;
printf("请以次输入10个学生的成绩:");
for(i=0;i<10;i++)scanf("%d",&a[i]);
for(i=0;i<9;i++)
{
k=i;
for(j=i;j<10;j++)
if(a[j]>a[k])k=j;
if(i!=k)
{
t=a[i];
a[i]=a[k];
a[k]=t;
}

}
printf("由高到低排序输出成绩:\n");
for(i=0;i<10;i++)
printf("%d\n",a[i]);
return 0;
}

Ⅳ 用C语言编程:从键盘输入10个学生的成绩,由高到低排序输出成绩

你好,我们这里需要用到数组镶套使用for函数以及冒泡算法,具体的代码如下。

#include <iostream>

using namespace std;

int main()

{

int s [10], i, j, t;

cout << "输入10个数:";

for (i = 0; i < 10; i++)

{

cout << "请输入第" << i+1 << "名学生的成绩;" << endl;

cin >> s[i];

}

for (i = 0; i<10; i++)

{

for (j = 0; j<9 - i; j++)

if (s[j]<s[j + 1])

{

t = s[j + 1];

s[j + 1] = s[j];

s[j] = t;

}

}

cout << "成绩由高到低为;";

for (i = 0; i<10; i++)

cout << s[i]<<" " ;

}

以下为效果图

Ⅳ c语言用指针做成绩表高到低排序…怎么做呀

给你讲个思路 学过太久了 不翻自己以前的模板就不会了

不知道你们要求的指针是什么意思,如果严格规定是链表就很难了

先说简单的

第一张

voidsort(int*score,intn)//score是保存成绩的数组n是人数
{
inti,j;
for(i=0;i<n-1;i++)//这里要跑n-1次循环每次选出剩下元素中最大的放到前面
{
intmaxx=i;//那么最后只剩两个元素时只要选一次就好
for(j=i+1;j<n;j++)//扫第i个元素之后的元素
{
if(score[maxx]<score[j])
maxx=j;
}
inttemp=score[i];
score[i]=score[maxx];
score[maxx]=temp;
}
return;
}//排序完毕



第二种

首先你肯定建好了一个链表 (这个链表不会建你这题真很难)

然后把你的链表切开 (有没有初始头结点? 就是不保存数据 但是依旧是一个节点防止链表为空的节点 没有的话把链表从第一个节点后面切开 有的话切第二个节点之后的)

切开后就变成了两条链表 比如 (-1)--1--4--6--8--9--7--5--1 切开就是 (-1)--1

4--6--8--9--7--5--1

两条链表的头节点都要保存(不然你就找不到了)

从第二条链表 (长的那条)中拿出第一个节点 断开 然后试着往第一条链表中插入

比第一个节点的值大? 插到它之前 否则往后走 直到遇到一个比他大的节点 插到它之后

循环插入之后,这条链表就是有序的了

(其实链表构建的时候你就可以构建一条有序的链表 )

Ⅵ C语言按成绩排序问题

tc调试通过 #include<stdio.h> #define NUM 50 main() { int i,j; float n; struct student{ char name[50];/*学生姓名*/ float point;/*成绩*/ }stu[NUM],temp; printf("请依次输入学生姓名及对应成绩\n"); for(i=0;i<NUM;i++) { scanf("%s",stu[i].name); scanf("%f",&n); n=stu[i].point; } for(i=0;i<NUM;i++) for(j=i+1;j<NUM;j++) if(stu[i].point<stu[j].point) { temp=stu[i]; stu[i]=stu[j]; stu[j]=temp; } printf("下面为排好序的学生姓名及对应的成绩"); for(i=0;i<NUM;i++) printf("%s:%f\n",stu[i].name,stu[i].point); }

Ⅶ 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语言的学生成绩排序问题

#include <stdio.h>
#include <stdlib.h>

int main() {
struct student {
int num;
float scores;
};
student *stu = new student;
float insert = 0, temp = 0;
int i = 0;
for (; insert != -1; i++) {
printf("请输入学生成绩(结束输入-1):");
scanf("%f", &insert);
stu[i].num = i + 1;
stu[i].scores = insert;
}
for (int m = 0; m < i - 2; m++) {
for (int n = 0; n < i - 2; n++) {
temp = stu[n].scores;
if (temp < stu[n + 1].scores) {
stu[n].scores = stu[n + 1].scores;
stu[n + 1].scores = temp;
temp = stu[n].num;
stu[n].num = stu[n+1].num;
stu[n+1].num = (int)temp;
}
}
}
for (int j = 0 ; j < i - 1 ; j++){
printf("%s%d%s\t%s%d\t%s%.2f\n","第",j+1,"名:","号数:",stu[j].num,"成绩:",stu[j].scores);
}
system("PAUSE");
return 0;
}

Ⅸ C语言学生成绩排序程序

#include "stdio.h"

void main()
{
int i,j;
float A[11],t;

for(i=0;i<10;i++)
{
printf("第%d个学生成绩:\n",i+1);
scanf("%f",&A[i]);
}

for(i=0;i<10;i++)
{
for(j=0;j<10-i-1;j++)
{
if(A[j]<A[j+1])
{
t=A[j];
A[j]=A[j+1];
A[j+1]=t;
}
}
}

printf("插入学生成绩:\n");
scanf("%f",&t);
if(t<A[9]) A[10]=t;
else if(t>A[0])
{
for(i=9;i>=0;i--)
A[i+1]=A[i];
A[0]=t;
}
else
{
for(i=9;i>=1;i--)
{
A[i+1]=A[i];
if(A[i]<=t && A[i-1]>=t)
{
A[i]=t;
break;
}
}
}
for(i=0;i<11;i++)
printf("%g ",A[i]);
}

Ⅹ C语言 成绩排序

do{
scanf("%s %d",st[i].name,&st[i].score);
if(st[i].score>=0&&st[i].score<=100)
break;
}while(1);
使用这个语句输入。
第二个问题:
现在实行的C语言标准一般都C89标准,C89标准是不支持变长数组的,只有C99标准才支持。(变长数组就是长度是一个变量)
如果真想在C89下使用变长数组,那就只能用malloc和free开辟空间来实现
int n = 0;
scanf("%d",&n);
struct student *st = (struct student *)malloc(n * sizeof(struct student));
这样,st可以直接当一个数组来用,st[4]类似的加下标都没问题(数组=指针=字符串,我说原则,char数组=字符串)
不要忘了最后用free(st);释放获得的空间,不然会造成内存浪费的……

热点内容
无敌脚本盒子 发布:2025-07-14 21:50:37 浏览:955
dbscan聚类python 发布:2025-07-14 21:36:09 浏览:31
海岛图怎么配置枪 发布:2025-07-14 21:35:07 浏览:324
安卓备忘录怎么转苹果去 发布:2025-07-14 20:57:16 浏览:115
加密货币app 发布:2025-07-14 20:46:57 浏览:555
医院防汛演练方案与脚本 发布:2025-07-14 20:41:11 浏览:780
公网ip做域服务器地址 发布:2025-07-14 20:40:13 浏览:53
php获取几 发布:2025-07-14 20:22:20 浏览:376
旧安卓如何刷入最新安卓 发布:2025-07-14 20:16:14 浏览:763
服务器或网络不给力是什么意思 发布:2025-07-14 20:15:36 浏览:318