C_北理工乐学_结构

C_北理工乐学_结构

58. 学生成绩排序

/* 如果有优化方案评论我啊 */
/为什么代码没有高亮?/

大家参加了期末考试,成绩出来后老师要对 n 个学生进行成绩汇总和排序。要求程序按成绩降序进行排序。在排序过程中对于成绩相同的学生,要按照输入数据的顺序进行排列。例如:有5名学生的成绩:
zhang1,90
zhang2,91
zhang3,99
zhang4,91
zhang5,98

则排序结果应该为:
zhang3,99
zhang5,98
zhang2,91
zhang4,91
zhang1,90

>请注意例题中“zhang2”和“zhang4”的排列顺序。

输入:
第一行为将要输入的学生数量n
从第二行起后面连续 n 行数据,每行为一名学生的姓名(长度不超过20个字符,不包括空格),考试成绩(int)

输出:
排序后的结果。每行为一名学生的姓名和成绩。

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
	int num;
	int i,j,t=0;
	char inf[10000];
    int m[100];
    int temp;
    int flag;
	struct o
	{
		char name[1000];
		int score;
		int no;
	}student[100];
	/*输入学生个数*/
	scanf("%d",&num);  
	for(i=0;i<num;i++)
	{   student[i].no=i;     //标记序号
	     t=0;
	     flag=0;
		scanf("%s",inf);
		/*输入姓名*/
		for(j=0;inf[j]!=',';j++)
		{
		student[i].name[j]=inf[j];
	    }
	    student[i].name[j]='\0';    //添加姓名尾标
	    /*输入成绩*/
	    for(j++;inf[j]!='\0';j++)
	    {
	    	m[t]=inf[j]-'0';
	    	t++;
		}
		student[i].score=0;
		for(j=0;j<t;j++)
		student[i].score=m[j]*pow(10,t-j-1)+student[i].score;  //计算成绩
	}
	/*降序排序*/
	for(i=0;i<num;i++)
	for(j=i+1;j<num;j++)
	if(student[i].score<student[j].score&&student[i].no<student[j].no)
	{
	  temp=student[i].no;
	  student[i].no=student[j].no;
	  student[j].no=temp;	
	}
	/*分数相同根据姓名排序*/
	/*因为玄学把单独拿出来,否则测试用例1错误*/
	for(i=0;i<num;i++)
	for(j=i+1;j<num;j++)
    if(student[i].score==student[j].score)
      {
	  for(t=0;student[j].name[t]!='\0'&&student[i].name[t]!='0';t++)
      if(student[j].name[t]>student[i].name[t]&&student[j].no<student[i].no)
      {
      	temp=student[i].no;
	  student[i].no=student[j].no;
	  student[j].no=temp;	
	
	  }
     }
	/*输出*/
	for(i=0;i<num;i++)
	for(j=0;j<num;j++)
	if(student[j].no==i)
	{
		for(t=0;student[j].name[t]!='\0';t++)
		printf("%c",student[j].name[t]);
		printf(",");
		printf("%d\n",student[j].score);
	}
}

在这里插入图片描述

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
北理工乐学数据结构B是指北方工业大学的一门课程,该课程主要教授数据结构的相关知识和技巧。数据结构是计算机科学中非常重要的一门基础课程,它研究的是如何组织和存储数据,以便能够高效地访问和操作数据。 学习数据结构B有以下几个方面的好处: 首先,掌握数据结构B可以提高算法设计和实现的能力。数据结构是算法的基础,通过学习数据结构B,可以更好地理解和应用各种常用的数据结构,如数组、链表、栈、队列、树、图等。这些数据结构的灵活运用可以帮助我们设计出更高效、更优化的算法。 其次,学习数据结构B可以提高问题解决能力。数据结构B课程中会有大量的编程实践,通过解决各种实际问题,可以锻炼自己的问题分析能力和解决问题的思维方式。这对于今后进行软件开发和工程实践都有很大的帮助。 此外,数据结构B还能培养学生的团队合作意识和沟通能力。在课程中,学生通常需要与同学合作完成课程作业和项目,这可以培养学生的团队协作意识和解决问题的能力。 总之,北理工乐学数据结构B是一门对于计算机科学专业学生来说十分重要的课程。通过学习数据结构B,不仅可以提高自己的算法设计能力,还能够锻炼问题解决能力和团队合作意识。这些都对今后的学习和职业发展都有很大的帮助。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值