结构体-2-测试排名

2023-12-25 21:54:36

22-结构体-2-测试排名
[命题人 : 外部导入]
时间限制 : 1.000 sec 内存限制 : 128 MB

题目描述
为了提升同学们的编程能力,老师们会在平时进行C语言的上机测试,了解班上同学的学习情况,对于一些测试成绩较差的同学,老师会进行督促和增加练习。每次考完后,老师希望知道哪些同学通过了测试,他们的成绩排名怎样。你能编写程序帮老师进行成绩统计吗?
统计的内容包括:通过测试线的同学个数,按照降序给出这些同学的成绩,如果成绩相同,则按照考号有小到大输出。
输入
多样例。每个测试文件包括多组测试用例。每组测试用例包括多行输入:
第一行为考生人数n(1≤n<1000)、考题数m(1≤m≤10)、测试合格线g(正整数);
第二行为第1题至第m题的正整数分值x;
接下来的n行,每行包括一 名考生的准考证号s(长度不超过20的字符串)、该生解决的题目总数t、以及这m道题的题号 (题目号由1到m)。
当读入的考生人数为0时,输入结束。
输出
对每组样例,首先在第1行输出不低于分数线的考生人数,随后若干行按分数从高到低输出上线考生的考号与分数,其间用1空格分隔。若有多名考生分数相同,则按他们考号的升序输出。
样例输入 Copy
4 5 25
10 10 12 13 15
CS004 3 5 1 3
CS003 5 2 4 1 3 5
CS002 2 1 2
CS001 3 2 3 5
1 2 40
10 30
CS001 1 2
2 3 20
10 10 10
CS000000000000000001 0
CS000000000000000002 2 1 2
0
样例输出 Copy
3
CS003 60
CS001 37
CS004 37
0
1
CS000000000000000002 20

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct student {
	char kaohao[21];
	int score;
};
int compare(const void* p, const void* q)
{
	struct student* p1 = p;
	struct student* q1 = q;
	if (p1->score > q1->score)
		return -1;
	else if (p1->score < q1->score)
		return 1;
	else
	{
		return strcmp(p1->kaohao, q1->kaohao);
	}
}
int main(void)
{
	int n;
	while (1)
	{
		scanf("%d", &n);
		if (n == 0) break;
		int daxianrenshu = 0;
		int m, g;
		scanf("%d %d", &m, &g);
		int arr[11];//liru,arr[1]wei diyitiduiyingdefenshu
		struct student kaosheng[10000];
		for (int i = 1; i <= m; i++)
		{
			scanf("%d", &arr[i]);
		}
		for (int i = 1; i <= n; i++)
		{
			scanf("%s", kaosheng[i].kaohao);
			int num,sum=0;
			scanf("%d", &num);
			for (int h = 1; h <= num; h++)
			{
				int t;
				scanf("%d", &t);
				sum += arr[t];
			}
			kaosheng[i].score = sum;
			if (sum >= g)
				daxianrenshu++;
		}
		qsort(kaosheng + 1, n, sizeof(struct student), compare);
		printf("%d\n", daxianrenshu);
		for (int i = 1; i <=daxianrenshu; i++)
		{
			printf("%s %d\n", kaosheng[i].kaohao, kaosheng[i].score);
		}
	}
	return 0;
}

好好起名字

文章来源:https://blog.csdn.net/2301_80096362/article/details/135207462
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。