繁体   English   中英

c-通过函数放置后输出未更改

c - output is not changing after being put through a function

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

这是我昨晚提交的作业问题的扩展。 该程序对我来说太混乱了,所以我退后了一步,重新开始了一些关于收益和通行证的新知识。 整个程序应采用任意数量的整数,然后求和并求平均值,然后打印每个整数的平方根,如果任何整数小于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;
}

我得到的想法是,输入所需数量的整数,然后将其加一,将其加到输出中,然后重复进行直到完成。 之后,它将打印出最终输出,所有整数的结果相加。 但是相反,它打印为零。 最初它打印出了我认为是内存地址和一些大垃圾编号的数据,因此我将其设置为零。 但这只是创可贴解决方案,而不能解决问题本身。

3 个回复
   int output = functionSumAvg(number);

创建一个新的临时output

 output = functionSumAvg(number);

您的问题是您没有通过引用。 您正在传递价值。

您需要传递对和的引用(C中的指针),并传递(按值)要添加到和的新值。 然后,调用例程将负责将和初始化为零。

int functionSumAvg(int *sum_pt, int input){…}

我不会告诉您其余的内容,因为它会影响您的学习。

注意:我为指针使用了_pt ,我没有使用任何其他匈牙利符号。

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);
1 数组通过void函数后未更改

我已经用Jacobi的算法用C语言编写了一个程序来计算矩阵的SVD。 我在程序中有3个函数:一个将执行SVD的名为jacobi_helper的函数,一个在初始化一些数组后调用jacobi_helper的名为jacobi的函数,以及一个调用jacobi的主要函数。 我的问题在于,在jaco ...

2 C#-为什么在通过方法放置此变量后不更改[重复]

这个问题已经在这里有了答案: NET中如何传递字符串? 3个答案 因此,我显然是编程新手,但是我试图弄清楚为什么它不起作用 我正在尝试使用字符串myname,并将Mr.添加到其开头。 我知道我可以简单地通过myname = "Mr. " + myname但 ...

3 通过C中的函数更改字符串

免责声明:以下代码取自youtube上的Derek Banas,我只是不明白它为什么起作用。 在下面的代码中,即使字符串的大小不同,整个字符串也会更改。 我不明白当for循环未遍历所有索引时如何更改整个字符串。 例如,如果oldString的长度为10,而newString的长度为5, ...

2014-10-19 02:54:09 1 38   c/ string
4 struct中的字符串放入vector后无法输出---问题

我在 struct 中定义了一个名为“atom”的字符串类。 像这样 然后我定义了一个向量和单个结构来获取输入数据。 到目前为止一切正常。 stotemp.atom.c_str() 的输出是正常的。 但是当我将 stotemp 放入向量 sto 时,发生了一些事情。 我无法从 sto[ ...

2020-10-21 03:28:39 1 51   c++
8 通过函数操作数组的输出中的 C 错误

好吧,我已经编写了这个简单的程序,它从一个字符数组和一个关键字中,将字符串中以该关键字开头的部分存储在另一个数组中。 如果我不使用任何函数来操作数组,它就可以工作,但我不明白的是为什么当它通过函数操作时它不起作用,在这种情况下 printf 没有输出。 不起作用的代码: 有效的代码: ...

9 传递给函数后,在Javascript中更改Labels值

我正在尝试为Java脚本创建一个函数,该函数可评估表单中的文本并使用有效条目或无效条目更新表单旁边的标签。 到目前为止,我的代码在这里工作 但是我想使用此功能并将其应用于html内的所有表单,每个表单旁边都有一个相应的标签。 我的问题是如何在不使用.getElementByI ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM