在有n个学生的成绩表里,每条信息由姓名与分数组成,要求:1按分数高低次序,输出每个学生的名字,分数相同的为同一名次,2按名次输出每个学生的姓名与分数。

在有n个学生的成绩表里,每条信息由姓名与分数组成,要求:
1按分数高低次序,输出每个学生的名字,分数相同的为同一名次,
2按名次输出每个学生的姓名与分数。

/*
在有n个学生的成绩表里,每条信息由姓名与分数组成,要求:
1按分数高低次序,输出每个学生的名字,分数相同的为同一名次,
2按名次输出每个学生的姓名与分数。 
*/

#include <stdio.h>
#include <algorithm>//sort函数
using namespace std;//含 algorithm库 
#define n 15//学生个数 

typedef struct node{
	char name[31];//姓名 
	int grade;//成绩
}node,*pnode;

int cmp(node a,node b)
{
	return a.grade >= b.grade;
}

//打印结点数值 
void print_node(node stu[]);
int main()
{
	node student[n] = 
	{
		{"张三",99},
		{"李四",95},
		{"王麻子",99},
		{"张三",99},
		
		{"张五",35},
		{"王六",69},
	    {"张七",79},
		{"李八",25},
		
		{"王十",19},
		{"张十",79},
		{"李西奥",85},
		{"王德胜",79},
		
		{"张十一",59},
		{"李一筹",45},
		{"王澄澄",91}
	};
	
	sort(student,student + n,cmp); 
	
	print_node(student);
	
	return 0;
}

void print_node(node stu[])
{
	int rank = 1;//名次 
	for(int i = 0;i < n;i ++)
	{
		printf("第%d名 %s:%d\n",rank,stu[i].name,stu[i].grade);
		if(i + 1 < n && stu[i + 1].grade != stu[i].grade)//如果有后一位且与前一位分数不相同,则名次往后挪,否则名次不变 
		{
			rank ++;
		}
		else; 
	}
	return;
}

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值