C编程弄清楚bug的位置

时间:2013-06-17 15:02:52

标签: c

人们帮我解决所有奇数产品的问题,每当我输入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;
}

5 个答案:

答案 0 :(得分:6)

prod未初始化。您需要将其初始化为1

答案 1 :(得分:2)

这可能不是唯一的问题,但prod从未初始化,所以

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

总是会产生不可预测的结果。如其他答案中所述,您应该在声明时将其初始化为1.

int ... sum=0, prod=1, ...

答案 2 :(得分:1)

你没有初始化prod,这意味着它可以是任何东西。在您的运行中它可能为零,并且因为任何时候零都为零,这就是您所获得的。

实际上,prod = prod * arr[r][c];正在返回一些未知的东西。

您可能希望将prod初始化为1,以便在计算产品时有一个起点。

答案 3 :(得分:1)

您尚未初始化prod。将其初始化为1

int arr[2][2], r, c, sum=0, prod=1, sumD=0, count=0, count2=0, sumAveEven;

答案 4 :(得分:1)

您没有初始化prod。大多数情况下,它将设置为0 ...