我想问你如何在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循环中做到这一点。不是额外的图书馆等。
答案 0 :(得分:6)
很多失败。这么多错误。
标记您的问题[C]
或 [C++]
,但不能同时为两者。
它们不是一回事。
如果您声明Array[5]
,则有效的指示为0
到4
。
Array[5]
超出范围。
您描述了想要的输出,但您的程序没有输出!
显示printf
或cout
或类似的输出语句。
如果要向数组成员添加值,则很简单:
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开始循环。