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

 我来答
谋生者2
2011-01-07
知道答主
回答量:23
采纳率:0%
帮助的人:13.2万
展开全部
顺便说明一下,由于我用的是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();
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jdq_37
2011-01-04 · TA获得超过996个赞
知道小有建树答主
回答量:658
采纳率:0%
帮助的人:955万
展开全部
我做了一个例子, 请楼主参考:
#include <stdio.h>
#include <stdlib.h>

struct FenShu
{
int fenzi; //分子
int fenmu; //分母
};
FenShu fAdd(FenShu &fs1, FenShu &fs2)
{
FenShu fs;
if (fs1.fenmu * fs2.fenmu)
{
fs.fenzi = fs1.fenzi*fs2.fenmu + fs1.fenmu*fs2.fenzi;
fs.fenmu = fs1.fenmu*fs2.fenmu;
}
else
{
printf("分母为0\n");
exit(0);
}
return fs;
}
double fFenShuToDouble(FenShu &fs)
{
if (fs.fenmu)
{
return fs.fenzi*1.0/fs.fenmu;
}
else
{
printf("分母为0\n");
exit(0);
}
}
int main()
{
FenShu a,b;

a.fenmu = 2;
a.fenzi = 1;

b.fenmu = 3;
b.fenzi = 2;

printf("%lf", fFenShuToDouble(fAdd(a, b)));

printf("\n");

return 0;
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式