编个程序 输入学生四科考试成绩 以逗号隔开 输出最高分 输出 最低分 输出平均分

编个程序 输入学生四科考试成绩 以逗号隔开 输出最高分 输出 最低分 输出平均分 输出分数总和!!!

#include <stdio.h>
#include <string.h>

const int MAX_NUM = 5;

const int MAX_NAME_LEN = 127;
const int MAX_SUBJECT = 3;
const double SUBJECTS = 3.0;

typedef struct _Student
{
char szName[MAX_NAME_LEN + 1];
int nArryScore[MAX_SUBJECT];
int nSum;
double dAverage;
}Student;

void Sort(Student students[], int n)
{
Student stTmp;
int nTmp = 0;
int nPos = 0;
int nIndex = 0;
for (nPos = 0; nPos < n - 1; nPos++)
{
nTmp = nPos;
memset(&stTmp, 0, sizeof(Student));
for (nIndex = nPos + 1; nIndex < n; nIndex++)
{
if (students[nIndex].nSum > students[nTmp].nSum)
{
nTmp = nIndex;
}
}

memcpy(&stTmp, &students[nTmp], sizeof(Student));
memcpy(&students[nTmp], &students[nPos], sizeof(Student));
memcpy(&students[nPos], &stTmp, sizeof(Student));
}
}

int main (void)
{
printf("请输入五个同学三门课的成绩:\n");

Student students[MAX_NUM];
memset(students, 0, sizeof(students));

Student* pStudent = NULL;

int nCnt = 0;
int nPos = 0;
while (MAX_NUM > nCnt)
{
printf("第%d个同学的记录:", nCnt + 1);

pStudent = &students[nCnt];
scanf("%s %d %d %d", pStudent->szName,
&pStudent->nArryScore[0],
&pStudent->nArryScore[1],
&pStudent->nArryScore[2]);
for (nPos = 0; nPos < MAX_SUBJECT; nPos++)
{
pStudent->nSum += pStudent->nArryScore[nPos];
}

pStudent->dAverage = pStudent->nSum / SUBJECTS;
nCnt++;

getchar();
}

Sort(students, MAX_NUM);

printf("------------------------------------------------\n");
printf("输出排序后五个同学的三门成绩:\n");
printf("------------------------------------------------\n");
printf("排序 姓名 课1 课2 课3 总分 平均分\n");
for (nPos = 0; nPos < MAX_NUM; nPos++)
{
pStudent = &students[nPos];
printf("第%d名: %s %d %d %d %d %.2f\n", nPos + 1,
pStudent->szName,
pStudent->nArryScore[0],
pStudent->nArryScore[1],
pStudent->nArryScore[2],
pStudent->nSum,
pStudent->dAverage);
}

return 0;
}
温馨提示:答案为网友推荐,仅供参考