10.15有一个班4个学生,5门课。(1)求第一门课的平均分;(2)找出有两门以上课程不及格的学生,输出他们的学号和全部课程成绩及平均成绩;(3)找出平均成绩在90分以上或全部课程成绩在85分以上的学...

不是很难,但是有点繁琐的一道题。注意要把用于计数的变量 count 放到合适的位置。

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

 

#include <stdio.h>

int main(){
    void avcour1(char (* pcourse)[10], float (* pscore)[5]);
    void avsco(float (*pscore)[5],float * paver);
    void fail2(char (* pcourse)[10], int * pnum, float (* pscore)[5], float * paver);
    void good(char (* pcourse)[10], int * pnum, float (* pscore)[5], float * paver);

char course[5][10]={"English","Computer","Math","Physics","Chemistry"};
char (* pcourse)[10];

int i, j,* pnum;
int num[4]={1001,1002,1003,1004};
float score[4][5]={{34,56,88,99,89},
                    {77,88,99,67,78},
                    {99,90,87,86,89},
                    {78,89,99,56,77}};
float (* pscore)[5],* paver;
float aver[4];

pnum=num;        //一维数组,存放学生编号
pscore=score;    //二维数组,存放学生的成绩
pcourse=course; //一维数组,存放课程名称
paver=aver;        //一维数组,存放每名学生平均成绩

//将学生编号和成绩打印
printf("NO. ");
for(i=0; i<5; i++){
    printf(",%s ",course[i]);
}
printf("\n");
//打印学生编号和成绩
for(i=0; i<4; i++){
    printf("%-8d",num[i]);
    for(j=0; j<5; j++){
        printf("%4.2f   ",score[i][j]);
    }
    printf("\n");
}

//每名学生所有课程的平均成绩
avsco(pscore, paver);

//1.求所有学生第一门课程的平均成绩
    avcour1(pcourse, pscore);
//2.找出两门以上课程不及格的学生,输出学号,成绩,平均成绩
    fail2(pcourse, pnum, pscore, paver);
//3.找出平均成绩在90分以上或全部课程成绩在85分以上的学生,输出学号,成绩,平均成绩
    good(pcourse, pnum, pscore,  paver);

    return 0;
}

void avsco(float (*pscore)[5],float * paver){
    int i,j;
    float sum,avg;
    for(i=0; i<4; i++){
        sum=0;
        for(j=0; j<5; j++){
            sum += *(*(pscore+i)+j);
        }
        avg = sum/5;//第i个学生的平均成绩
        *(paver+i)=avg;
    }

    for(i=0; i<4; i++){
    printf("第%d个学生的平均成绩为%4.2f  \n",i+1,*(paver+i));
    }
}

//1.
void avcour1(char (* pcourse)[10], float (* pscore)[5]){
    int i;
    float sum=0,avg1;
    for(i=0; i<4; i++){
        sum += *(*(pscore+i));
    }
    avg1 = (float)sum/4;
    printf("第一门课%s的平均成绩为:%4.2f\n",* pcourse,avg1);
}

//2.找出两门以上课程不及格的学生,输出学号,成绩,平均成绩
void fail2(char (* pcourse)[10], int * pnum, float (* pscore)[5], float * paver){
    int i,j,count;
    
    printf("\n下面的学生有两门及以上的课程不及格.\n");
        //将学生编号和成绩打印
        printf("NO. ");
        for(i=0; i<5; i++){
            printf(",%s ",*(pcourse+i));
        }
        printf("average");
        printf("\n");

    
    for(i=0; i<4; i++){
        count=0;
        for(j=0; j<5; j++){
            if(*(*(pscore+i)+j) < 60 ) count++;
        }
        if(count>=2){
            printf("%-8d",*(pnum+i));
            for(j=0; j<5; j++){
            printf("%4.2f   ",*(*(pscore+i)+j));
            }
            printf("%4.2f   ",*(paver+i));
            printf("\n");
        }
    }
}

//3.找出平均成绩在90分以上或全部课程成绩在85分以上的学生,输出学号,成绩,平均成绩
void good(char (* pcourse)[10], int * pnum, float (* pscore)[5], float * paver){
        int i,j,count;
        printf("\n下面的学生平均成绩在90分以上或全部课程成绩在85分以上.\n");
        //将学生编号和课程打印
        printf("NO. ");
        for(i=0; i<5; i++){
            printf(",%s ",*(pcourse+i));
        }
        printf("average");
        printf("\n");
        for(i=0; i<4; i++){
            count=0;
            for(j=0; j<5; j++){
                if(*(*(pscore+i)+j) > 85) count++;
            }
            if(count==5 || *(paver+i)>90){
                printf("%-8d",*(pnum+i));
                for(j=0; j<5; j++){
                printf("%4.2f   ",*(*(pscore+i)+j));
                }
                printf("%4.2f   ",*(paver+i));
                printf("\n");
            }
        }
}

 

结果:

转载于:https://www.cnblogs.com/Allen-win/p/7280047.html

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值