精华内容
下载资源
问答
  • PTA学生成绩排序-C语言详解

    千次阅读 2020-12-10 21:48:05
    7-72 学生成绩排序 (20分) 给出一组学生名单(姓名和成绩),请输出按成绩从大到小排序后的结果(名次和姓名)。成绩相同的人拥有相同的名次,且按姓名的字典序从小到大排列。题目保证学生姓名没有重复。 输入格式: ...

    7-72 学生成绩排序 (20分)

    给出一组学生名单(姓名和成绩),请输出按成绩从大到小排序后的结果(名次和姓名)。成绩相同的人拥有相同的名次,且按姓名的字典序从小到大排列。题目保证学生姓名没有重复。

    输入格式:

    第一行给出不大于10000的整数N。 接下来N行,每行给出学生姓名和成绩,以空格分隔。学生姓名不超过20个字符。

    输出格式:

    共输出N行,每行包含对应的学生排名和姓名,以空格分隔。

    输入样例:

    7
    KongDezhen 94
    FuTaotao 93
    HuYu 94
    XuJiecen 94
    WuSuqi 96
    ChenDa 93
    HuNianbo 95

    输出样例:

    1 WuSuqi
    2 HuNianbo
    3 HuYu
    3 KongDezhen
    3 XuJiecen
    6 ChenDa
    6 FuTaotao

    #include<stdio.h>
    #include<string.h>
    struct student{
    	char name[25];
    	int num;
    };
    int cmp(struct student a,struct student b)//比较函数
    {
    	if(a.num==b.num)
    	return strcmp(a.name,b.name)>0;
    	else 
    	return b.num>a.num;
    }
    int main()
    {
    	int n,i,j;
    	scanf("%d",&n);
    	struct student a[11111],b;
    	for(i=0;i<n;i++)
    	{
    		scanf("%s",a[i].name);
    		scanf("%d",&a[i].num);
    	}
    	for(i=0;i<n;i++)//冒泡排序进阶
    	for(j=i+1;j<n;j++)
    	{
    		if(cmp(a[i],a[j]))
    		{
    			b = a[i];
    			a[i] = a[j];
    			a[j] = b;
    		}
    	}
    	int t=1;
    	for(i=1;i<=n;i++)
    	{
    		printf("%d %s\n",t,a[i-1].name);
    		if(a[i].num!=a[i-1].num)
    		{
    			t=i+1;
    		}
    	}
     } 
    

    这题的第一个难点主要是需要在给成绩排序的同时还要给名字的首字母排序。所以建立一个比较函数较为便捷,然后符合cmp函数的条件就进行排序,其实就是冒泡排序的进阶

    第二个难点是排名的问题,若成绩相同排名相同,其实排名还是按照名次的,仔细揣摩一下我最后是如何排的,挺基础的一个解决方式。

    展开全文
  • PTAC语言学生成绩排序

    千次阅读 2019-02-11 16:07:48
    假设学生的基本信息包括学号、姓名、三门课程成绩以及个人平均成绩,定义一个能够表示学生信息的结构类型。输入n(n&amp;lt;50)个学生成绩信息,按照学生的...输出从高到低排序后的学生信息,包括:学号、姓...

    假设学生的基本信息包括学号、姓名、三门课程成绩以及个人平均成绩,定义一个能够表示学生信息的结构类型。输入n(n<50)个学生的成绩信息,按照学生的个人平均分从高到低输出他们的信息。如果平均分相同,按输入的先后顺序排列。

    输入格式:
    输入一个正整数n(n<50),下面n行输入n个学生的信息,包括:学号、姓名、三门课程成绩(整数)。

    输出格式:
    输出从高到低排序后的学生信息,包括:学号、姓名、平均分(保留两位小数)。

    输入样例:
    3
    101 Zhang 78 87 85
    102 Wang 91 88 90
    103 Li 75 90 84
    输出样例:
    102,Wang,89.67
    101,Zhang,83.33
    103,Li,83.00

    #include <stdio.h>
    #define N 51
    struct st
    {
    	long num;
    	char name[10];
    	int yw;			//三门成绩 
    	int sx;
    	int yy;
    	double average;
    }ST[N]; 
    
    int main()
    {
    	int i,n;
    	int j,k;
    	scanf("%d",&n);
    	for(i=0;i<n;i++)
    	{
    		scanf("%d %s %d %d %d",&ST[i].num,ST[i].name,&ST[i].yw,&ST[i].sx,&ST[i].yy);
    		ST[i].average=(((double)ST[i].yw+ST[i].sx+ST[i].yy)/3);
    	}
    	
    	for(j=0;j<N-1;j++)
    	{
    		for(k=j+1;k<N-1;k++)
    			if(ST[j].average<ST[k].average)			//比较大小
    			{
    				ST[50]=ST[j];
    				ST[j]=ST[k];
    				ST[k]=ST[50];
    			}
    	}
    	
    	for(i=0;i<n;i++)
    	{
    		printf("%d,%s,%.2lf\n",ST[i].num,ST[i].name,ST[i].average);		//输出成绩
    	}
    }
    
    展开全文
  • C语言学生成绩统计

    2015-05-21 16:45:13
    录入学生的信息,并且保存到一个磁盘文件。可以录入学生的平时成绩...按照总成绩学生进行排序,查询某个学生成绩(按照学号、姓名、成绩等关键词进行查询)。制定学生信息至少包括:学号、姓名、班级、成绩等内容。
  • 假设学生的基本信息包括学号、姓名、三门课程成绩以及个人平均成绩,定义一个能够表示...输出从高到低排序后的学生信息,包括:学号、姓名、平均分(保留两位小数)。 输入样例: 3 101 Zhang 78 87 85 102 Wang 91 88

    假设学生的基本信息包括学号、姓名、三门课程成绩以及个人平均成绩,定义一个能够表示学生信息的结构类型。输入n(n<50)个学生的成绩信息,按照学生的个人平均分从高到低输出他们的信息。如果平均分相同,按输入的先后顺序排列。

    输入格式:
    输入一个正整数n(n<50),下面n行输入n个学生的信息,包括:学号、姓名、三门课程成绩(整数)。

    输出格式:
    输出从高到低排序后的学生信息,包括:学号、姓名、平均分(保留两位小数)。

    输入样例:
    3
    101 Zhang 78 87 85
    102 Wang 91 88 90
    103 Li 75 90 84
    输出样例:
    102,Wang,89.67
    101,Zhang,83.33
    103,Li,83.00

    #include<iostream>
    #include<iomanip>
    using namespace std;
    
    struct student
    {
        int number;
        char name[10];
        int g1,g2,g3;
        double av;
    };
    
    int main()
    {
        int n;
        cin>>n;
        double av[n];
        struct student stu[n],t;
        for(int i=0;i<n;i++)
        {
            cin>>stu[i].number>>stu[i].name>>stu[i].g1>>stu[i].g2>>stu[i].g3;
            stu[i].av=(stu[i].g1+stu[i].g2+stu[i].g3)/3.0;
        }
        double temp;
        for(int i=0;i<n-1;i++)
        {
            for(int j=0;j<n-1-i;j++)
            {
                if(stu[j].av<stu[j+1].av)
                {
                    t=stu[j];
                    stu[j]=stu[j+1];
                    stu[j+1]=t;
                }
            }
        }
        for(int k=0;k<n;k++)
        {
            cout<<setiosflags(ios::fixed)<<setprecision(2)<<stu[k].number<<","<<stu[k].name<<","<<stu[k].av<<endl;
        }
        return 0;
    }
    
    展开全文
  • 7-3 学生成绩排序 (20 分) 给出一组学生名单(姓名和成绩),请输出按成绩从大到小排序后的结果(名次和姓名)。成绩相同的人拥有相同的名次,且按姓名的字典序从小到大排列。题目保证学生姓名没有重复。 输入格式: ...

    一、题目

    7-3 学生成绩排序 (20 分)
    给出一组学生名单(姓名和成绩),请输出按成绩从大到小排序后的结果(名次和姓名)。成绩相同的人拥有相同的名次,且按姓名的字典序从小到大排列。题目保证学生姓名没有重复。

    输入格式:
    第一行给出不大于10000的整数N。 接下来N行,每行给出学生姓名和成绩,以空格分隔。学生姓名不超过20个字符。

    输出格式:
    共输出N行,每行包含对应的学生排名和姓名,以空格分隔。

    输入样例:
    7
    KongDezhen 94
    FuTaotao 93
    HuYu 94
    XuJiecen 94
    WuSuqi 96
    ChenDa 93
    HuNianbo 95
    输出样例:
    1 WuSuqi
    2 HuNianbo
    3 HuYu
    3 KongDezhen
    3 XuJiecen
    6 ChenDa
    6 FuTaotao

    二、相关知识

    1.冒泡排序的优化
     for(i=0;i<n;i++)
     for(j=i+1;j<n;j++)//不用重复比较
    2.最后的成绩相同名次相同输出那里,值得回顾
    

    三、代码

    #include<iostream>
    #include<string.h>
    using namespace std;
    struct node{
    	char name[30];
    	int score;
    };
    
    int cmp(node x,node y)//比较函数
    {
    	if(x.score==y.score)
    	return strcmp(x.name,y.name)>0;//成绩相同根据姓名字母
    	else
    	return y.score>x.score;//成绩不同根据成绩
    }
    int main()
    {
    	int n,i,j;
    	cin>>n;
    	struct node a[10010],b;
    	for(i=0;i<n;i++)
    	{
    		
    		cin>>a[i].name>>a[i].score;
    	}
    	
    	for(i=0;i<n;i++)
    	for(j=i+1;j<n;j++)//不用重复比较
    	{
    		if(cmp(a[i],a[j]))//j成绩大于i成绩,换 
    		{
    			b=a[i];
    			a[i]=a[j];
    			a[j]=b;
    		}
    	}
    	int t=1;
    	for(i=1;i<=n;i++)
    	{
    		cout<<t<<" "<<a[i-1].name<<endl;;
    		if(a[i].score!=a[i-1].score)
    		{
    			t=i+1;//分数不相同,则排名加一 
    		}
    	 } 
    	return 0; 
    }
    
    

    参考文章

    程序是蓝色的诗

    展开全文
  • C语言】按等级统计学生成绩

    千次阅读 2020-08-03 09:57:38
    本题要求实现一个根据学生成绩设置其等级,并统计不及格人数的简单函数。 函数接口定义: int set_grade( struct student *p, int n ); 其中p是指向学生信息的结构体数组的指针,该结构体的定义为: struct student...
  • 习题8-10 输出学生成绩 (20 分) 本题要求编写程序,根据输入学生的成绩,统计并输出学生的平均成绩、最高成绩和最低成绩。建议使用动态内存分配来实现。 输入格式: 输入第一行首先给出一个正整数N,表示学生的个数...
  • 0)名学生的姓名、学号、成绩,分别输出成绩最高和成绩最低学生的姓名和学号。 输入格式: 每个测试输入包含 1 个测试用例,格式为 第 1 行:正整数 n 第 2 行:第 1 个学生的姓名 学号 成绩 第 3 行:第 2 个学生的...
  • PTA团队练习题C语言

    2021-04-19 20:02:03
    L1-059 敲笨钟 (20 分) 微博上有个自称“大笨钟V”的家伙,每天敲钟催促码农们爱惜身体早点睡觉。为了增加敲钟的趣味性,还会糟改几句古诗词。其糟改的方法为:去网上搜寻压“ong”韵的古诗词,把句尾的三个字换成...
  • 不明白怎么返回学生的个数 以及那个逗号应该怎么控制=·= 完全不对=·=很难受 pta排序成绩求解答
  • 学生互评作业的简单规则是这样定的:每个人的作业会被k个同学评审,得到k个成绩。系统需要去掉一个最高分和一个最低分,将剩下的分数取平均,就得到这个学生的最后成绩。本题就要求你编写这个互评系统的算分模块。 ...
  • pta浙大版《C语言程序设计(第3版)》题目集答案(8-7->8-10) 编程题(8-7->8-10) 编程题(8-8->8-9)
  • PTA6-0【例9-3】 修改学生成绩 (15分)

    千次阅读 2020-04-06 15:36:21
    50)个学生成绩信息,再输入一个学生的学号、课程以及成绩,在自定义函数update_score()中修改该学生指定课程的成绩。 函数接口定义: int update_score(struct student *p, int n, int num, int course, int score...
  • 如下所示成绩表,如何按行(每个人)或按列(每门课)的平均成绩? 结果: 文章目录1. 自定义行平均函数2. 自定义列平均函数3. main()函数调用平均函数 1. 自定义行平均函数 float save(float **PA,int M,int N,...
  • PTA 数组(C语言)

    千次阅读 2021-03-26 11:20:30
    1.选择法排序 (20 分) 本题要求将给定的n个整数从大到小排序后输出。 输入格式: 输入第一行给出一个不超过10的正整数n。第二行给出n个整数,其间以空格分隔。 输出格式: 在一行中输出从大到小有序的数列,相邻数字...
  • 最后这个组的互评成绩是这样计算的:所有其他组的评分中,去掉一个最高分和一个最低分,剩下的分数取平均分记为 G ​1 ​​ ;老师给这个组的评分记为 G ​2 ​​ 。该组得分为 (G ​1 ​​ +G ​2 ​​ )/2...
  • 成绩排序

    2015-02-02 07:20:00
    有N个学生的数据,将学生数据按成绩高低排序,如果成绩相同则按姓名字符的字母序排序,如果姓名的字母序也相同则按照学生的年龄排序,并输出N个学生排序后的信息。 输入: 测试数据有多组,每组输入第一行有...
  • 本题目集是博主初学C语言时写的,由于本题目集和另一套题目集:浙大版《C语言程序设计实验与习题指导(第3版)》题目集的很多题目相似,所以本题目集很多题的超链接直接指向了另一套题目集的题目。 编程题: ...
  • 从键盘输入10名学生的姓名和C语言课程的成绩,要求按照成绩降序排序之后输出。结构体示例: struct { char name[20]; int score; }; #include int main() { struct score { char c[10]; int num; }; struct score ss...
  • PTA(Basic Level) 1080:MOOC期终成绩C语言实现) 分析: ①定义结构体存入学生信息; ②定义结构体数组,先输入学生的Gp,获得证书的学生的Gp>=200,所以忽略Gp<200的学生,存入数组中的学生Gp》=200,对...
  • PTA-1004 成绩排名 (20分) 题目 读入 n(>0)名学生的姓名、学号、成绩,分别输出成绩最高和成绩最低学生的姓名和学号。 输入格式: 每个测试输入包含 1 个测试用例,格式为 第 1 行:正整数 n 第 2 行:第 1 个...
  • PTAC语言练习题

    千次阅读 2021-03-23 20:05:23
    } 1-2:计算平均分 要求:已知某位学生的数学、英语和计算机课程的成绩分别是87分、72分和93分,求该生3门课程的平均成绩(结果按整型输出)。 输出格式:math = 87, eng = 72, comp = 93, average = 计算所得的...
  • 第一次写文章 不喜勿喷...7-37 Excel可以对一组纪录按任意指定列排序。现请编写程序实现类似功能。 输入格式: 输入的第一行包含两个正整数N(≤10 ​5 ​​ ) 和C,其中N是纪录的条数,C是指定排序的列号。之后有 N行...
  • 7-121 成绩排序 (10分) 从键盘输入10名学生的姓名和C语言课程的成绩,要求按照成绩降序排序之后输出。结构体示例: struct { char name[20]; int score; }; 输入格式: 输入的数据之间以空格或回车间隔。 输出格式: ...

空空如也

空空如也

1 2 3 4 5 ... 12
收藏数 238
精华内容 95
热门标签
关键字:

c语言学生成绩排序pta

c语言 订阅