在 C++ 中,您可以使用基于范围的 for 语句来做到这一点
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 ) );;