学生成绩统计(C案例)

来源:互联网 发布:高安seo 编辑:程序博客网 时间:2024/04/30 04:58

有一个班级6个学生5门课,编写函数实现下列功能:
(1)函数average()求第n个指定课目的平均分;
(2)使用函数void findfail()找出有2门以上(含2门)课程不及格的学生,在主程序输出其学号和全部课程成绩及平均成绩;
(3)函数void findgood()找出平均成绩在90分以上或全部课程成绩在85分以上的学生, 在主程序输出其学号和全部课程成绩及平均成绩。
在主函数中输入数据并输出结果。
要求:尽量使用指针。

#include "stdafx.h"void average(int *p_stu0)//第n个指定科目的平均分{    int i,sum=0;    for(i=0;i<6;i++)    {        sum+=*p_stu0;        p_stu0++;    }    printf("%4.1f\n",sum/6.0);}void findfail(int(*p_stu1)[6],int *p_fail){    int h,i;    for(i=0;i<6;i++)//lie....yigexuesheng chengji    {        int j=0;        for(h=1;h<6;h++)//hang....yimenke chengji        {            if(*(*(p_stu1+h)+i)<60)                j++;            if(j==2)            {                *(p_fail+i)=1;                break;            }        }    }}void findgood(int(*p_stu2)[6],int* p_good,double* p0)//p0传递均值{    int h,i,sum[6]={};    for(h=0;h<6;h++)//6个学生    {        int j=0;        for(i=1;i<6;i++)//五门课        {            if(*(*(p_stu2+i)+h)>85)                j++;            sum[h]+=*(*(p_stu2+i)+h);        }        if(j==5)            *(p_good+h)=1;    }    for(h=0;h<6;h++)    {        *(p0+h)=sum[h]/5.0;        if(*(p0+h)>85 && *(p_good+h)!=1)            *(p_good+h)=1;    }}void main(){    int i,j,k;    int stu[6][6]={};//行:学号、依次的科目成绩;列,学生;    printf("请输入信息\n");    for(i=0;i<6;i++)    {        for(j=0;j<6;j++)            scanf("%d",&stu[j][i]);//先对列赋值,每个学生的数据是完整的;        printf("\n");    }    printf("指定科目的均分,请输入n:");    int n;    scanf("%d",&n);    average(&stu[n][0]);    printf("有2门以上(含2门)课程不及格的学生:\n");    int fail[6]={};    findfail(stu,fail);    for(i=0;i<6;i++)    {        if(fail[i]==1)        {            int sum=0;            printf("%03d ",stu[0][i]);              for(k=1;k<6;k++)            {                printf("%02d ",stu[k][i]);                sum+=stu[k][i];            }            printf("%4.1f\n",sum/5.0);        }    }    printf("平均成绩在90分以上或全部课程成绩在85分以上的学生:\n");    double ave_g[6]={};    int good[6]={};    findgood(stu,good,ave_g);    for(i=0;i<6;i++)    {        if(good[i]==1)        {            printf("%03d ",stu[0][i]);            for(k=1;k<6;k++)                printf("%02d ",stu[k][i]);            printf("%4.1f\n",ave_g[i]);        }    }}
0 0