作业帮 > 综合 > 作业

C语言的分数计算和输出格式问题

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/07/05 16:14:42
C语言的分数计算和输出格式问题
比如说 1/3,要用什么格式输出?为什么计算的时候貌似被四舍五入了?N个分数相加,会因为四舍五入导致结果不正确?求教.

C语言里面没有分数,1/3会被当作是1除以3来计算,结果是一个小数.要输出1/3,必须是像字符串一样的输出:printf("1/3");
也可以这样:int a = 1, b = 3; printf("%d/%d", a, b);
N个分数相加的结果还是会被当作小数处理,必须你自己设计算法让它成为a/b的形式
再问: 但是我这边使用float或者double貌似就直接取整了,(其中 有整数型变量,)
比如计算s=1+1/(1+2)+1/(1+2+3)+..........+1/(1+2+3+......+n).
分母是整形,然后我分部算,分部加,第二项1/(1+2)输出的结果是0.0000.而不是0.33333.为什么?
再答: 一个整数默认就是int类型。虽然s是double,但是右边的1,2,3.....n都是整数,所以做除法运算的时候已经丢掉小数部分了。你可以写成s=1.0 + 1.0/(1+2)+1.0/(1+2+3)...........