这是我昨晚提交的作业问题的扩展。该程序对我来说太混乱了,所以我退后了一步,重新开始了一些关于收益和通行证的新知识。整个程序应采用任意数量的整数,然后求和并求平均值,然后打印每个整数的平方根,如果任何整数小于20,则打印布尔值true或false,最后打印布尔值true或false。如果整数在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;
}
我得到的想法是,输入所需数量的整数,然后将其加一,将其加到输出中,然后重复进行直到完成。之后,它将打印出最终输出,所有整数的结果相加。但是相反,它打印为零。最初它打印出了我认为是内存地址和一些大垃圾编号的数据,因此我将其设置为零。但这只是创可贴解决方案,并不能解决问题本身。
答案 0 :(得分:0)
int output = functionSumAvg(number);
创建一个新的临时output
做
output = functionSumAvg(number);
答案 1 :(得分:0)
您的问题是您没有通过引用。您正在按价值传递。
您需要传递对和的引用(C中的指针),并传递(按值)要添加到和的新值。然后,调用例程将负责将和初始化为零。
int functionSumAvg(int *sum_pt, int input){…}
我不会告诉您其余的内容,因为它会影响您的学习。
注意:我的指针使用了_pt
后缀,我没有使用任何其他匈牙利符号。
答案 2 :(得分:0)
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);