gpt4 book ai didi

c++ - 使用函数计算总和和平均值的程序

转载 作者:太空宇宙 更新时间:2023-11-04 12:54:12 25 4
gpt4 key购买 nike

我在做一道C++题,需要生成一个随机数,那么这个随机数就是程序会提示用户输入多少个整数。

然后我需要使用两个单独的函数:1 计算并返回总和,另一个计算并返回平均值。

到目前为止,这是我的代码:

#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;

int calculateSum(int, int);
int calculateAvg(int, int, int);

int main()
{
int sum = 0;
int average = 0;
int x;
int y;
int n = 0;

srand(time(0));
y = rand() % 10;

for (x = 1; x <= y; x++) {
cout << "Enter integer " << x << ": ";
cin >> n;
}
cout << "Sum: " << calculateSum(n, sum) << endl;
cout << "Average: " << calculateAvg(average, sum, y) << endl;

system("pause");
return 0;
}

int calculateSum(int n, int sum)
{
sum = sum + n;
return sum;
}

int calculateAvg(int average, int sum, int y)
{
average = sum / y;
return average;
}

代码的问题是每当我运行它时,它只需要最后一个整数来计算总和(例如,如果输入的最后一个整数是 5,则所有整数的总和将是 5,这是不正确的,因为它忽略用户之前的整数),并且平均值始终为 0,我们将不胜感激解决这些问题的任何帮助。

最佳答案

您的 int n 只能容纳一个整数,因此您的 for 循环只会用您输入的每个整数覆盖 n。自然地,您输入的最后一个整数将是您离开 for 循环时唯一保存的整数。

您需要在 for 循环中调用 calculateSum(),以便在循环的每次迭代中递增 sum。所以不是:

for (x = 1; x <= y; x++) {
cout << "Enter integer " << x << ": ";
cin >> n;
}
cout << "Sum: " << calculateSum(n, sum) << endl;

你可以这样设置:

for (x = 1; x <= y; x++) {
cout << "Enter integer " << x << ": ";
cin >> n;
sum = calculateSum(n, sum); // increment sum every iteration
}
cout << "Sum: " << sum << endl;

与此特定问题有些无关的是,您的 calculateSum()calculateAvg() 函数实际上并没有更新 sumaverage 您在 main() 中定义的变量;它们只返回这些函数的结果。

要通过引用传递 sumaverage(您要在此处完成的操作),您需要更改函数签名:

int calculateSum(int n, int sum);
int calculateAvg(int average, int sum, int y);

收件人:

void calculateSum(int n, int &sum);
void calculateAvg(int &average, int sum, int y);

(我还将返回类型从 int 更改为 void,因为您不需要返回 sum平均值 - 你已经在它们各自的函数中修改了它们)

关于c++ - 使用函数计算总和和平均值的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47404533/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com