小Bob 小Bob Bob来啦

2020年04月28日 23:49 __ _ _ _ _

文章配图

**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

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


#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;    }}

运行结果:

文章配图

文章配图

最后的话:刷题要找自己的不足,然后去专攻。

往期推荐:

刷新路由3的那些事(二) 2020-04-24
文章配图

关于路由的其他功能(剧终) 2020-04-25
文章配图

C++预告 2020-04-27
文章配图

公众号:程序员Bob

一个正在学习C语言的人,致力于将C讲得更透彻!

点赞关注谢谢你

长按下图二维码关注,和你一起领悟程序员的魅力。

文章配图

点“ 在看 ” 你懂得

文章配图

预览时标签不可点

阅读




__