4个学生5门课数据自己输入,输出第一门的平均分,并找出有两门以上课程不及格的学生和平均成绩在90分以上的或全部课程成绩在85分以上的学生。程序不难,容易理解,但关键是思路要清楚。里面涉及大量的指针的定义使用,多敲点这样过百行的程序为以后大程序打基础。代码如下:
#include<iostream>
using namespace std;
int main()
{
void avsco(float*,float*);
void avcour1(char(*)[10],float*);
void fail2(char course[5][10],int num[],float *psco,float aver[4]);
void good(char course[5][10],int num[4],float*psco,float aver[4]);
int i,j,*pnum,num[4];
float score[4][5],aver[4],*pscore,*paver;
char course[5][10],(*pcourse)[10];
cout<<"input course:"<<endl;
pcourse=course;
for(i=0;i<5;i++)
cin>>course[i];
cout<<"input NO.and scores:"<<endl;
cout<<"NO.";
for(i=0;i<5;i++)
cout<<","<<course[i];
cout<<endl;
pscore=&score[0][0];
pnum=&num[0];
for(i=0;i<4;i++)
{
cin>>*(pnum+i);
for(j=0;j<5;j++)
{
cin>>*(pscore+5*i+j);
}
}
paver=&aver[0];
cout<<endl<<endl;
avsco(pscore,paver);
avcour1(pcourse,pscore);
cout<<endl<<endl;
fail2(pcourse,pnum,pscore,paver);
cout<<endl<<endl;
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+=(*(pscore+5*i+j));
average=sum/5;
*(paver+i)=average;
}
}
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;
cout<<"course1:"<<*pcourse<<"average score"<<average1<<endl;
}
void fail2(char course[5][10],int num[],float*pscore,float aver[4])
{
int i,j,k,label;
cout<<"============student who failed in two couses========="<<endl;
cout<<"NO. ";
for(i=0;i<5;i++)
cout<<course[i]<<" ";
cout<<"average"<<endl;
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)
{
cout<<num[i]<<" ";
for(k=0;k<5;k++)
cout<<*(pscore+5*i+k)<<" ";
cout<<" "<<aver[i]<<endl;
}
}
}
void good(char course[5][10],int num[4],float *pscore,float aver[4])
{
int i,j,k,n;
cout<<"=========students whose score is good========="<<endl;
cout<<"NO. ";
for(i=0;i<5;i++)
cout<<course[i]<<" ";
cout<<" average "<<endl;
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))
{
cout<<num[i]<<" ";
for(k=0;k<5;k++)
{
cout<<*(pscore+5*i+k)<<" ";
cout<<" "<<aver[i];
}
}
}
}