‘壹’ c语言分数加减法问题
第一次运算:1-1/2=0.5,大于0.000001,循环完毕。
PrivateSubForm_Load()
DimiAsSingle,jAsSingle,sumAsSingle
i=1
j=1
DoWhile1
DoEvents
Debug.Printsum
sum=sum+1/i*j
i=i+1
j=j*-1
If(sum>=0.000001)ThenExitDo
Loop
EndSub
‘贰’ c语言程序设计分数的加减乘除
改变数据类型试试
类似这样吧
#include<stdio.h>
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=a<c?a:c;
for(i=2;i<=min;i++)
if((int)(a)%(int)(i)==0&&(int)(c)%(int)(i)==0)
break;
if(i>min)
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);
}
‘叁’ c语言问题
#include<stdio.h>
#include<stdlib.h>
int main()
{
int a,b,c,d,s;
char o;
int i;
while(scanf("%d/%d%c%d/%d",&a,&b,&o,&c,&d)!=EOF) // %c
{
if(b>=d)
{
for(i=d;i>=1;i--) // error
{
if(b%i==0 && d%i==0) // / translate to %
{
s=b*d/i;
a=a*(s/b);
c=c*(s/d);
if(o=='+')
printf("%d/%d\n",a+c,s);
else if(o=='-') // else
printf("%d/%d\n",a-c,s);
break;}
}
}
else {
for(i=b;i>=1;i--) //error
{
if(b%i==0 && d%i==0)
{
s=b*d/i;
a=a*(s/b);
c=c*(s/d);
if(o=='+')
printf("%d/%d\n",a+c,s);
else if(o=='-') // else
printf("%d/%d\n",a-c,s);
break;}
}
}
}
system("pause");
return 0;
}
另外,你的结果也不符合要求,题目说要求结果约分,下面是我写的参考程序:
#include <stdio.h>
int gcd(int x, int y) //欧几里德法求最大公约数
{
return (y == 0)? x : gcd(y, x % y);
}
int main()
{
int num1, den1, num2, den2, tmp;
char op;
int result_num, result_den;
while (scanf("%d/%d%c%d/%d", &num1, &den1, &op, &num2, &den2))
{
tmp = gcd(den1, den2);
result_den = den1 * den2 / tmp;
if (op == '+')
result_num = num1 * den2 / tmp + num2 * den1 / tmp;
else
result_num = num1 * den2 / tmp - num2 * den1 / tmp;
if (result_num == 0)
{
printf("0\n");
continue;
}
if (result_num < 0) printf("-"), result_num = -result_num;
tmp = gcd(result_num, result_den);
printf("%d/%d\n", result_num / tmp, result_den / tmp);
}
return 0;
}
‘肆’ C语言编写程序,使能对分数进行加减乘除四则运算 急!求!
就不写代码了。。说思路
关键的部分大概是结果的呈现吧 分数形式的
首先我们需要重载运算符。。 噢 这是C 没有。
那么我们假定是在界面上分别输入分子和分母 这样乘除法计算方法显而易见
加减法则需要利用最小公倍数函数
最后结果的化简需要利用最大公约数函数
‘伍’ c语言,怎么实现对分数<就是几分之几>的加减乘除等等的运算
定义一个数据结构,可以是一个长度2的数组,也可以是一个struct,下面以数组为例
定义两个长度2的数组 a[2],b[2],分子分别保存在a[0],b[0],分母分别保存在a[1],b[1](负数的话,符号同分子一起)
乘:分母,分子分别相乘;除:乘以倒数(调换乘数的分子分母);然后约分(涉及最大公约数算法,可网络)
加减:分母需要相同,涉及最小公倍数算法(可网络)
以上思路和人工计算的方式相同,只是用c语言“翻译”一下
另外提供一个思路,直接计算结果,然后从无限循环小数转化成分数形式
‘陆’ C语言分数的四则运算
你好!程序的错误改了,你看看功能吧
#include<stdio.h>
intmain(void)
{charc;//定义变量c
inta1,a2,b1,b2,q,w;
scanf("%d%d%c%d%d",&a1,&a2,&c,&b1,&b2);//删除格式内的非法字符
if((c!='+')&&(c!='-')&&(c!='*')&&(c!='/'))
return0;//c不是运算符,退出
switch(c)
{
case'+':q=a1*b2+a2*b1;//符号硬单引号框住,单引号后面的分号
w=a2*b2;
printf("%d/%d",q,w);
break;
case'-':q=a1*b2-a2*b1;//符号硬单引号框住,单引号后面的分号
w=a2*b2;
printf("%d/%d",q,w);
break;
case'*':q=a1*b1;//符号硬单引号框住,单引号后面的分号
w=a2*b2;
printf("%d/%d",q,w);
break;
case'/':q=a1*b2;//符号硬单引号框住,单引号后面的分号
w=b1*a2;
printf("%d/%d",q,w);
break;
}
return0;
}
‘柒’ 求教分数加减法的C语言编程
int main()
{
float f1 = 1.0, f2 = 3.0,f3,f4;
f3 = f1 / f2;
f4 = 2.0 / 3.0;
printf("%f\n", f1 / f2);
printf("%f\n", f3 + f4);
printf("%f\n", f3 - f4);
return 0;
}
是这样吗?
‘捌’ c语言分数加减法
int ggg(int a,int b) { int r; //默认r=0; 所以while 根本就不会执行!!! while(r!=0) { r=a%b; a=b;b=r; } return a; }