使用C中的数组查找GCD

时间:2016-11-20 01:15:21

标签: c arrays greatest-common-divisor

您好我正在尝试用C编写代码来查找超过2个数字的GCD。但是,当我编译并运行代码时,GCD始终为0.如果有人可以提供帮助,我将不胜感激。谢谢。

#include <stdio.h>

static int gcd(int x, int y)
{
  int r;
  if (x <= 0 || y <= 0)
    return 0;

  while ((r = x % y) != 0)
    {
      x = y;
      y = r;
    }
    return y;
}

int main (void)
{
  int A[5];
  int g = A[0];
  int i;
  int n;

  printf ("How many elements are there? \n")
  scanf ("%d", &n);

  printf ("Input the elements. \n");

  for (i = 0; i < n; i++)
    {
      scanf ("%d", &A[i]);
    }

  for (i = 1; i < n; i++)
    g = gcd(g, A[i]);

    printf ("GCD is: %d \n");

return 0;
}

2 个答案:

答案 0 :(得分:2)

在将g设置为任意特定值之前,您将A[0]设置为A[0]

答案 1 :(得分:0)

在第一个;之后,您需要printf。 在阅读元素数量A后,您需要使用n元素声明n。 您必须在g ",后的printf后写int main (void) { int i; int n; printf ("How many elements are there? \n"); scanf ("%d", &n); int A[n]; printf ("Input the elements. \n"); for (i = 0; i < n; i++) { scanf ("%d", &A[i]); } int g = A[0]; for (i = 1; i < n; i++) g = gcd(g, A[i]); printf ("GCD is: %d", g); return 0; }

这就是我认为你的主要应该是这样的:

grep