C++ 为什么我在试图找到n个元素的平均值时没有得到正确的值?

C++ 为什么我在试图找到n个元素的平均值时没有得到正确的值?,c++,C++,我正在阅读一本O'reilly编程书,其中一个问题是“编写一个平均n个元素的程序” 这是我的代码: #include <iostream> int n; //number of numbers int number; //the numbers to be averaged float avg; //the average of the elements int counter; //iterator int main() { std::cout << "Pl

我正在阅读一本O'reilly编程书,其中一个问题是“编写一个平均n个元素的程序”

这是我的代码:

#include <iostream>

int n; //number of numbers
int number; //the numbers to be averaged
float avg; //the average of the elements
int counter; //iterator

int main()
{
    std::cout << "Please enter the number of elements you want averaged: ";
    std::cin >> n;
    avg = 0;

    counter = 0;
    while (counter < n)
    {
        std::cout << "enter number: ";
        std:: cin >> number;

        number += number;

        ++counter;

    }

    avg = number/n;

    std::cout << "Average of your " << n << " elements is: " << avg;

    return 0;
}
#包括
int n//数目
整数//要平均的数字
浮动平均值//元素的平均值
整数计数器//迭代器
int main()
{
std::cout>n;
平均值=0;
计数器=0;
while(计数器number;
数字+=数字;
++计数器;
}
平均值=数量/n;
std::cout两个问题

(一)

我假设
number
是所有数字的总和,但这里您也使用它来存储单个数字,当您为变量赋值时,它会覆盖已经存在的值。您必须使用两个不同的变量名,例如

    std:: cin >> number;

    sum += number;
(二)

number/n;
是整数除法,因为
number
是整数,而
n
是整数。整数除法向下舍入。将表达式的结果分配给浮点是不够的-为时已晚,表达式已被计算为整数除法

您需要浮点除法,例如,也需要求和/(双)n。

两个问题

(一)

我假设
number
是所有数字的总和,但这里您也使用它来存储单个数字,当您为变量赋值时,它会覆盖已经存在的值。您必须使用两个不同的变量名,例如

    std:: cin >> number;

    sum += number;
(二)

number/n;
是整数除法,因为
number
是整数,而
n
是整数。整数除法向下舍入。将表达式的结果分配给浮点是不够的-为时已晚,表达式已被计算为整数除法


你想要浮点除法,所以要求和/(双精度)n
例如。

你读数字
3
。你说
number+=number
,这使它成为
6
,并将计数器递增到
1
。然后你再次读数字,它变成
3
,再次添加,再次
6
,递增,计数器。第三次,同样的情况发生


所以你得到了
6/2
,它是3。

你读数字
3
。你说
number+=number
,这使它成为
6
,递增计数器到
1
。然后你再次读数字,它变成
3
,再次添加,再次
6
,递增,计数器。第三次,同样的情况发生


因此,您得到的是
6/2
,即3。

您将输入读取到
number
,但实际上您并没有保留输入的所有数字的总数,而这正是您解决此问题的真正需要。

您将输入读取到
number
,但实际上您并没有保留输入的所有数字的总数,这才是您真正需要的数字我需要解决这个问题。

每次你说
cin>>number;
,它都会覆盖以前的值。
number+=number;
将它乘以2。每次你说
cin>>number;
,它都会覆盖以前的值。
number+=number;
将它乘以2。谢谢你,这解决了问题。但是,我相信是的你的意思是“和/(双)n”。不管怎样,谢谢。@MauriceAbney是的,这是真的,在修正1)之后你会修正2)那样。谢谢,伙计,这修正了问题。但是,我相信你的意思是“和/(双)n”。不管怎样,谢谢。@MauriceAbney是的,这是真的,修正1)之后你会修正2)那样。