求大神
#include <stdio.h>typedef struct
{
size_t numerator;
size_t denominator;
} Fraction;
size_t GetGreatestCommonDivisor(Fraction fraction)
{
size_t greatest_common_divisor;
if(fraction.numerator > fraction.denominator)
{
greatest_common_divisor = fraction.denominator;
}
else
{
greatest_common_divisor = fraction.numerator;
}
while((fraction.numerator % greatest_common_divisor != 0) || (fraction.denominator % greatest_common_divisor != 0))
--greatest_common_divisor;
return greatest_common_divisor;
}
Fraction Reduce(Fraction fraction)
{
size_t greatest_common_divisor = GetGreatestCommonDivisor(fraction);
Fraction result = {fraction.numerator / greatest_common_divisor, fraction.denominator / greatest_common_divisor};
return result;
}
void PrintFraction(Fraction fraction)
{
printf("%u/%u\n", fraction.numerator, fraction.denominator);
}
int main(void)
{
Fraction fraction;
printf("请输入: ");
scanf("%u/%u", &fraction.numerator, &fraction.denominator);
PrintFraction(Reduce(fraction));
return 0;
}
就相当于求最大公约数 人造人 发表于 2018-12-17 23:14
第42行有错误,编译不出来。 HJX54088 发表于 2018-12-17 23:31
第42行有错误,编译不出来。
在你问问题时先问自己一个问题,你问的这个问题别人看到后是什么反应?
“第42行有错误,编译不出来。” ???
这是我的反应
42行有什么错误?我把代码贴上来了,说明在我这边可以通过编译
你问 “xxx有错误”,那么一定会有人对这个问题再次提问“xxx有什么错误?”
为什么会这样?因为你的问题不够完整
问问题时要详细描述你遇到的问题 本帖最后由 Croper 于 2018-12-18 02:03 编辑
第42行有错误,编译不出来。
你把scanf改成scanf_s试试
另外提一下。。求最大公约数用辗转相除法比较快
int GetGCD(int p,int q) //辗转相除法求最大公约数
{
int a;
do
{
a = p % q;
p = q;
q = a;
} while (a != 0);
return p;
} 人造人 发表于 2018-12-18 01:45
在你问问题时先问自己一个问题,你问的这个问题别人看到后是什么反应?
“第42行有错误,编译不出来。” ...
嗯,好的,可能是编译器不一样的问题 Croper 发表于 2018-12-18 01:48
你把scanf改成scanf_s试试
另外提一下。。求最大公约数用辗转相除法比较快
思路比较清晰,代码有点不完整,我用的是C++的编译器。 人造人 发表于 2018-12-18 01:45
在你问问题时先问自己一个问题,你问的这个问题别人看到后是什么反应?
“第42行有错误,编译不出来。” ...
抱歉,我没有事先说清楚。
页:
[1]