Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C中添加字段的值?_C_Arrays - Fatal编程技术网

在C中添加字段的值?

在C中添加字段的值?,c,arrays,C,Arrays,我想问你如何在C中添加数组的值。 例如: 我想要以下输出: 0.2 0.4 0.7 0.85 我该怎么做?特种操作员? PS:我想在一个简单的for循环中这样做。没有额外的图书馆等。很多失败。这么多的错误 将您的问题标记为[C]或[C++],但不能同时标记这两者。 它们不是一回事 如果声明数组[5],则有效标记为0到4。 数组[5]超出范围 您描述需要输出,但您的程序没有输出! 显示printf、cout或类似的输出语句 如果要向数组成员添加值,很简单: Array[2] = Array[2]

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

我想要以下输出:

0.2
0.4
0.7
0.85
我该怎么做?特种操作员?
PS:我想在一个简单的for循环中这样做。没有额外的图书馆等。

很多失败。这么多的错误

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

如果声明数组[5],则有效标记为0到4。 数组[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;
}

在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::partial_sum作为示例

#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 );
#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];
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;
}
我不知道你是否想要C或C++,这是C++的。 我也没有添加名称空间std,也没有在循环中包含iostream


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

没有数组[5]元素。元素的范围为0到4。double val=0.2;double*arr=malloc sizeof double*5;内存集arr,val,5;本:我没有看到他们要求动态数组的任何证据。@GeorgeT,不过速度可能更快。“我的意思是,这两种方法都有效。”本,那是行不通的。memset只能处理字节。答案很公平。你的Primtf需要一个I.但是,C和C++的1是不一样的。
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 );
}
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 ) );;
for(int i = 0; i<5; i++)
{
 Array[i]=Array[i]+Array[i+1];
 cout<< Array[i];
}