C++ 为什么我在试图找到n个元素的平均值时没有得到正确的值?
我正在阅读一本O'reilly编程书,其中一个问题是“编写一个平均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
#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)那样。