前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >差等生还是优等生

差等生还是优等生

作者头像
小Bob来啦
发布2020-12-15 09:36:50
3340
发布2020-12-15 09:36:50
举报
文章被收录于专栏:用户8057608的专栏

Think twice in all things, but think twice before you leap.

凡事要三思,但比三思更重要的是三思而后行。

帮助小伙伴改了一道题,如下:

任务:

有一个班4个学生,5门课程。

求第n门课程的平均分(1<=n<=5);

找出有m门以上课程不及格的学生(1<=m<=5),输出他们的学号和全部课程成绩及平均成绩;

找出平均成绩在x分以上或全部课程成绩在y分以上的学生,分别编写3个函数实现以上3个要求。

样例:

学号 成绩1 成绩2 成绩3 成绩4 成绩5

001 90.0 75.5 80.0 59.0 43.0

002 88.5 75.0 96.0 57.0 60.5

003 89.0 87.0 86.0 90.4 100.0

004 98.0 96.0 99.0 85.0 82.0

输入:

3

2

90

85

输出:

第3门课程的平均分为:

90.25

有2门以上课程不及格的学生信息为:

学号:

001

全部成绩:

90.0 75.5 80.0 59.0 43.0

平均成绩:

69.5

平均成绩在90分以上的学生为:

003 004

全部课程成绩在85分以上的学生为:

003

源代码(部分代码来自这位小伙伴哦):

代码语言:javascript
复制
#include <stdio.h>
void first_average(float (*p)[6],int n);
void fail(float (*p)[6],int m,int grade);
void excellent(float (*p)[6],int n);
int main()
{
    float sh[4][6]={{90.0,75.5,80.0,59.0,43.0,001},{88.5,75.0,96.0,57.0,60.5,002},{89.0,87.0,86.0,90.4,100.0,003},{98.0,96.0,99.0,85.0,82.0,004}};
    float (*p)[6]; //定义行指针
    int average,no,grade,ave_gra;
    p=sh;
    scanf("%d",&average);
    scanf("%d",&no);
    scanf("%d",&grade);
    scanf("%d",&ave_gra);
    printf("第%d门课的平均分为:\n",average);
    first_average(p,average);
    printf("有%d门以上不及格的学生信息为:\n",no);
    fail(p,no,grade);
    printf("全部课程成绩在%d分以上的学生为:\n",ave_gra);
    excellent(p,ave_gra);
    return 0;
}
void first_average(float (*p)[6],int n)
{
    float ave=0;
    int i=0;
    for(;i<4;i++)
        ave=ave+p[i][n-1];
    ave=ave/4;
    printf("%.2f\n",ave);
}

void fail(float (*p)[6], int m, int grade) {
    int i, j, k = 0;
    float ave = 0;
    for (i = 0; i < 4; i++) {
        for (j = 0; j < 5; j++) {
            if (*(*(p + i) + j) < 60)
                k++;
            if (k == m) {
                printf("学号为:\n");
                printf("00%.0f\n", p[i][j + 1]);
                printf("全部成绩:\n");
                for (j = 0; j < 5; j++) {
                    ave = ave + *(*(p + i) + j);
                    printf("%.1f", *(*(p + i) + j));
                }
                printf("\n");
                ave = ave / 5;
                printf("平均成绩:\n");
                printf("%.1f\n", ave);
                k = 0;
            }
        }
    }
    printf("平均成绩在%d分以上的学生为:\n",grade);
    for (i = 0; i < 4; i++) {
        for (j = 0; j < 5; j++) {
            ave = ave + *(*(p + i) + j);
        }
        ave = ave / 5;
        if(ave>grade){
            printf("00%.0f ",*(*(p + i) + j));
        }
        ave=0;
    }
    printf("\n");
}
void excellent(float (*p)[6],int n)
{
    int i,j;
    float ave=0,k=0;
    for(i=0;i<4;i++){
        for(j=0;j<5;j++){
            ave=ave+*(*(p+i)+j);
            if(*(*(p+i)+j) > n)
                k++;
        }
        if(k==5)
            printf("00%.0f",*(*(p+i)+5));
        ave=0;
        k=0;
    }
}

运行结果:

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-04-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员Bob 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档