本文目錄一覽:
- 1、請問在C語言中分數怎麼表示啊,即10/9
- 2、C語言 分數化小數
- 3、如何用C語言,實現簡單的分數化簡
- 4、c語言,怎麼實現對分數的加減乘除等等的運算
- 5、c語言 分數化小數
- 6、如何用C語言,實現簡單的分數化簡
請問在C語言中分數怎麼表示啊,即10/9
首先10/9是表達式,但是在C語言中沒有表示分數的形式,也就是當要以這種形式給出的時候C已經幫運算出結果了。所以你可以選擇兩種表達方式。
1、使用字元串,在使用使用時在轉化一下。
2、使用小數,就是1.1111…這種,申請一個Double型來儲存。
字元串就是 10/9 這種 char fenshu[]=”10/9″;當要使用的時候,還要再次轉換成Double型。所以說,想要的分數形式只是一個外表沒實際用處。
擴展資料:
字元串在存儲上類似字元數組,它每一位單個元素都是能提取的,字元串的零位是它的長度,如s[0]=10,這提供給我們很多方便,例如高精度運算時每一位都能轉化為數字存入數組。
通常以串的整體作為操作對象,如:在串中查找某個子串、求取一個子串、在串的某個位置上插入一個子串以及刪除一個子串等。兩個字元串相等的充要條件是:長度相等,並且各個對應位置上的字元都相等。
參考資料來源:百度百科-字元串
C語言 分數化小數
沒記錯的話好像是汝佳的書上的習題……
主要就是用數組模擬手工除法,事實上我認為這道題按書上的進度有點超前了。
這題目要注意的問題還是比較多的,比如整除要補0,四捨五入要進位之類的……比較麻煩。
模擬演算法:
a/b 得出除的數,存入數組
a=a%b*10 得出下一位除的數
循環,然後四捨五入,要進位進位即可
比如a=1 b=6
1/6=0 存入數組
1%6=1
a=1*10=10
10/6=1 存入數組
10%6=4
a=4*10=40
40/6=6 存入數組
……………………………………以此類推
如何用C語言,實現簡單的分數化簡
/*
Note:Your
choice
is
C
IDE
*/
//如何實現簡單分數的化簡
#include
“stdio.h”
//只要找出最大的因子就行了
輾轉相除法
int
gcd(int
n,int
m)
{
int
temp,r;
//把大的數放在n裡面
if(nm)
{
temp=n;
n=m;
m=temp;
}
while(m!=0)
{
r=n%m;
n=m;
m=r;
}
return
n;
}
void
main()
{
int
a,b;//a是分子
b是分母
printf(“please
input
a
and
b:”);
scanf(“%d%d”,a,b);
printf(“%d/%d”,a/gcd(a,b),b/gcd(a,b));
}
求加分
c語言,怎麼實現對分數的加減乘除等等的運算
定義一個數據結構,可以是一個長度2的數組,也可以是一個struct,下面以數組為例
定義兩個長度2的數組 a[2],b[2],分子分別保存在a[0],b[0],分母分別保存在a[1],b[1](負數的話,符號同分子一起)
乘:分母,分子分別相乘;除:乘以倒數(調換乘數的分子分母);然後約分(涉及最大公約數演算法,可百度)
加減:分母需要相同,涉及最小公倍數演算法(可百度)
以上思路和人工計算的方式相同,只是用c語言「翻譯」一下
另外提供一個思路,直接計算結果,然後從無限循環小數轉化成分數形式
c語言 分數化小數
因為o是double型,o=m/n;本來就不夠精確吧
#include stdio.h
int main()
{
int a, b, c;
scanf(“%d%d%d”, a, b, c);
//整數部分
int zs = a / b;
//小數部分
a = a – zs * b;
int xs[101];
for(int i=0; i101; i++)
{
a = a * 10;
xs[i] = a / b;
a = a – xs[i] * b;
}
//處理四捨五入
if(c 1)
{
if(xs[0] = 5) zs++;
}
else
{
if(xs[c] = 5) xs[c-1]++;
for(int i=c-1; i0; i–)
{
xs[i-1] += xs[i] / 10;
xs[i] %= 10;
}
zs += xs[0] / 10;
xs[0] = xs[0] % 10;
}
//輸出
if(c 1) printf(“%d”, zs);
else
{
printf(“%d.”, zs);
for(int i=0; ic; i++) printf(“%d”, xs[i]);
}
return 0;
}
如何用C語言,實現簡單的分數化簡
找分母分子的最大公約數,然後同除以這個數
#includestdio.h
int gcd(int a,int b)
{
return b==0?a:gcd(b,a%b);
}
int main()
{
int x,y;
while(scanf(“%d/%d”,x,y)!=EOF)
{
if(y==0)
{
printf(“分母不能為0\n”);
continue;
}
int c=gcd(x,y);
x/=c;
y/=c;
printf(“%d/%d\n”,x,y);
}
return 0;
}
原創文章,作者:RMCB,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/134613.html