实验内容3:有一个班4个学生,5门课。
①求第一门课的平均分;②找出有2门以上课程不及格的学生,输出他们的学号和全部课程成绩和平均成绩;③找出平均成绩在90分以上或全部课程成绩在85分以上的学生。
分别编3个函数实现以上3个要求。
1.0
#include
int main()
{
void avsco(float *,float *);//求学生平均分
void avcour1(float *);//求第一门课程平均分
void fali2(int num[],float *pscore,float aver[4]);//求不及格
void good(int num[4],float *pscore,float aver[4]);//求优秀
int i,j,*pnum,num[4];//指向一维数组的指针
float score[4][5],aver[4],*pscore,*paver;
//num存放四个学生号的一维数组,score二维数组,aver存平均成绩
//pnum指向num数组,psco指向score数组,pave指向aver数组
printf("input NO. and scores:\n");
printf("NO. ");
for(i=0;i<5;i++)
printf("%d ",i+1);
printf("\n");
pscore=&score[0][0];
pnum=&num[0];//pnum+i=&num[i],p+1指向下一元
paver=&aver[0];
for(i=0;i<4;i++)
{
scanf("%d",pnum+i);//输入学号
for(j=0;j<5;j++)
scanf("%f",pscore+5*i+j);//输入成绩(?
}
printf("\n\n");
avsco(pscore,paver);//平均成绩
avcour1(pscore);//第一门课平均分
printf("\n");
fali2(pnum,pscore,paver);//不及格
printf("\n");
good(pnum,pscore,paver);//优秀
return 0;
}
void avsco(float *pscore,float *paver)//每个人的平均分
{
int i,j;
float sum,average;
for(i=0;i<4;i++)
{
sum=0.0;
for(j=0;j<5;j++)
sum=sum+(*(pscore+5*i+j));//累计各科成绩
average=sum/5;//计算平均分
*(paver+i)=average;
}//paver=&aver[0],paver+i=&aver[i]
}
void avcour1(float *pscore)//第一门课平均分
{
int i;
float sum,average1;
sum=0.0;
for(i=0;i<4;i++)
sum=sum+(*(pscore+5*i));
average1=sum/4;
printf("course1 average score:%7.2f\n",average1);
}
void fali2(int num[],float *pscore,float aver[4])
{
int i,j,k,label;
printf("Student who is fail in two courses\n");
printf("NO. ");
for(i=0;i<5;i++)
printf("%d ",i+1);
printf("average\n");
for(i=0;i<4;i++)
{
label=0;//标志
for(j=0;j<5;j++)
if(*(pscore+5*i+j)<60.0)label++;
if(label>=2)
{
printf("%d",num[i]);
for(k=0;k<5;k++)
printf("%11.2f",*(pscore+5*i+k));
printf("%11.2f\n",aver[i]);
}
}
}
void good(int num[4],float *pscore,float aver[4])
{
int i,j,k,n;
printf("Student whose score is good\n");
printf("NO.");
for(i=0;i<4;i++)
printf("%d ",i+1);
printf(" average\n");
for(i=0;i<4;i++)
{
n=0;
for(j=0;j<5;j++)
if(*(pscore+5*i+j)>85.0)n++;
if((n=5)||(aver[i]>=90))//||是或
{
printf("%d",num[i]);
for(k=0;k<5;k++)
printf("%11.2f",*(pscore+5*i+k));
printf("%11.2f\n",aver[i]);
}
}
}
2.0有课程名称的
#include
int main()
{
void avsco(float *,float *);//求学生平均分
void avcour1(char(*)[10],float *);//求第一门课程平均分
void fali2(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];
//num存放四个学生号的一维数组,score二维数组,aver存平均成绩
//pnum指向num数组,psco指向score数组,pave指向aver数组
//course存放课程名称的二维字符数组,pcourse是指向course数组的指针变量
printf("input course:\n");
pcourse=course;
for(i=0;i<5;i++)
scanf("%s",course[i]);//输入课程名称
printf("input NO. and scores:\n");
printf("NO. ");
for(i=0;i<5;i++)
printf(",%s",course[i]);//输出课程名称
printf("\n");
pscore=&score[0][0];
pnum=&num[0];//pnum+i=&num[i],p+1指向下一元
paver=&aver[0];
for(i=0;i<4;i++)
{
scanf("%d",pnum+i);//输入学号
for(j=0;j<5;j++)
scanf("%f",pscore+5*i+j);//输入成绩(?
}
printf("\n\n");
avsco(pscore,paver);//平均成绩
avcour1(pcourse,pscore);//第一门课平均分
printf("\n");
fali2(pcourse,pnum,pscore,paver);//不及格
printf("\n");
good(pcourse,pnum,pscore,paver);//优秀
return 0;
}
void avsco(float *pscore,float *paver)//每个人的平均分
{
int i,j;
float sum,average;
for(i=0;i<4;i++)
{
sum=0.0;
for(j=0;j<5;j++)
sum=sum+(*(pscore+5*i+j));//累计各科成绩
average=sum/5;//计算平均分
*(paver+i)=average;
}//paver=&aver[0],paver+i=&aver[i]
}
void avcour1(char(*pcourse)[10],float *pscore)//第一门课平均分
{
int i;
float sum,average1;
sum=0.0;
for(i=0;i<4;i++)
sum=sum+(*(pscore+5*i));
average1=sum/4;
printf("course1:%s average score:%7.2f\n",*pcourse,average1);
}
void fali2(char course[5][10],int num[],float *pscore,float aver[4])
{
int i,j,k,label;
printf("Student who is fail in two courses\n");
printf("NO. ");
for(i=0;i<5;i++)
printf("%11s",course[i]);
printf(" average\n");
for(i=0;i<4;i++)
{
label=0;//标志
for(j=0;j<5;j++)
if(*(pscore+5*i+j)<60.0)label++;
if(label>=2)
{
printf("%d",num[i]);
for(k=0;k<5;k++)
printf("%11.2f",*(pscore+5*i+k));
printf("%11.2f\n",aver[i]);
}
}
}
void good(char course[5][10],int num[4],float *pscore,float aver[4])
{
int i,j,k,n;
printf("Student whose score is good\n");
printf("NO.");
for(i=0;i<5;i++)
printf("%11s",course[i]);
printf(" average\n");
for(i=0;i<4;i++)
{
n=0;
for(j=0;j<5;j++)
if(*(pscore+5*i+j)>85.0)n++;
if((n=5)||(aver[i]>=90))//||是或
{
printf("%d",num[i]);
for(k=0;k<5;k++)
printf("%11.2f",*(pscore+5*i+k));
printf("%11.2f\n",aver[i]);
}
}
}