Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用结构查找分数的GCD(简单C程序)_C_Structure_Greatest Common Divisor - Fatal编程技术网

使用结构查找分数的GCD(简单C程序)

使用结构查找分数的GCD(简单C程序),c,structure,greatest-common-divisor,C,Structure,Greatest Common Divisor,正如标题所说,我正在制作一个程序来寻找分数的GCD。这个程序有一个查找它的函数,但我遇到了一些问题 我希望函数接受两个结构变量(分母和分子),并返回GCD(整数) 这是我的密码: #include <stdio.h> struct fraction{ int numerator,denominator; }; int find_gcd(struct fraction s1, struct fraction s1); int main(void) { struc

正如标题所说,我正在制作一个程序来寻找分数的GCD。这个程序有一个查找它的函数,但我遇到了一些问题

我希望函数接受两个结构变量(分母和分子),并返回GCD(整数)

这是我的密码:

#include <stdio.h>


struct fraction{
    int numerator,denominator;
};

int find_gcd(struct fraction s1, struct fraction s1);

int main(void)
{
    struct fraction d1;
    int gcd;

    d1.numerator= 20;
    d1.denominator= 100;

    printf("Fraction: %d/%d\n",d1.numerator,d1.denominator);

    gcd= find_gcd(d1.numerator, d1.denominator);

   printf("In lowest terms: %d/%d",d1.numerator/gcd,d1.denominator/gcd);
}

int find_gcd(struct fraction s1, struct fraction s1)
{
    int remainder=0;

    while (s1.denominator !=0)
    {
        remainder = s1.numerator/s1.denominator;
        s1.numerator= s1.denominator;
        s1.denominator= remainder;
    }

    return s1.numerator;        //this is the gcd
}

任何帮助都将不胜感激。

在函数签名中,两个参数都命名为
s1


修复这个问题,也许可以将其中一个参数重命名为
s2

find\u gcd
正在接受结构,但您正在传递它
int
s。。。阅读错误!它正在为您打印。如果第一个参数和第二个参数都被命名为
s1
,您打算如何区分它们?谢谢,我觉得自己像个白痴。您的算法很糟糕(即使在整理参数列表时也是如此)。例如,给定1和1,它不会终止。
GCD_structures.c:8:50: error: redefinition of parameter 's1'
 int find_gcd(struct fraction s1, struct fraction s1);
                                                  ^
GCD_structures.c:8:30: note: previous definition of 's1' was here
 int find_gcd(struct fraction s1, struct fraction s1);
                              ^
GCD_structures.c: In function 'main':
GCD_structures.c:20:10: error: incompatible type for argument 1 of 'find_gcd'
     gcd= find_gcd(d1.numerator, d1.denominator);