2023.求平均成绩

求平均成绩

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 121288 Accepted Submission(s): 27781

Problem Description
假设一个班有n(n<=50)个学生,每人考m(m<=5)门课,求每个学生的平均成绩和每门课的平均成绩,并输出各科成绩均大于等于平均成绩的学生数量。

Input
输入数据有多个测试实例,每个测试实例的第一行包括两个整数n和m,分别表示学生数和课程数。然后是n行数据,每行包括m个整数(即:考试分数)。

Output
对于每个测试实例,输出3行数据,第一行包含n个数据,表示n个学生的平均成绩,结果保留两位小数;第二行包含m个数据,表示m门课的平均成绩,结果保留两位小数;第三行是一个整数,表示该班级中各科成绩均大于等于平均成绩的学生数量。
每个测试实例后面跟一个空行。

Sample Input
2 2
5 10
10 20

Sample Output
7.50 15.00
7.50 15.00
1

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int n,m,i,j,k,s;
    double score[50][5];
    while(scanf("%d%d",&n,&m)==2)
    {
        double a[50]={0},b[5]={0},c[50]={0},d[5]={0};//清零的作用
        for(i=0;i<n;i++)
        {
             for(j=0;j<m;j++)
          {
            scanf("%lf",&score[i][j]);
            a[i]=a[i]+score[i][j];//计算每个学生的总成绩
            b[j]=b[j]+score[i][j];//计算每科的总成绩
          }
        }
        for(i=0;i<n;i++)//计算每个学生的平均成绩
        {
            c[i]=a[i]/m;
            if(i<n-1)
            {
                printf("%.2lf ",c[i]);
            }
            else
            {
                printf("%.2lf\n",c[i]);
            }
        }
        for(i=0;i<m;i++)//计算每科的平均成绩
        {
            d[i]=b[i]/n;
            if(i<m-1)
            {
                printf("%.2lf ",d[i]);
            }
            else
            {
                printf("%.2lf\n",d[i]);
            }
        }
        s=0;
        for(i=0;i<n;i++)//该班级中各科成绩均大于等于平均成绩的学生数量
        {
             k=1;
             for(j=0;j<m;j++)
          {
              if(score[i][j]<d[j])
              {
                  k=0;
                  break;
              }
          }
          if(k==1)
          {
              s++;
          }
        }
        printf("%d\n\n",s);
    }
    return 0;
}
好的,以下是个人成绩管理脚本程序的要1. 输入姓名、语文成绩、数学成绩、英语成绩,将这些信息存储到以姓名命名的文件中(例如:张三.txt)。 2. 输入姓名,能够查询该生的语文、数学、英语成绩,并计算出总分和平均分。 3. 输入所有,能够查询所有学生的语文、数学、英语成绩,并计算出总分和平均分。 4. 输入exit,退出程序。 下面是脚本程序的代码: ``` #!/bin/bash while true do echo "请输入您的选项:" echo "1. 输入姓名及成绩" echo "2. 查询个人成绩" echo "3. 查询所有成绩" echo "exit. 退出程序" read option case $option in 1) echo "请输入姓名:" read name echo "请输入语文成绩:" read chinese echo "请输入数学成绩:" read math echo "请输入英语成绩:" read english echo -e "$name\t$chinese\t$math\t$english" >> "$name.txt" echo "信息已保存到文件$name.txt" ;; 2) echo "请输入要查询的姓名:" read name if [ -f "$name.txt" ]; then echo "姓名 语文数学英语 总分 平均分" sum=0 count=0 while read line do echo -ne "$line\t" score=$(echo $line | awk '{print $2+$3+$4}') echo -ne "$score\t" sum=$(echo "$sum+$score" | bc) count=$(echo "$count+1" | bc) done < "$name.txt" avg=$(echo "scale=2;$sum/$count" | bc) echo -ne "$sum\t$avg\n" else echo "未找到姓名为$name的文件!" fi ;; 3) echo "姓名 语文数学英语 总分 平均分" sum=0 count=0 for file in *.txt do name=$(echo $file | cut -d '.' -f 1) echo -ne "$name\t" while read line do score=$(echo $line | awk '{print $2+$3+$4}') echo -ne "$line\t" sum=$(echo "$sum+$score" | bc) count=$(echo "$count+1" | bc) done < "$file" echo "" done avg=$(echo "scale=2;$sum/$count" | bc) echo -e "所有学生总分为:$sum\t平均分为:$avg" ;; exit) echo "程序已退出!" exit;; *) echo "无效的选项,请重新选择!";; esac done ``` 注意:在使用之前,需要将脚本中的日期改为当前日期,例如:/tmp/2021.12.31
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值