在C中添加字段值?

时间:2014-04-22 12:26:54

标签: c arrays

我想问你如何在C中添加数组的值。 例如:

Array[5]
--------
Array[1]=0.2
Array[2]=0.2 ----> I want to add the first 0.2 to the second 0.2 (=0.4)
Array[3]=0.3
Array[4]=0.15

我想要关注输出:

0.2
0.4
0.7
0.85

我该怎么做?特约经营者? PS:我想在一个简单的for循环中做到这一点。不是额外的图书馆等。

3 个答案:

答案 0 :(得分:6)

很多失败。这么多错误。

标记您的问题[C] [C++],但不能同时为两者。
它们不是一回事。

如果您声明Array[5],则有效的指示为04
Array[5] 超出范围

您描述了想要的输出,但您的程序没有输出!
显示printfcout或类似的输出语句。

如果要向数组成员添加值,则很简单:

Array[2] = Array[2] + 0.2;

如果要将两个数组成员一起添加:

Array[2] = Array[1] + Array[2];

虽然你没有明确说明,但看​​起来你想让数组的每个成员都是所有早期成员(包括它自己)的总和。

这是我的代码:

int main(void)
{
    double array[] = { 0.2,
                       0.2,
                       0.3,
                       0.15
                     };

    for(int i=1; i<4; ++i)
    {
        array[i] += array[i-1];
    }

    for(int i=0; i<4; ++i)
    {
        printf("[%d] : %lf\n", i, array[i]);
    }

    return 0;
}

答案 1 :(得分:2)

在C ++中,您可以使用基于范围的语句

来完成此操作
double Array[5] = { 0.2, 0.2, 0.3, 0.15, 0.4 };

double sum = 0.0;

for ( double x : Array ) sum += x;

如果您需要添加中间和的输出,那么您可以将上面的代码编写为

double Array[5] = { 0.2, 0.2, 0.3, 0.15, 0.4 };

double sum = 0.0;

for ( double x : Array ) 
{ 
    sum += x;
    std::cout << sum << ' ';
}

或者您可以应用标准算法std::accumulate例如

#include <numeric>
#include <iterator>

//...

double Array[5] = { 0.2, 0.2, 0.3, 0.15, 0.4 };

double sum = std::accumulate( std::begin( Array ), std::end( Array ), 0.0 );

如果只需输出部分和,则可以使用标准算法std::partial_sum例如

#include <numeric>
#include <iterator>
#include <iostream>

//...

double Array[5] = { 0.2, 0.2, 0.3, 0.15, 0.4 };

std::partial_sum( std::begin( Array ), std::end( Array ), 
                  std::ostream_iterator<double>( std::cout, " " ) );

或者你可以自己写一个循环。例如

double Array[5] = { 0.2, 0.2, 0.3, 0.15, 0.4 };

double sum = 0.0;

for ( size_t i = 0; i < sizeof( Array ) / sizeof( *Array ); i++ ) sum += Array[i];

此循环也可以在C。

中使用

使用C函数printf输出相同的代码

double Array[5] = { 0.2, 0.2, 0.3, 0.15, 0.4 };

double sum = 0.0;

for ( size_t i = 0; i < sizeof( Array ) / sizeof( *Array ); i++ ) 
{
    sum += Array[i];
    printf( "%f ", sum );
}

在C语言中,您还可以为double类型的数组编写自己的算法。例如

double Accumulate( const double a[], size_t n )
{
   double sum = 0.0;

   for ( const double *p = a; p < a + n; ++p ) sum += *p;

   return sum;
}

可以通过以下方式调用

double Array[5] = { 0.2, 0.2, 0.3, 0.15, 0.4 };

double sum = Accumulate( Array, sizeof( Array ) / sizeof( *Array ) );;

答案 2 :(得分:-3)

for(int i = 0; i<5; i++)
{
 Array[i]=Array[i]+Array[i+1];
 cout<< Array[i];
}

我不知道你是否想要它在c或c ++中(这个是在c ++中) 我也没有添加名称空间std,也没有包含iostream循环。

你需要记住一个数组从0开始而不是1,这就是为什么我用0开始循环。