如何编辑一个c语言程序,定义一个表示分数的结构体类型,并求两个分数相加之和?

如题所述

顺便说明一下,由于我用的是win-Tc编译器,getch()只是接受一个字符起暂停一下的作用,
以便能看到输出结果
#include<stdio.h>
#include<math.h>

typedef struct
{
int fenZi;
int fenMu;
}fenShu;

fenShu convert(fenShu tmp)
{
int i,sttmp,sttmp2;
sttmp=(tmp.fenZi>tmp.fenMu)? tmp.fenZi:tmp.fenMu;
sttmp2=(tmp.fenZi>tmp.fenMu)? tmp.fenMu:tmp.fenZi;
sttmp=sqrt(sttmp);
for(i=2;i<=sttmp&&i<=sttmp2;i++)
{
if(tmp.fenZi%i==0&&tmp.fenMu%i==0)
{
tmp.fenZi/=i;
tmp.fenMu/=i;
i--;
}
}
return tmp;

}

fenShu add(fenShu a,fenShu b)
{
fenShu tmp;
tmp.fenMu=a.fenMu*b.fenMu;
tmp.fenZi=a.fenZi*b.fenMu+a.fenMu*b.fenZi;
return convert(tmp);
}

void main()
{
fenShu num1,num2,tmpnum;
int tmp;
printf("\t\tBetween fenShu and fenMu is / \n\n");
do{
printf("Please input the first fenShu num1:");
scanf("%d/%d",&num1.fenZi,&num1.fenMu);
}while(num1.fenMu==0);
do{
printf("Please input the second fenShu num2:");
scanf("%d/%d",&num2.fenZi,&num2.fenMu);
}while(num2.fenMu==0);
tmpnum=add(num1,num2);
printf("\n\tThe answer is :\t");
printf("%d/%d",tmpnum.fenZi,tmpnum.fenMu);
getch();
}
温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网