您的位置:首页 > 其它

学生成绩

2016-03-23 22:12 337 查看
问题及代码:

copyright(c)2016,烟台大学计算机与控制工程学院

All rights reserved.

文件名称:成绩输出。

作者:马艳艳

完成日期:2016年3月23日

版本号:vc++6.0

问题描述:有一个班4个学生,5门课。①求第1门课的平均分;②找出有两门以上课程不及格的学生,输出他们的学号和全部课程成绩和平均成绩;③找出平均成绩在90分以上或全部课程成绩在85分以上的学生。分别编3个函数实现以上3个要求。

输入描述:5门课的名称

4个学生的学号和5门课成绩

输出描述:。①求第1门课的平均分;②找出有两门以上课程不及格的学生,输出他们的学号和全部课程成绩和平均成绩;③找出平均成绩在90分以上或全部课程成绩在85分以上的学生。

#include<stdio.h>

void avsco(float *pscore,float *paver)//求出所有学生成绩的平均值

{

int i,j;

float sum;

for (i=0; i<4; i++)

{

sum=0;

{

for(j=0;j<5;j++)

sum+=*(pscore+5*i+j);

*(paver+i)=sum/5;

}

}

}

void avcour1(char (*pcourse)[10],float *pscore)//pcourse 行指针

{

int i;

float sum=0,aver;

for (i=0; i<4; ++i)

{

sum+=*(pscore+i*5);

}

aver=sum/4;

printf("course 1:%s,average score:%.2f\n",*pcourse,aver);

}

void fail2(char course[5][10],int num[],float *pscore,float aver[4])//找出有两门课程不及格的学生

{

int i,j,t=0;

for (i=0; i<4;++i)

{

t=0;

for (j=0; j<5; ++j)

{

if (*(pscore+i*5+j)<60)

{

t++;

}

}

if (t>=2)

{

printf("======Student who failed in two courses======\n");

printf("NO.%s %s %s %s %s average\n",*(course+0),*(course+1),*(course+2),*(course+3),*(course+4));

printf("%d %.2f %.2f %.2f %.2f %.2f %.2f\n",num[i],*(pscore+i*5+0),*(pscore+i*5+1),*(pscore+i*5+2),*(pscore+i*5+3),*(pscore+i*5+4),*(aver+i));

}

}

}

void good(char course[5][10],int num[],float *pscore,float aver[4])//找出优秀的学生

{

int i,j,t=0;

printf("======Students whose score is good======\n");

printf("NO.%s %s %s %s %s average\n",*(course+0),*(course+1),*(course+2),*(course+3),*(course+4));

for (i=0; i<4;++i)

{

t=0;

for (j=0; j<5; ++j)

{

if (*(pscore+i*5+j)>85)

{

t++;

}

}

if (*(aver+i)>90||t==5)

{

printf("%d %.2f %.2f %.2f %.2f %.2f %.2f\n",num[i],*(pscore+i*5+0),*(pscore+i*5+1),*(pscore+i*5+2),*(pscore+i*5+3),*(pscore+i*5+4),*(aver+i));

}

}

}

int main()

{

void avsco(float *,float *);

void avcour1(char (*)[10],float *);

void fail2(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];

pcourse=course;

for (i=0; i<5; i++)

scanf("%s",course[i]);

pscore=&score[0][0];

pnum=&num[0];

for (i=0; i<4; i++)

{

scanf("%d",pnum+i);

for (j=0; j<5; j++)

scanf("%f",pscore+5*i+j);

}

paver=&aver[0];

avsco(pscore,paver);

avcour1(pcourse,pscore);

fail2(pcourse,pnum,pscore,paver);

good(pcourse,pnum,pscore,paver);

return 0;

}
运行结果:



知识点总结:
写这个太费心思了,不过还是在同学帮助下做出来的,主要就是在判断优秀不及格那里卡,后来发现自己行指针没明白,现在就希望自己能好好对题整理思绪。
学习心得:
要整理好思绪面对大程序,还要好好整理细节啊
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: