一、
某专业2022-2023-1学期开设10门课程,6门必修课,4门选修课(任选2门)。
专业有2个班级,每个班级30人。现要求统计必修课、选修课平均成绩,统计每名学生的成绩,奖学金成绩排名。程序要求包括以下4个函数,可以以10名同学为例进行设计。
(1)必修课成绩统计的函数;
(2)选修课成绩统计的函数;
(3)统计每名同学成绩的函数
(4)期末奖学金统计设置了每门必修课的成绩权重,A1、A…A6,选修课的成绩权重B1、B2…B4,某同学奖学金评定成绩等于=A1必修课程1成绩+A2必修课程2成绩+…B1选修课程1成绩…+84*选修课程4成绩。编写统计每名同学奖学金评定成绩排名的函数。(具体权重值自己设定即可)
#include<iostream>
using namespace std;
//必修课函数
void average(double a[30][6])
{
double ave[30];
double sum = 0;
int i, j;
for (i = 0; i < 30; i++)
{
for (j = 0; j < 6; j++)
{
sum = sum + a[i][j];
}
ave[i] = sum / 6;
}
for (i = 0; i < 30; i++)
cout << "第" << i + 1 << "个学生的平均分为:" << ave[i] << endl;
}
//必修课函数
void averageopt(double a[30][2])
{
double ave[30];
double sum = 0;
int i, j;
for (i = 0; i < 30; i++)
{
for (j = 0; j < 2; j++)
{
sum = sum + a[i][j];
}
ave[i] = sum / 2;
}
for (i = 0; i < 30; i++)
cout << "第" << i + 1 << "个学生的平均分为:" << ave[i] << endl;
}
//统计每名学生成绩函数
void sum(double a[30][6],double b[30][2])
{
int i, j, k;
for (i = 0; i < 30; i++)
{
k=0;
double sum = 0;
for (j = 0; j < 6; j++)
{
if(k<2)
{
sum = sum + a[i][j]+b[i][k];
}
else
sum = sum + a[i][j];
k++;
}
cout << "第" << i + 1 << "个学生的总分为:" << sum << endl;
}
}
//排名函数
void sort(double a[30][6],double b[30][2],double A1,double A2,double A3,double A4,double A5,double A6,double B1,double B2)
{
int i, j, k;
double sum[30];
for (i = 0; i < 30; i++)
{
sum[i] = a[i][0]*A1+a[i][1]*A2+a[i][2]*A3+a[i][3]*A4+a[i][4]*A5+a[i][5]*A6+b[i][0]*B1+b[i][1]*B2;
}
//排序
for(i=0;i<30-1;i++)
{
for(j=0;j<30-1-i;j++)
{
//成绩由高至低排序
if(sum[j]<sum[j+1])
{
double temp=sum[j];
sum[j]=sum[j+1];
sum[j+1]=temp;
}
}
}
for(i=0;i<30;i++)
{
cout << "排名第" << i + 1 << "个学生的成绩是:" << sum[i] << endl;
}
}
int main()
{
//必修课
double req1[30][6];//班级1的必修课
double req2[30][6];//班级2的必修课
cout<<"请输入班级1的必修课成绩"<<endl;
for (int i = 0; i < 30; i++)
{
for (int j = 0; i < 6; j++)
{
cin >> req1[i][j];
}
}
cout<<"班级1的各个学生必修课平均成绩"<<endl;
average(req1);
cout<<"请输入班级2的必修课成绩"<<endl;
for (int i = 0; i < 30; i++)
{
for (int j = 0; i < 6; j++)
{
cin >> req2[i][j];
}
}
cout<<"班级2的各个学生必修课平均成绩"<<endl;
average(req2);
//选修课
double opt1[30][2];//班级1的选修课
double opt2[30][2];//班级2的选修课
cout<<"请输入班级1的选修课成绩"<<endl;
for (int i = 0; i < 30; i++)
{
for (int j = 0; i < 2; j++)
{
cin >> opt1[i][j];
}
}
cout<<"班级1的各个学生选修课平均成绩"<<endl;
averageopt(opt1);
cout<<"请输入班级2的选修课成绩"<<endl;
for (int i = 0; i < 30; i++)
{
for (int j = 0; i < 2; j++)
{
cin >> opt2[i][j];
}
}
cout<<"班级2的各个学生选修课平均成绩"<<endl;
averageopt(opt2);
//统计每名学生成绩的函数
cout<<"班级1的各个学生总成绩"<<endl;
sum(req1,opt1);
cout<<"班级2的各个学生总成绩"<<endl;
sum(req2,opt2);
//成绩权重
double A1=0.2;double A2=0.2;double A3=0.1;double A4=0.1;double A5=0.1;double A6=0.1;
double B1=0.1;double B2=0.1;
cout<<"班级1的各个学生总成绩排名"<<endl;
sort(req1,opt1,A1,A2,A3,A4,A5,A6,B1,B2);
cout<<"班级2的各个学生总成绩排名"<<endl;
sort(req2,opt2,A1,A2,A3,A4,A5,A6,B1,B2);
return 0;
}
二、
录入10个同学姓名、学号、语文成绩、数学成绩、英语成绩。
1)可以根据姓名查询其姓名学号、语文成绩、数学成绩 、英语成绩以及平均成绩与总成绩
2)按照高分到低分排列整个列表(姓名、学号、语文成绩、 数学成绩、 英语成绩以及平均成绩、总成绩。
#include<stdio.h>
#include<string.h>
#define Max 10
struct Person
{
char Name[50];
int id;
double C;
double M;
double E;
double MAX;
double avg;
};
int isExist(struct Person stu[], char* name)
{
for (int i = 0; i < Max; i++)
{
if (strcmp(stu[i].Name , name)==0)//找到了
{
return i;
}
}
return -1;//没找到
}
void findPerson(struct Person stu[])
{
printf("请输入查找联系人姓名:\n");
char name[20];
scanf("%s",name);
int ret = isExist(stu, name);
if (ret == -1)
{
printf("查无此人\n");
}
else
{
double max=stu[ret].C+stu[ret].M+stu[ret].E;
printf("找到此人\n");
printf("姓名:%s\t",stu[ret].Name);
printf("学号:%d\t",stu[ret].id);
printf("语文成绩:%lf\t",stu[ret].C);
printf("数学成绩:%lf\t",stu[ret].M);
printf("英语成绩:%lf\n",stu[ret].E);
printf("平均成绩:%lf\n",max/3);
printf("总成绩:%lf\n",max);
}
}
void Sort(struct Person stu[])
{
int i,j;
for( i=0;i<Max;i++)
{
stu[i].MAX=stu[i].C+stu[i].M+stu[i].E;
stu[i].avg=stu[i].MAX/3;
}
for( i=0;i<Max-1;i++)
{
for(j=0;j<Max-1-i;j++)
{
if(stu[j].avg>stu[j+1].avg)
{
double temp=stu[j].avg;
stu[j].avg=stu[j+1].avg;
stu[j+1].avg=temp;
}
}
}
for(i=0;i<Max;i++)
{
printf("姓名:%s\t",stu[i].Name);
printf("学号:%d\t",stu[i].id);
printf("语文成绩:%lf\t",stu[i].C);
printf("数学成绩:%lf\t",stu[i].M);
printf("英语成绩:%lf\n",stu[i].E);
printf("平均成绩:%lf\n",stu[i].avg);
printf("总成绩:%lf\n",stu[i].MAX);
}
}
int main()
{
struct Person stu[Max];
int i=0;
//录入
for(i=0;i<Max;i++)
{
scanf("%s%d%lf%lf%lf",stu[i].Name,&stu[i].id,&stu[i].C,&stu[i].M,&stu[i].E);
}
findPerson(stu);
Sort(stu);
return 0;
}