#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<string.h>
int main()
{
char name1[50];
char name[50][50];//名字,成绩的标签横向排列
int num[50][5];
int score[50][5];
int a, choice, c, d, i, j, e, sum;
float average;
srand((unsigned)time(NULL));
printf("请输入学生数量\n");
scanf("%d", &a);//输入要记录的学生数量
printf("请录入信息\n");
for (i = 0; i < a; i++)
{
scanf("%s", &name[i]);
}
for (i = 0; i < a; i++)
{
printf("%s ", name[i]);
}
printf("\n");
for (i = 0; i < a; i++)
{
num[i][1] = rand() % 1000;
}
for (i = 0; i < a; i++)
{
printf("%d ", num[i][1]);
}
printf("\n");//录入学号
for (i = 0; i < a; i++)
{
for (j = 0; j < 5; j++)
{
score[i][j] = rand() % 100;
}
}
for (i = 0; i < a; i++)
{
for (j = 0; j < 5; j++)
{
printf("%d ", score[i][j]);//成绩顺序为数学、英语、编程、思政、体育
}
printf("\n");
}
printf("\n");//展现成绩的录入结果,下面开始功能选择
printf("/1:修改某个学生的成绩\n");
printf("/2:计算某个人的平均分\n");
printf("/3:计算单科平均分\n");
printf("/4:打印某个学生的成绩\n");
printf("/5:打印总成绩单,包括平均分\n");
printf("/6:查出有挂科的学生\n");
printf("/7:按名字进行升序排序\n");
printf("/8:按学号字段升序排序\n");
printf("/9:按个人平均分降序排序\n");
printf("/10:按指定单科成绩降序\n");
printf("请输入要实现的功能\n");
scanf("%d", &choice);//输入想实现的功能
if (choice == 1)
{
printf("请输入需要修改的学生名字\n");
scanf("%s", &name1);
for (i = 0; i < a; i++)
{
e = 0;
if (strcmp(name1, name[i]) == 0)//进行姓名比较
{
e = i;
printf("请输入要修改的学科成绩 \n");//0,1,2,3,4分别对应数学、英语、编程、思政、体育
scanf("%d", &c);
printf("请输入修改后的成绩 \n");
scanf("%d", &d);
score[i][c] = d;
}
}
printf("%s %d %d %d %d %d", name[e], score[e][0], score[e][1], score[e][2], score[e][3], score[e][4]);
}
if (choice == 2)
{
printf("请输入学生的姓名\n");
scanf("%s", &name1);
e = 0;
average = 0;
for (i = 0; i < a; i++)
{
if (strcmp(name1, name[i]) == 0)//进行姓名比较
{
e = i;
average = (float)(score[e][0] + score[e][1] + score[e][2] + score[e][3] + score[e][4]) / 5;
}
}
printf("%s %.2f", name[e], average);
}
if (choice == 3)
{
printf("请输入要计算平均分的科目\n");
scanf("%d", &c); //0, 1, 2, 3, 4分别对应数学、英语、编程、思政、体育
average = 0;
sum = 0;
for (i = 0; i < a; i++)
{
sum += score[i][c];
}
average = (float)sum / a;
printf("该科目平均分为%.2f", average);
}
if (choice == 4)
{
printf("请输入需要打印成绩单的学生\n");
scanf("%s", &name1);
e = 0;
if (strcmp(name1, name[1]) == 0)
{
e = i;
printf("%s %d %d %d %d %d %d", name[i], num[i], score[e][0], score[e][1], score[e][2], score[e][3], score[e][4]);
}
}
return 0;
}