⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 student1.c

📁 编写颁奖程序:在N个选手中评出一等奖1名
💻 C
字号:
#include <stdio.h>
#include <stdlib.h>

#define N 10
#define M 6

struct Student
{
	char	* Id;
	char	* Name;
	double	score[M];
	double	average;
};

double	getAverage(double * , int n);	//求从一组数中去掉最大和最小数后的平均值
void	sort(Student * , int n);	//排序函数
void	printResult(Student * );    	//输出结果

void main()
{
	int i;

	Student stu[N] = {
		{"1","aaa",65,45,67,56,85.5,78.4},
		{"2","bbb",69,75,87,56,95.5,58.4},
		{"3","ccc",65,45,67,56,95.5,78.4},
		{"4","ddd",85,54,87,69.8,75.5,88.4},
		{"5","eee",65,85,77,84,95.5,78.4},
		{"6","fff",65,69,87,76,85.5,78.4},
		{"7","ggg",75,45,77,56,95.5,88.4},
		{"8","iii",67,45,87,86,95.5,86.4},
		{"9","hhh",75,75,87,56,75.5,68.4},
		{"10","jjj",80,85,87,86,90,88}
	};


	for (i = 0 ; i < N ; i ++)
	{
		stu[i].average = getAverage(stu[i].score , M);
	}

	sort(stu , N);

	printResult(stu);

}

double	getAverage(double * score, int n)
{
	int j;

	double max	= score[0];
	double min 	= score[0];
	double total= score[0];

	for(j = 1 ; j < n ; j ++)
	{
		if (max < score[j])
			max = score[j];
		if (min > score[j])
			min = score[j];
		total += score[j];
	}

	return (total - max - min) / (n-2);
}

void sort(Student * stu , int n)
{
	int i,j;
	Student tmp;
	for (i = 0 ; i < n -1 ; i ++)
		for(j = i + 1 ; j < n ; j ++)
		{
			if (stu[i].average < stu[j].average)
			{
				tmp = stu[i] ; 
				stu[i] = stu[j] ; 
				stu[j] = tmp;
			}
		}
}

void printResult(Student * stu)
{
	int i = 0;
	printf("The First: \n");
	printf ("%2d :%s,\t%s,\t%lf\n" , i,stu[i].Id , stu[i].Name , stu[i].average);
	
	printf("\nThe Second: \n");
	for(i = 1 ; i < 3 ; i ++)
	{
		printf ("%2d :%s,\t%s,\t%lf\n" , i,stu[i].Id , stu[i].Name , stu[i].average);
	}

	printf("\nThe Third: \n");
	for(i = 3 ; i < M ; i ++)
	{
		printf ("%2d :%s,\t%s,\t%lf\n" , i,stu[i].Id , stu[i].Name , stu[i].average);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -