本文目录一览:
- 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;
}