
正文
C语言fun函数分数相加 c语言分数相加求和
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
C语言:分数求和
//结构定义中包含两个成员C语言fun函数分数相加,分子和分母
struct fraction
{
int up, down;/*分子和分母*/
};
/*
相加算法的核心是找两个分母的最小公倍数和结果分子分母的最大公约数C语言fun函数分数相加,分别单独函数来求
*/
int pubtime(int, int);//最小公倍数
int pubsub(int, int);//最大公约数,可用辗转相除法求,挺经典的一个方法。
/********分数相加********/
fraction add(fraction f1, fraction f2)
{
fraction result;
result.down = pubtime(f1.down, f2.down);
result.up = f1.up * result.down / f1.down + f2.up * result.down / f2.down;
int n = pubsub(result.up, result.down);
result.up /= n; result.down /= n;
return result;
}
int pubtime(int n1, int n2)
{
int n = pubsub(n1, n2);
return n1 * n2 / n;
}
int pubsub(int n1, int n2)
{
int r = n1;
if(n2 n1)
r = n1, n1 = n2, n2 = r;
do
{ /*辗转相除*/
r = n1 % n2;
if(r == 0) break;
n1 = n2; n2 = r;
}while(true);
return n2;
}
相关问答
Q1: 如何用C语言编程输入两个分数求和并以最简分式的方式输出?
#include "stdio.h"
int fun(int num1,int num2)/*求最大公约数函数*/
{
int a,b,temp;
if(num1num2)
{
temp=num1;
num1=num2;
num2=temp;
}
a=num1;
b=num2;
while(b!=0)/*利用辗除法,直到b为0为止*/
{
temp=a%b;
a=b;
b=temp;
}
return a;
}
main()
{
int a1,a2,b1,b2,c=1,num1,num2;
printf("请输入第一个分数的分子:\n");
scanf("%d",a1);
printf("请输入第一个分数的分母:\n");
scanf("%d",a2);
printf("请输入第一个分数的分子:\n");
scanf("%d",b1);
printf("请输入第一个分数的分母:\n");
scanf("%d",b2);
num1=a1*b2+b1*a2;
num2=a2*b2;
c=fun(num1,num2);
num1=num1/c;
num2=num2/c;
if(num2==1)
printf("结果为:%d:",num1);
else
printf("结果为:%d/%d:",num1,num2);
}
Q2: C语言fun函数的功能是:求出以下分数序列的前n项之和。(用递归)
不用那么麻烦
int a=1,b=2,i,k,n;
float sum=0.0;
scanf("%d",n);
for(i=0;in;i++)
{
sum+=1.0*a/b;
k=a;
a+=b;
b=k;
}
关于C语言fun函数分数相加和c语言分数相加求和的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。






