成绩输入与输出
4个学生5门课程的成绩:要求:
求第一门课程的平均分
找到有2门科目不及格的学生,输出他们的学号,成绩和平均成绩
//找到平均成绩在90分以上的或者全部课程成绩在85分以上的学生
下面是我的代码:
#include<stdio.h>
#define N 5
#define M 4
float average(float *p);
float * search(float (*p)[N]);
float * find(float (*p)[N]);
int
main()
{
//变量及数组定义
float score[M][N],avescore;
int i,j;
//输入各个学生的成绩
for(j=0;j<M;j++)
{
printf("NO.%d scores:\n",j+1);
for(i=0;i<N;i++)
scanf(" %f ",*(score+j)+i);
printf("\n");
}
//求第一门课程的平均分
avescore=average(*score);
printf(" the average of the first is:%f\n",avescore);
//找到有2门科目不及格的学生,输出他们的学号,成绩和平均成绩
for(j=0;j<M;j++)
{
float *p;
p=search(score+j);
if(p==*(score+j))
{
float sum;
printf("NO.%d scores:\n",j+1);
for(i=0;i<N;i++)
{
printf(" %f ",*(p+i));
sum+=*(p+i);
}
printf("\n the average score is :%f\n",sum/N);
}
printf("\n");
}
//找到平均成绩在90分以上的或者全部课程成绩在85分以上的学生
for(j=0;j<M;j++)
{
float *p;
p=find(score+j);
if(p==*(score+j))
{
printf("NO.%d scores:\n",j+1);
for(i=0;i<N;i++)
printf(" %f ",*(p+i));
}
printf("\n");
}
}
//求平均分
float
average(float * p)
{
float sum,avsco;
sum=0;
int i;
for(i=0;i<M;i++)
sum+=*(p+i*N);
avsco=sum/i;
return(avsco);
}
//找到功课至少有两门不及格的学生,返回该行的首地址
float * search(float (*p)[N])
{
int i,j;
float * pt;
pt=*(p-1);
for(i=0;i+1<N;i++)
if(*(*p+i)<60)
for(j=i+1;j<N;j++)
if(*(*p+j)<60)
pt=*p;
return(pt);
}
//找到平均成绩在90分以上的或者全部课程成绩在85分以上的学生,返回该行的首地址
float * find(float (*p)[N])
{
int i;
float avscore,*pt,sum=0;
pt=*(p+1);
for(i=0;i<N;i++)
{
sum+=*(*p+i);
}
avscore=sum/4;
if(avscore>=90)
pt=*p;
return(pt);
}
编译是没有错误,然而运行时,成绩也无法输入、希望高手指点!谢谢!