『壹』 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; }