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。大多数情况下,它将被设置为0...

于 2013-06-17T15:05:13.627 回答
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 回答