70818


データの個数を入力させ、その入力した要素全てと、その要素の合計を出力するプログラムを作成したいのですが、要素の合計が期待している数値と少し違います。  
私は以下のようにプログラムしました。

[code]

    #include <stdio.h>
    
    /* size個 の入力された実数データを 配列の先頭から順番に格納する */
    void readDoubleArray(double a[], int size)
    {
    int i;
    for(i=0;i<size;i=i+1) {
            printf("%d 番目? ", i+1);
            scanf("%lf", &a[i]);
    }
    }
    
    /* size個 の実数データが入っている配列を 配列の先頭から順に出力する */
    void printDoubleArray(double a[], int size)
    {
    int i;
    for(i=0;i<size;i=i+1) {
            printf("%lf ", a[i]);
    }
        printf("\n");
    }
    
    //要素数size の合計値を返す．
    
    double souwa(double a[], int size)
    {
    int i;
    double s;
    s=1;
    for(i=1;i<size;i=i+1) {
    s=s+a[i];
    }
    return s;
    
    }
    
    
    int main(void)
    {
        double data[1024];
        int size;
    
        printf("データの個数を入力してください：");
        scanf("%d",&size);
        readDoubleArray(data, size);
        printf("順番に出力:");
        printDoubleArray(data, size);
        printf("合計:%lf\n", souwa(data,size));
          
        return 0;
    }
    
[/code]

実行結果

[code]

    $ ./a.out
    データの個数を入力してください： 4
    1 番目? 2
    2 番目? 4
    3 番目? 6
    4 番目? 8
    順番に出力:2.000000 4.000000 6.000000 8.000000 
    合計:19.000000
    
[/code]

期待している実行結果

[code]

    $ ./a.out
    データの個数を入力してください： 4
    1 番目? 2
    2 番目? 4
    3 番目? 6
    4 番目? 8
    順番に出力:2.000000 4.000000 6.000000 8.000000 
    合計:20.000000
    
[/code]

どこが間違っているのでしょうか。ご回答よろしくお願いします。


CC BY-SA 4.0
2020-09-29T13:44:12.783
70816
2020-09-29T13:58:42.347
2020-09-29T13:52:59.290
41425
41837
question
c
要素の合計が期待している数値と少し違う


関数`souwa`の中に二か所間違いがあります。  
一つは、合計を入れる変数`s`を1で初期化していることです。ここは0でなければなりません。  
もう一つは、`for`内のインデックスを1から始めていることです。

結果的に、初期値の1に、配列の二番目から最後までを合計していて、

[code]

    1 + 4 + 6 + 8 = 19
    
[/code]

になっています。正しくは

[code]

    double souwa(double a[], int size)
    {
        int i;
        double s;
        s=0.0; // ここ
        for(/*ここ*/i=0;i<size;i=i+1) {
            s=s+a[i];
        }
        return s;
    }
    
[/code]


CC BY-SA 4.0
2020-09-29T13:58:42.347
70818
2020-09-29T13:58:42.347
3605
70816
answer