改变数据类型试试 类似这样吧 #include double gongbeishu(double b,double d) { double i,max; max=b>d?b:d; for(i=max;;i++) if((int)(i)%(int)(b)==0&&(int)(i)%(int)(d)==0) break; return i; } double gongyueshu(double a,double c) { double i,min; min=amin) i=1; return i; } void main() { double a,b,c,d; double beishu1,beishu2,fenzihe0,fenmu,fenzihe1; scanf("%lf/%lf %lf/%lf",&a,&b,&c,&d); beishu1=gongbeishu(b,d)/b; beishu2=gongbeishu(b,d)/d; fenzihe0=beishu1*a+beishu2*c; fenmu=gongbeishu(b,d); fenzihe1=fenzihe0/gongyueshu(fenzihe0,fenmu); fenmu=fenmu/gongyueshu(fenzihe0,fenmu); printf("%lf %lf/%lf\n",a/b+c/d,fenzihe1,fenmu); }