0

奇数のすべての積を取得するのに問題があります。1、3、2、2 を入力すると、すべての奇数の積が 0 になり、1*3 =3 が実行されません。理由を指摘してください、事前に感謝します...

#include <stdio.h>
#include <conio.h>

int main()
{  
int arr[2][2], r, c, sum=0, prod, sumD=0, count=0, count2=0, sumAveEven;

for (r=0; r < 2; r++)
{


    for (c=0; c < 2; c++)
    {
        printf("Enter  Numbers: ");
        scanf("%d", &arr[r][c]);  


        if(r==c)
        {
           sumD = sumD + arr[r][c];  //sum of diagonal pattern

        }   
        if(arr[r][c]%2==0)
        {
          sum = sum + arr[r][c]; //sum ofeven nums  
          count= count +1; 
          sumAveEven = sum / count; 

        }
        else //(arr[r][c]%2 !=0)
        {
           prod = prod * arr[r][c]; //prod of odd nums

        }

        //printf("%d ", arr[r][c]);
    }
   // printf("%d\n", sum);
}
printf("The Sum of All Even Numbers is:  %d \n", sum);
printf("The AVERAGE of All Even Numbers is:  %d \n", sumAveEven);
printf("The product of All Odd Numbers is: %d \n", prod);
printf("The Sum of Elements in pattern Diagonal is: %d \n", sumD);
//printf("Counter: %d \n", count);    
  getch();
  return 0;
}
4

5 に答える 5

6

prod初期化されていません。に初期化する必要があります1

于 2013-06-17T15:04:34.667 に答える
2

これが唯一の問題ではないかもしれませんが、prod初期化されないので

prod = prod * arr[r][c];

常に予測不可能な結果を​​もたらします。他の回答で述べたように、宣言時に 1 に初期化する必要があります。

int ... sum=0, prod=1, ...
于 2013-06-17T15:04:44.640 に答える
1

を初期化していませんprod。つまり、何でもかまいません。あなたの実行ではおそらくゼロでした。ゼロを掛けたものはゼロなので、それがあなたが得ていたものです。

実際にprod = prod * arr[r][c];は、未知のものを返しています。

prodおそらく1 に初期化して、製品を計算する際の開始点を確保したいようです。

于 2013-06-17T15:04:30.980 に答える
1

初期化していませんprod。に初期化します1

int arr[2][2], r, c, sum=0, prod=1, sumD=0, count=0, count2=0, sumAveEven;
于 2013-06-17T15:04:42.113 に答える
1

初期化していませんprod。ほとんどの場合、次のように設定され0ます...

于 2013-06-17T15:05:13.627 に答える