对我来说是一道灰常有难度的题目,求看看
这是题目要求
这是想达到的效果
#include<stdio.h>
#define M 5
#define N 5
void averageput(float *);/*计算每个学生各门课程的平均成绩*/
float *averageall(float *);/*计算全班每门课程的平均成绩*/
void below(float *,float *);
int main()
{
char a[M][10],(*pa)[10]=a;
int i,j;
for(j=0;j<M;j++)
scanf("%s",*pa+j);
float b[N][M];
float *pb1=&b[0][0];
float *pd;
for(i=0;i<N;i++)
for(j=0;j<M;j++)
scanf("%f",pb1+M*i+j);
averageput(pb1);
pd=averageall(pb1);
below(pb1,pd);
return 0;
}
void averageput(float *p)
{
float c[N],*pc=c,t=0,*pp=p;
int i,j;
for(i=0;i<N;i++)
{
for(j=0;j<M;j++)
t+=*(pp+M*i+j);
*(pc+i)=t/M;
printf("Average score of is %.2f\n",*(pc+i));
t=0;
}
}
float *averageall(float *p)
{
float c[M],*pc=c,*pc2=c,t=0,*pp=p;
int i,j;
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
t+=*(pp+N*i+j);
*(pc+i)=t/N;
printf("Average score of is %.2f\n",*(pc+i));
t=0;
}
return pc2;
}
void below(float *p,float *pd)
{
int i,j,s[M],m[M],n[M],*ps=s,*pm=m,*pn=n;
float *pp=p;
for(i=0;i<M;i++)
{
*(ps+i)=0;
*(pm+i)=0;
*(pn+i)=0;
for(j=0;j<N;j++){
if(*(pp+N*i+j)<*(pd+i))
*(ps+i)+=1;
if(*(pp+N*i+j)<60.0)
*(pm+i)+=1;
if(*(pp+N*i+j)>=90.0)
*(pn+i)+=1;}
printf("Number of students lowber than avg of is %d\n",*(ps+i));
}for(i=0;i<M;i++)
{
*(ps+i)=0;
*(pm+i)=0;
*(pn+i)=0;
for(j=0;j<N;j++){
if(*(pp+N*i+j)<*(pd+i))
*(ps+i)+=1;
if(*(pp+N*i+j)<60.0)
*(pm+i)+=1;
if(*(pp+N*i+j)>=90.0)
*(pn+i)+=1;}
printf("Number of students fail is %d\n",*(pm+i));
}for(i=0;i<M;i++)
{
*(ps+i)=0;
*(pm+i)=0;
*(pn+i)=0;
for(j=0;j<N;j++){
if(*(pp+N*i+j)<*(pd+i))
*(ps+i)+=1;
if(*(pp+N*i+j)<60.0)
*(pm+i)+=1;
if(*(pp+N*i+j)>=90.0)
*(pn+i)+=1;}
printf("Number of students perfect is %d\n",*(pn+i));
}
}
这是我能做到的,还大部分是从网上找的
现在有两个疑问想请教
1.该用什么形式输入学生姓名
2.在输出中怎么加入学科和学生姓名