使用C语言中的函数计算GCD时的错误

时间:2017-07-22 14:42:16

标签: c

这段代码显示了一些我无法找到的语法错误,可能是在gcd函数中。这是我的代码。

#include<stdio.h>
#include<conio.h>
int main(void)

int gcd(int,int);
{
     int a,b, temp;
     printf("Enter the value of a");
     scanf("%d",&a);
     printf("Enter the value of b");
     scanf("%d",&b);
     if (b>=a)
     {
         int temp;
         temp=b;
         b=a;
         a=temp;

     }
     elseif(b!=0)
     {
         gcd(a,b);
         printf("The Gcd of the numbere is %d",gcd(a,b));
     }
     else
     {
         printf("The GCD of %d %d is %d:",a,b,a);
     }
     getch();

     return 0;
}

int gcd(int a,int b)
{
    int g;
    while(b!=0)
    {
               g=a%b;
               a=b;
               b=g;
               return g;
    }

}

如果你指出我的错误并用正确的代码解释,我将感激不尽。

2 个答案:

答案 0 :(得分:0)

切换这两行的位置:

int main(void)

int gcd(int,int);

另外,elseif - &gt; else if

答案 1 :(得分:0)

gcd功能使用Euclid's Algorithm。它计算a mod b,然后用XOR swap交换ab

  

Reference

#include<stdio.h>

int gcd(int ,int );


int main(void)
{
     int a,b, temp;
     printf("Enter the value of a : ");
     scanf("%d",&a);
     printf("Enter the value of b : ");
     scanf("%d",&b);

     int res = gcd(a,b);
     printf("The Gcd of the numbere is : %d \n",res);

     return 0;
}

int gcd(int a, int b)
{
    int temp;
    while (b != 0)
    {
        temp = a % b;
        a = b;
        b = temp;
    }
    return a;
}