题目要求:40个学生参加了期末考试(分为五组,但每组人数不同),三门考试分别为语文,英语,数学。
老师统计成绩:
1.统计小组一门课程的总分及平均分。
2.统计小组若干门课程的总分及平均分。
3.统计排序后小组三门课程的成绩单。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 5
float sumnum(int score[], int n);
float Average(int score[], int n);
void input(char name[N][10], int score3[N][3]);
void sumaver(int score3[N][3], float sum3[], float aver3[]);
void sort(int score3[][3], float sum3[], float aver3[], char name[][10]);
void output(int score3[][3], float sum3[], float aver3[], char name[][10]);
void ppp();
int main() {
int j = 0, i = 0, k = 0, n = 0, score[40], km = 0, score3[N][3];
float aver = 0, sum = 0, aver3[N], sum3[N] = { 0 };
char name[N][10];
ppp();
printf("\t班级成绩统计\n");
ppp();
printf("1.统计小组一门课程的总分及平均分。\n");
printf("2.统计小组若干门课程的总分及平均分。\n");
printf("3.输出小组排序后三门课程的成绩单。\n");
ppp();
do
{
printf("请输入1-3之间的一个数字:");
scanf("%d", &k);
ppp();
if (k == 1)
{
printf("请输入统计的小组的人数:n=");
scanf("%d", &n);
ppp();
ppp();
printf("请输入本小组的考试成绩\n");
sum = sumnum(score, n);
aver = sum / n;
printf("本小组的总分=%.1lf\t\t平均分=%.1lf\n", sum, aver);
continue;
}
if (k == 2)
{
printf("请输入统计的小组的人数n=");
scanf("%d", &n);
ppp();
printf("请输入要统计的课程的门数km=");
scanf("%d", &km);
ppp();
for (i = 0; i < km; i++) {
printf("请输入本小组第%d门考试成绩\n", i + 1);
ppp();
sum = Average(score, n);
aver = sum / n;
printf("第%d门课程的总分=%.1lf\t平均分=%.1lf\n", i + 1, sum, aver);
ppp();
}
continue;
}
if (k == 3)
{
input(name, score3);
sumaver(score3,sum3,aver3);
sort(score3,sum3,aver3,name);
output(score3,sum3,aver3,name);
continue;
}
ppp();
} while (k != -1);
ppp();
return 0;
}
//第一个功能
float sumnum(int score[], int n) {
int i;
float sum = 0, aver = 0;
for (i = 0; i < n; i++) {
scanf("%d", &score[i]);
}
for (i = 0; i < n; i++) {
sum += score[i];
}
return sum;
}
//第二个功能
float Average(int score[], int n)
{
int i;
float aver = 0, sum = 0;
for (i = 0; i < n; i++) {
scanf("%d", &score[i]);
sum += score[i];
}
return sum;
}
//第三个功能
//输入成绩
void input(char name[N][10], int score3[N][3]) {
int i, j;
for (i = 0; i < N; i++)
{
printf("请输入第%d个同学的姓名及三门课的成绩:", i + 1);
scanf("%s", name[i]);
for (j = 0; j < 3; j++)
{
scanf("%d", &score3[i][j]);
}
}
}
//计算总分和平均分
void sumaver(int score3[N][3], float sum3[], float aver3[]) {
int i, j;
for (i = 0; i < N; i++)
{
for (j = 0; j < 3; j++)
{
sum3[i] += score3[i][j];
}
aver3[i] = sum3[i] / 3.0;
}
}
//总分排序
void sort(int score3[][3], float sum3[], float aver3[], char name[][10]) {
int i, j, t0 = 0;
char nn[20];
float t=0;
for (i = 0; i < N; i++)
{
for (j = 0; j < N-1 - i; j++)
{
if (sum3[j] < sum3[j + 1]) {
t = sum3[j]; sum3[j] = sum3[j + 1]; sum3[j + 1] = t;
t = aver3[j]; aver3[j] = aver3[j + 1]; aver3[j + 1] = t;
t0 = score3[j][0]; score3[j][0] = score3[j + 1][0]; score3[j + 1][0] = t0;
t0 = score3[j][1]; score3[j][1] = score3[j + 1][1]; score3[j + 1][1] = t0;
t0 = score3[j][2]; score3[j][2] = score3[j + 1][2]; score3[j + 1][2] = t0;
strcpy(nn, name[j]); strcpy(name[j], name[j + 1]); strcpy(name[j + 1], nn);
}
}
}
}
//输出成绩
void output(int score3[][3], float sum3[], float aver3[], char name[][10]) {
ppp();
printf("输出五个同学三门课的成绩:\n");
ppp();
printf("序号\t姓名\t课1\t课2\t课3\t总分\t平均分\n");
int i;
for (i = 0; i < N; i++)
{
printf("第%d名:\t%s\t%d\t%d\t%d\t%.0f\t%.1f\n", i + 1, name[i],score3[i][0],score3[i][1],score3[i][2],sum3[i],aver3[i]);
}
}
void ppp() {
printf("-------------------------------------------------\n");
}
任务一运行结果:
任务二运行结果:
任务三运行结果: