您的位置:

c语言求分数化,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;

}