9-10 成绩计算

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


输出数据:

第一行输出第一门课程的平均分

接下来输出有2门及以上课程不及格的学生,每个学生占3行

接下来输出平均成绩在90分以上或全部课程成绩在85分以上的学生,每个学生占3行

整数成绩用%4d,实数用%.2f输出。

函数接口定义:

void average1(int (*p)[5],int n);
void average2(int *p, float *a);
void find1(int (*p)[5],float *a);
void find2(int *p,float *a);

其中函数 average1 输出第一门课的平均分,average2 计算每个学生的平均分放在数组a[ ]中, find1 输出有两门以上不及格的学生, find2 输出平均分在90分以上或每门课85分以上的学生。

裁判测试程序样例:

在这里给出函数被调用进行测试的例子。例如:
#include <stdio.h>

void average1(int (*p)[5],int n);
void average2(int *p, float *a);
void find1(int (*p)[5],float *a);
void find2(int *p,float *a);

int main()
{int score[4][5];
 int i,j;
 float aver[4];
 for (i=0; i<4; i++)                     //输入4个学生5门课的成绩
  for (j=0; j<5; j++)
   scanf("%d",*(score+i)+j);
 average1(score,4);                     //计算第一门课的平均分
 average2(*score,aver);    //计算每个学生的平均分放在数组aver中
 find1(score,aver);                     //输出有两门以上不及格的学生
 find2(*score,aver);   //输出平均分在90分以上或每门课85分以上的学生
 return 0;
}

/* 你的程序将嵌在这里 */

输入样例:

96 82 88 99 97
78 89 96 76 65
67 55 87 34 44
87 88 89 87 93

输出样例:

average of score 1 is 82.00
number 3 failed with 3
his score is  67  55  87  34  44
average score is 57.40
number 1 is very good
his score is  96  82  88  99  97
average score is 92.40
number 4 is very good
his score is  87  88  89  87  93
average score is 88.80

 参考

void average1(int (*p)[5],int n)
{
    int i,s;
    for(i=0,s=0; i<4; i++)
    {
        s=s+p[i][0];
    }
    printf("average of score 1 is %.2f\n",s*1.0/4);
}
void average2(int *p, float *a)
{
    int i,j,s;
    float average;
    for(i=0; i<4; i++)
    {
        for(j=0,s=0; j<5; j++)
        {
            s=s+p[i*5+j];
        }
        average=s*1.0/5;
        a[i]=average;
    }
}
void find1(int (*p)[5],float *a)
{
    int i,j,n;
    for(i=0; i<4; i++)
    {
        for(j=0,n=0; j<5; j++)
        {
            if(p[i][j]<60)
            {
                n++;
            }
        }
        if(n>=2)
        {
            printf("number %d failed with %d\n",i+1,n);
            printf("his score is%4d%4d%4d%4d%4d\n",p[i][0],p[i][1],p[i][2],p[i][3],p[i][4]);
            printf("average score is %.2f\n",a[i]);
        }
    }
}
void find2(int *p,float *a)
{
    int i,j,n;
    for(i=0; i<4; i++)
    {
        for(j=0,n=0; j<5; j++)
        {
            if(p[i*5+j]>85)
            {
                n++;
            }
        }
        if((n==5)||(a[i]>90.0))
        {
            printf("number %d is very good\n",i+1);
            printf("his score is%4d%4d%4d%4d%4d\n",p[i*5+0],p[i*5+1],p[i*5+2],p[i*5+3],p[i*5+4]);
            printf("average score is %.2f\n",a[i]);
        }
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值