C程序找出bug在哪里

  • 本文关键字:bug 在哪里 程序
  • 更新时间 :
  • 英文 :


伙计们帮忙,我有一个问题,在得到所有奇数的乘积,每当我输入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("%dn", 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;
}

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

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

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

总是会给出不可预测的结果。正如在其他答案中所指出的,在声明它时应该将其初始化为1。

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

您没有初始化prod,这意味着它可以是任何东西。在你的运行中,它可能是零,因为任何乘以零的东西都是零,这就是你得到的结果。

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

看起来你可能想要初始化prod为1,这样你在计算产品时就有了一个起点。

您没有初始化prod。初始化为1

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

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

最新更新