题目描述
有一个班4个学生,5门课。①求第1门课的平均分;②找出有两门以上课程不及格的学生,输出他们的学号和全部课程成绩和平均成绩;③找出平均成绩在90分以上或全部课程成绩在85分以上的学生。分别编3个函数实现以上3个要求。
输入
5门课的名称
4个学生的学号和5门课成绩
输出
按题目要求
样例输入
english math c++ chinese art
1001 80 90 100 70 50
1002 59 60 70 60 43
1003 90 100 85 90 90
1004 85 86 89 90 88
样例输出
course 1:english,average score:78.50
======Student who failed in two courses======
NO.english math c++ chinese art average
1002 59.00 60.00 70.00 60.00 43.00 58.40
======Students whose score is good======
NO.english math c++ chinese art average
1003 90.00 100.00 85.00 90.00 90.00 91.00
参考代码
#include<stdio.h>
void avsco(float *p1,float *p2)
{
int i,j;
float sum,av;
for (i=0;i<4;i++)
{
sum=0.0;
for (j=0;j<5;j++)
{
sum=sum+(*(p1+5*i+j));
av=sum/5;
*(p2+i)=av;
}
}
}
void avcour1(char (*pcourse)[10],float *p1)
{
int i;
float sum,av1;
sum=0.0;
for (i=0;i<4;i++)
sum+=(*(p1+5*i));
av1=sum/4;
printf("course 1:%s,average score:%.2fn",*pcourse,av1);
}
void fail2(char course[5][10],int num[],float *p1,float aver[4])
{
int i,j,k,labe1;
printf("======Student who failed in two courses======n");
printf("NO.english math c++ chinese art averagen");
for(i=0;i<4;i++)
{
labe1=0;
for(j=0;j<5;j++)
if(*(p1+5*i+j)<60.0)
labe1++;
if(labe1>=2)
{
printf("%d ",num[i]);
for(k=0;k<5;k++)
printf("%.2f ",*(p1+5*i+k));
printf("%.2fn",aver[i]);
}
}
}
void good(char course[5][10],int num[4],float *p1,float aver[4])
{
int i,j,k,n;
printf("======Students whose score is good======n");
printf("NO.english math c++ chinese art averagen");
for(i=0;i<4;i++)
{
n=0;
for(j=0;j<5;j++)
if(*(p1+5*i+j)>85.0)
n++;
if((n==5)||(aver[i]>=90))
{
printf("%d ",num[i]);
for(k=0;k<5;k++)
printf("%.2f ",*(p1+5*i+k));
printf("%.2fn",aver[i]);
}
}
}
int main()
{
void avsco(float *,float *);
void avcour1(char (*)[10],float *);
void fail2(char course[5][10],int num[],float *pscore,float aver[4]);
void good(char course[5][10],int num[4],float *pscore,float aver[4]);
int i,j,*pnum,num[4];
float score[4][5],aver[4],*pscore,*paver;
char course[5][10],(*pcourse)[10];
pcourse=course;
for (i=0; i<5; i++)
scanf("%s",course[i]);
pscore=&score[0][0];
pnum=&num[0];
for (i=0; i<4; i++)
{
scanf("%d",pnum+i);
for (j=0; j<5; j++)
scanf("%f",pscore+5*i+j);
}
paver=&aver[0];
avsco(pscore,paver);
avcour1(pcourse,pscore);
fail2(pcourse,pnum,pscore,paver);
good(pcourse,pnum,pscore,paver);
return 0;
}
解析
暂无