我正在尝试编写一个检查特定数字的函数,如果找到该数字,它将添加到总数中。

#include <stdio.h>

void unitSum(int input[], int output, int unit)
{     
   for (int n = 0; n < 5; n++)
   {
      if(input[n] == unit)  
         output = output + unit;
   }
} 

int main (void)
{
    int array[5];
   int total = 0;

   for(int a = 0; a < 5; a++)
   {
    scanf("%d", &array[a]);
   }

   unitSum(array, total, 1);

 /*for (int n = 0; n < 5; n++)
   {
      if(array[n] == 1) 
         total = total + 1;
   }*/

    printf("%d", total);
}

如果我使用输入“ 1 1 1 2 2”运行该程序,则输出为0。但是,如果我取消注释底部的FOR循环,并注释掉函数调用。 输出变为3(我想要)。

我是否缺少简单的东西?

===============>>#1 票数:5

C ,参数由传递,而不是通过引用,这意味着你的函数使你的变量的副本, output和处理只与复印,因此它不会改变原来的。 因此,如果您希望某个函数不在本地更改其参数之一,则必须将指针传递给它。
在您的代码中,这将解决:

// int *output is the pointer to an int variable
void unitSum(int input[], int *output, int unit)
{     
    for (int n = 0; n < 5; n++) {
        if(input[n] == unit)  
            // here you change the value of the variable that is 
            // located in this address in memory
            (*output) = (*output) + unit;
    }
} 

// ...

// &total is the pointer to variable total
unitSum(array, &total, 1);    

===============>>#2 票数:1

只需更改您的调用函数行unitSum(array,total,1);

总计total = unitSum(array,total,1); 并在您的功能单元中求和

返回类型为int并在关闭for循环后返回输出。

解决了。

int unitSum(int input[], int output, int unit)
{     
   for (int n = 0; n < 5; n++)
   {
      if(input[n] == unit)  
      output = output + unit;
   }
   return output;
 } 

快乐的编码。

  ask by maffu translate from so

未解决问题?本站智能推荐:

1回复

C#定义功能

我目前想用函数代替定义 这是定义 我想让他们在功能而不是定义。 这是调用定义的代码段: 我的想法是执行以下操作 但这并没有达到预期效果,因为现在结果为假。 任何建议如何正确执行此操作?
3回复

C中的字符功能

我想在C中创建一个函数,但是无知该怎么做我知道如何使用整数而不是字符/字符串 这允许我读名字。 %d只是一个数字 我想创建一个函数,它生成一个随机数(我知道该怎么做),然后打印出一个问候消息 所以这样的事情 现在有人可以告诉我如何将上面的代码块放在一个函数中
3回复

在C中定时功能

我试图找出函数在C中执行所需的时间。我正在尝试的是以下内容: 但是,对于不同的函数,返回值始终相同:1389133144秒。 有帮助吗? 谢谢!
2回复

C标头中的功能?

我听说您将函数原型放在头文件中,然后将函数定义放在.c文件中。 但是,这是什么.c文件。 例如,如果要包含文件“ foo.h”,您将调用上述.c文件“ foo.c”,将函数定义放入其中,将其与foo.h放在同一位置,然后当您尝试包含foo.h时,该功能是否将从c文件中继承下来,并且该功能可以
3回复

C中的功能警告

大家好,我有3个功能,收到4个警告...! 第一个是这个 为此,编译器警告我设置了变量x,但未使用...! 但是实际上我正在使用变量x ... !!! 第二个功能是这个... 为此,我收到两个警告,可能在此函数中未初始化使用estor_mem和best_mem变量。
6回复

C语言功能

该代码运行良好。 但这还需要更多。 那就是..我必须在main中声明一个“ Show”函数。 为什么我需要这样做?
3回复

C中的退出功能

我在大学里有这门课程,并且不允许我们使用stdlib。 我在某些地方使用了退出功能,由于某种原因,Visual Studio并没有因为不包括stdlib而对我大喊大叫。 现在,我正在大学服务器上进行编译,显然它不起作用(我不知道exit属于stdlib)。 问题:如何定义退出功能?
1回复

C程序功能

我不想以代码的形式回答,但是我确实需要知道如何开始解决这个问题。 我刚刚开始学习C语言,在学习过程中,我一直困扰着这个令人困惑的问题。 问题如下: 编写一个函数来计算两个点之间的距离,并使用它来开发另一个函数,该函数将计算其顶点为* A(x1,y1),B(x2,y2) 和C(x3,
2回复

关于C中的功能

我是c编程的初学者。 我正在研究一些开源代码并看到了这个: 我不知道这是什么,因为缺乏我的知识不能以更好的方式提出问题。 抱歉。 有谁能告诉我这是什么? (即使你看到类似的东西,你也可以提一下。) 谢谢。 确切的功能是:
3回复

C中的功能帮助

我将多次重复使用此代码,因此我想使用它。 功能。 我不确定指针如何与此一起工作。 我的目标是,以检查是否mneumonic等于任何值的strings_label_table 。 如果mneumonic等于值之一,我想设置string_equal_flag = 1并返回它;如果未设置,则r