循环语句刚学,老是弄不懂

缺考名单

题目描述

班上最近组织了一场考试。分数改出来了。

但是发现有几位同学缺考,缺考的同学不会被计入参加考试人数。

现在请你统计班上的平均分。

输入格式

你的程序将会输入两行,第一行包含一个整数n,表示班级总人数。

接下来n个空格隔开的浮点数,表示每位同学的考试分数,其中缺考的同学被标记为0分。

n≤60

输出格式

你的程序输出仅一行,表示这场考试的班级平均分,答案保留2位小数。

样例 #1

样例输入 #1

5
95 92 97 0 94

样例输出 #1

94.50

提示

有一位同学缺考,参加考试的四位同学平均分94.5

累加所有的成绩,并统计0的个数,用总成绩除以(n减去0的个数)求平均值

img

代码:


#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
    int n, cnt = 0;
    float sum = 0;
    float t;
    cin >> n;
    for (int i = 0; i < n; i++)
    {
        cin >> t;
        if (0 == (int)t)
            cnt++; //0分的个数
        else
            sum += t;
    }
    cout << fixed << setprecision(2) << sum / (n - cnt);
    return 0;
}

思路是用一个double类型的avg去存储总分,用cnt存储非缺考的同学,最后用avg/cnt即可得到平均分,代码如下:

double avg = 0.0 ,f[60];
int ans = 0;
int x;
scanf("%d",&x);
for(int i = 0 ; i < x ; i++)
  scanf("%d",&f[i]);
for(int i = 0 ; i < x; i++){
  if(f[i] != 0){
      cnt++;
      avg += f[i];
}
printf("%.2f",avg/cnt);
}

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632