gpt4 book ai didi

c - 通过函数后输出没有改变

转载 作者:行者123 更新时间:2023-11-30 16:27:19 24 4
gpt4 key购买 nike

这是我昨晚提交的作业问题的延伸。这个程序对我来说太困惑了,所以我退后一步,重新开始,了解一些关于返回和路过的新知识。整个程序的目的是取任意数量的整数,首先求总和和平均值,然后打印每个整数的平方根,然后如果任何整数小于 20 则打印 bool 值 true 或 false,最后打印 bool 值 true 或如果任何整数在 10 到 90 之间,则返回 false。

但现在我需要做的就是集中精力解决这个问题。目前我只想解决其中的总和和平均部分。它必须使用传递引用来完成,据我所知,这是我在下面所示的代码中使用的:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int functionSumAvg(int sumAvgInput);

void main()
{
int amountOfNumbers,number,x,output;

output = 0;

printf("Enter how many numbers you want: ");
scanf("%d",&amountOfNumbers);
printf("Input each number, separated by a space: ");

for(x = 0; x < amountOfNumbers; ++x){
scanf("%d",&number);
int output = functionSumAvg(number);

}
printf("output: %d",output);
}


int functionSumAvg(int sumAvgInput){
int sum =+ sumAvgInput;
return sum;
}

我得到的想法是,输入所需的整数数量,然后将其相加,将该总和添加到输出中,然后重复直到全部完成。然后它会打印出最终的输出,即所有整数相加的结果。但它却打印出零。最初它打印出我认为是内存地址的内容,一些大的垃圾数字,所以我将其设置为零。但这只是权宜之计,并没有解决问题本身。

最佳答案

fuctionSumAvg 不计算任何内容的总和或平均值。它只是将局部变量 sum 设置为它收到的数字,并返回相同的数字。它不会将其添加到之前的总数中。计算平均值需要将总和除以元素数量,但您永远不会对任何内容进行求和或计数。

您可以使用静态变量来保存运行总和和计数。但由于函数只能返回一个值,因此您需要使用指针参数来返回第二个值。

int functionSumAvg(int sumAvgInput, int *avg){ // return value is sum
static int sum = 0;
static int count = 0;
sum += sumAvgInput;
count++;
*avg = sum/count;
return sum;
}

然后你这样调用它:

int sum, average;
sum = functionSumAvg(number, &average);
printf("Sum = %d Average = %d\n", sum, average);

关于c - 通过函数后输出没有改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52783327/

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