欢迎加qq群:453398542 学习讨论,会定期分享资料课程,解答问题。
输入m个学生,每个学生有4门课,在主调函数中输入学生的相关信息,编写三个函数:
(1)求第一门课的平均分;
(2)找出有两门课以上不及格的学生,并输出他们的学号和全部成绩,要求用指针函数实现:float*Search(float(*p)[4],int n);
(3)找出全部成绩在85分以上的学生。
#include<stdio.h>
#define N 40
float average(float (*p)[4],int n)
{
int i;
float ave=0;
for(i=0;i<n;i++)
ave=ave+**(p+i);
ave=ave/n;
return ave;
}
float *Search(float (*p)[4],int n){
//找两门不及格的同学
int j,count=0;
for (j=0;j<4;j++){
if(*(*(p+n)+j)<60)
count++;
}
if(count>2)
return *(p+n);
else
return NULL;
}
void Good(int a[],float (*p)[4],int n){
//两门成绩85以上
int i,j,flag;
for (i=0;i<n;i++){
flag=1;
for (j=0;j<4&&flag;j++){
if (*(*(p+i)+j)<85)
flag=0;
}
if (flag){
printf("%6d",a[i]);
for (j=0;j<4;j++)
printf("%6.1f",*(*(p+i)+j));
printf("\n");
}
}
}
int main()
{
float score[N][4],ave,*s;
int n,i,j,a[N];
printf("输入学生个数:\n");
scanf("%d",&n);
printf("输入%d个学生的学号与成绩:\n",n);
for(i=0;i<n;i++){
scanf("%d",&a[i]);
for(j=0;j<4;j++)
scanf("%f",&score[i][j]);
}
ave=average(score,n);
printf("第一门课的平均成绩为:%.2f\n",ave);
printf("两门课以上不及格的同学的学号和成绩为:\n");
for (i=0;i<n;i++){
s=Search(score,i);
if (s){
printf("%6d",a[i]);
for (j=0;j<4;j++)
printf("%6.1f",score[i][j]);
printf("\n");
}
}
printf("全部成绩在85分以上的学生的学号和成绩:\n");
Good(a,score,n);
return 0;
}