PTA 2 10-2成绩计算1 有10个学生,每个学生的数据包括学号、姓名、3门课程的成绩,从键盘输入10个学生数据,要求输出3门课程总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课程

有10个学生,每个学生的数据包括学号、姓名、3门课程的成绩,从键盘输入10个学生数据,要求输出3门课程总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课程成绩、平均分数)。

输入格式:

输入共10行,每行依次输入每个学生数据,包括学号、姓名、3门课程的成绩。

输出格式:

输出共三行,第一行是3门课的总平均分(格式为average score is %.2f)

第2至4行是最高分的学生的数据
(格式为
the max score is:\n
%5d%10s后面三个%4d
\nthe max average is %.2f\n)

输入样例:

101 ejhgrje 67 78 96
104 jghjg 65 78 98
107 hkhjk 77 88 99
102 jghgui 87 88 89
103 57jhg 76 95 67
105 gutiutyi 77 98 90
109 fyyfryu 88 99 98
106 jhtguytiu 89 74 62
108 iiuyiw 73 82 63
110 yieiur 68 83 90

输出样例:

average score is 82.73
the max score is:
  109   fyyfryu  88  99  98
the max average is 95.00

参考答案:

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#define N 10
struct student
{
	int num;
	char name[10];
	int score[3];
};
typedef struct student T;
void in(T* p)
{
	for (int i = 0; i < N; i++)
	{
		scanf("%d", &(p + i)->num);
		scanf("%s", &(p + i)->name);
		for (int j = 0; j < 3; j++)
		{
			scanf("%d", &(p + i)->score[j]);
		}
	}
}
double eve(T* p)
{
	double sum = 0;
	for (int i = 0; i < 3; i++)
	{
		sum += p->score[i];
	}
	return sum / 3;
}

int search(T* p)
{
	double max = 0;
	double sum = 0;
	int n = 0;
	for (int i = 0; i < N; i++)
	{
		for (int j = 0; j < 3; j++)
		{
			sum += (p + i)->score[j];
		}
		if (sum > max)
		{
			max = sum;
			n = i;
		}
		sum = 0;
	}
	return n;
}
void put(T* p)
{
	printf("%5d", p->num);
	printf("%10s", p->name);
	for (int i = 0; i < 3; i++)
	{
		printf("%4d", p->score[i]);
	}
	printf("\n");
}

int main()
{
	static T a[N];
	T* p = a;
	in(p);

	double sum = 0, eveplus;
	for (int i = 0; i < N; i++)
	{
		sum += eve(p + i);
	}
	eveplus = sum / N;
	printf("average score is %.2f\n", eveplus);

	printf("the max score is:\n");
	int n;
	n = search(p);
	put(p + n);

	printf("the max average is %.2f\n", eve(p + n));
}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值