

データ数を入力し、そのデータの数だけの点数を読み込み、その点数と偏差値を表示するプログラムを作成したいのですが、  
コンパイルは正しくできたものの、偏差値の部分がなぜか「inf」と表示されてしまいます。なぜでしょうか。

**ソースコード**

[code]

    #include <stdio.h>
    /* 要素数sizeの実数配列aに順に入力する */
    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の実数配列aを順に出力する */
    void printDoubleArray(double a[], int size)
    {
        int i;
        for(i=0;i<size;i=i+1) {
            printf("%f ",a[i]);
        }
        printf("\n");
    
    }
    
    /* 要素数sizeの実数配列aの平均を *ave に，分散を *var に格納する */
    void ave_var_double_array(double a[], int size, double *ave, double *var, double *hyoujunnhennsa, double *hensati)
    {
        int i;
        double sum=0.0, dsum=0.0;
        for(i=0;i<size;i=i+1) {
            sum=sum+a[i]; 
           *ave=sum/size;
        }
        for(i=0;i<size;i=i+1) {
            dsum=dsum+(a[i]-*ave)*(a[i]-*ave); 
           *var=dsum/size;
        }for(i=0;i<size;i=i+1) {
            *var=(*hyoujunnhennsa)*(*hyoujunnhennsa);
            *hensati=((10*(a[i]-*ave))/(*hyoujunnhennsa))+50;
        }    
    }
    
    
    int main(void)
    {
        double a[100], ave, var,hyoujunnhennsa,hensati ;
        int num;
         
        printf("データ数? ");
        scanf("%d", &num);
    
        readDoubleArray(a, num);
        
        ave_var_double_array(a,num,&ave,&var,&hyoujunnhennsa,&hensati);
     
        printf("得点: ");
        printDoubleArray(a,num);
        printf("偏差値: %.1f\n",hensati);
    
        return 0;
    }
    
[/code]

**実行結果**

[code]

    $ ./a.out
    データ数? 5
    1番目?40
    2番目?56
    3番目?92
    4番目?78
    5番目?67
    得点: 40.000000 56.000000 92.000000 78.000000 67.000000 
    偏差値: inf
    
[/code]

コアダンプや、全てが０表示などは経験していますが、「inf」という表示は初めてなので聞いている次第です。  
私のプログラムはどこがおかしいのでしょうか。ご回答よろしくお願いします。


CC BY-SA 4.0
2020-10-09T13:13:51.833
71048
2020-10-09T13:57:39.787
2020-10-09T13:32:23.097
32986
41837
question
c
実行時に「inf」が表示されました


infは無限大を表すものです。(infinity)

main関数で宣言したhyoujunnhennsaを初期化せずに関数に渡して、内部で除算に使用しているので、0除算が起こっているのだと思います。


CC BY-SA 4.0
2020-10-09T13:57:39.787
71051
2020-10-09T13:57:39.787
9515
71048
answer