某班有最多不超过60人(具体人数n由键盘输入)参加期末考试,考试科目为程序设计、英语和数学,编程实现以下功能:
(1)输入学生的各科考试成绩。
(2)计算每个学生的平均分。
(3)输出每名学生的各科考试成绩和个人平均分。
(4)计算输出各科目的平均分、最高分、最低分、及格率。
(5)按学生总评成绩进行排名,并输出排名。
根据题目分析,每一位同学有三门学科成绩,可以使用二维数组进行书写,使起计入每人对应的成绩,接着使用printf语句输出(3)的要求,各学科平均分,最高分,最低分,及格率可以使用函数来进行页面简洁,使重复的步骤更加简洁,增加代码的可阅读性
代码如下:
#include<stdio.h>
int jgl(int a[][3],int n,int j)
{
int i,cnt=1;
for(i=1;i<=n;i++){
if(a[i][j]>=60){
cnt++;
}
}
double y=(cnt/n)*100;
return y;
}
int pj(int a[][3],int n,int j)
{
int i,sum=0;
for(i=1;i<=n;i++){
sum+=a[i][j];
}
double ave=sum/n;
return ave;
}
int zd(int a[][3],int n,int j)
{
int i;
int max=a[1][j];
for(i=1;i<=n;i++){
if(a[i][j]>max){
max=a[i][j];
}
}
return max;
}
int zx(int a[][3],int n,int j)
{
int i;
int min=a[1][j];
for(i=1;i<=n;i++){
if(a[i][j]<min){
min=a[i][j];
}
}
return min;
}
int main()
{
int n;
scanf("%d",&n);
int a[n][3];
int i,j;
for(i=1;i<=n;i++){
for(j=1;j<=3;j++)
scanf("%d",&a[i][j]);
}
int b[60];
for(i=1;i<=n;i++){
int sum=0;
double ave;
for(j=1;j<=3;j++){
sum+=a[i][j];
printf("第%d位学生的第%d课成绩为:%d\n",i,j,a[i][j]);
}
ave=sum/3;
printf("第%d名学生的平均值为:%.2f\n",i,ave);
b[i]=ave;
}
double ave1,ave2,ave3;
ave1=pj(a,n,1);
ave2=pj(a,n,2);
ave3=pj(a,n,3);
printf("程序设计,英语,数学的平均分分别为:%.2f %.2f %.2f\n",ave1,ave2,ave3);
int max1,max2,max3;
max1=zd(a,n,1);
max2=zd(a,n,2);
max3=zd(a,n,3);
printf("程序设计,英语,数学的最大值分别为:%d %d %d\n",max1,max2,max3);
int min1,min2,min3;
min1=zx(a,n,1);
min2=zx(a,n,2);
min3=zx(a,n,3);
printf("程序设计,英语,数学的最小值分别为:%d %d %d\n",min1,min2,min3);
double y1,y2,y3;
y1=jgl(a,n,1);
y2=jgl(a,n,2);
y3=jgl(a,n,3);
printf("程序设计,英语,数学的及格率分别为:%.2f %.2f %.2f\n",y1,y2,y3);
int t;
for(i=1;i<=n;i++){
if(b[i]<b[i+1]){
t=b[i+1];b[i+1]=b[i];b[i]=t;
}
}
for(i=1;i<=n;i++){
printf("第%d名的成绩为:%d\n",i,b[i]);
}
return 0;
}
可能不是最优解,等后续优化.