粉红橘红橘粉 2022-03-19 21:27 采纳率: 100%
浏览 16
已结题

输出的均值为什么错?

代码:

/*
    编写一个程序,最多将 10 个 donation 值读入到一个 double 数组中
    (如果您愿意,也可以使用模板类 array)。
    程序遇到非数字输入时结束输入,
    并报告这些数字的平均值以及数组中有多少个数字大于平均值
*/

#include<iostream>
#include<cctype>
using namespace std;
const int Max = 10;

int main()
{
    double donation[Max];
    int i;
    char ch;
    int count = 0;
    double sum = 0.0;

    //将数据读入数组
    for (i = 0; i < Max; i++)
    {
        cout << "Enter the num" << i + 1 << " : ";
        cin >> ch;
        if (!isdigit(ch))
            break;
        donation[i] = ch;
        ++count;
        sum += donation[i];
    }
    
    if (count == 0)       //数组中没有数据
        cout << "No number.\a\n";
    else         
    {
        //输出均值
        cout << sum / count << " = average of "
            << count << " numbers.\n";
        //大于均值的数据的个数
        int temp = 0;
        for (i = 0; i < count; i++)
        {
            if (donation[i] > sum / count)
                ++temp;
        }
        cout << temp << " numbers > average.\n";
    }

    return 0;
}

结果:

Enter the num1 : 1
Enter the num2 : 2
Enter the num3 : 3
Enter the num4 : 4
Enter the num5 : e
50.5 = average of 4 numbers.
2 numbers > average.

想破脑袋没想明白,求解惑。

  • 写回答

2条回答 默认 最新

  • CSDN专家-link 2022-03-19 21:40
    关注

    你输入的都是字符啊,不是数字,实际是 '1','2','3','4','e',你计算的是这些字符的ASCII码的平均值
    '1'的ASCII码是49,'2'是50,'3'是51、'4'是52。这四个值相加除以4就是50.5了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月19日
  • 已采纳回答 3月19日
  • 创建了问题 3月19日

悬赏问题

  • ¥15 微信会员卡接入微信支付商户号收款
  • ¥15 如何获取烟草零售终端数据
  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?