使用C语言编写一个算数的除法运算(保留n位小数)
问题描述
分数化小数(decimal)
输入正整数a,b,c,输出a/b的小数形式,精确到小数点后c位。a,b≤106 ,c≤100。输入包含多组数据,结束标记为a=b=c=0。
#include<stdio.h>
void question(int a,int b,int c)
{int i;printf("%d.", a / b);for (i = 1; i <= c; i++) //依次输出小数点后c位的的数值{a %= b; //得到上一阶段余数a *= 10; //将上一阶段的余数的小数点后移一位if (i == c&& ((a % b) * 10 / b >= 5)) //对最后一位进行进位运算printf("%d", a / b + 1);elseprintf("%d", a / b);}printf("\n");
}
void questionPlus(int a,int b,int c)
{int i, j, integer, demical;demical = 1;//demical初始化为1integer = a / b;for (i = 1; i <= c; i++){a %= b;a *= 10;//计算小数点后面的数字if (i == c && ((a % b) * 10 / b >= 5)) //对最后一位进行进位运算demical = demical * 10 + a / b + 1;else if(i==1)demical = demical + a / b;elsedemical = demical*10 + a / b;}for (j = 1, i=1; i < c; i++) //j的位数与demical的位数应相同j *= 10;if ((demical - j) / (j * 10) != 0){integer++;demical -= j * 10;}printf("%d.", integer);for (i = 1; i <= c; i++){if (i == 1) //输出小数点后第一位printf("%d", demical / j - 1);else{//依次从第2位开始输出demical %= j;j /= 10;printf("%d", demical / j);}}printf("\n");
}
void questionPlusPlus(int a,int b,int c)
{int i, j, integer, demical[c];integer = a / b;for (i = 1; i <= c; i++){a %= b;a *= 10;//计算小数点后面的数字,存入相应的数组中if (i == c && ((a % b) * 10 / b >= 5)) //对最后一位进行进位运算demical[i-1] = a / b + 1;elsedemical[i-1] = a / b;}for(i=c-1;i>=0;i--){if(demical[i]==10){if(i==0) integer++;else demical[i-1]++;demical[i]=0;}}printf("%d.", integer);for (i = 0; i < c; i++)printf("%d", demical[i]);printf("\n");
}
int main(void)
{int a, b, c;while ((printf("请输入三个数:"))&&scanf("%d%d%d", &a, &b, &c) == 3 && !(a == b && b == c && c == 0)){printf("------第一个函数------\n");question(a,b,c);printf("------第二个函数------\n");questionPlus(a,b,c);printf("------第三个函数------\n");questionPlus(a,b,c);}
}
进行函数输出:
可以发现进行输入19999 20000 3 的时候,输出的结果出现不一致的问题,而第二个和第三个函数是正确的输入形式。
但是,对于现在来说,因为能力有限,不能进行相应的优化,第三种函数为最简单的一种函数了。
使用C语言编写一个算数的除法运算(保留n位小数)相关推荐
- sql两数相除保留两位小数_sql 除法运算 保留两位小数
js限制输入数字能输入小数点,js定义数组,js往数组中添加数据,js将字符型转为数字型,除法结果保留两位小数--js小测:计算比赛得分 一个朋友跟我说要去给某个比赛算分: 规则:去掉最低分最高分求平 ...
- java除法计算保留2位小数
int a=7;int b=9;DecimalFormat df=new DecimalFormat("0.00");System.out.println(df.format((f ...
- BigDecimal除法后保留两位小数
BigDecimal numBigDecimal=new BigDecimal(5.33); numBigDecimal=ConvertNumber(numBigDecimal,3,2);//调用,5 ...
- bigdicmal除法精度设置_使用java求高精度除法,要求保留N位小数
题目要求是高精度除法,要求保留N位小数(四舍五入),并且当整数部分为0时去除0的显示 import java.math.BigDecimal; import java.util.Scanner; pu ...
- Python中的除法保留两位小数
在C/C++语言对于整形数执行除法会进行地板除(舍去小数部分).例如 int a=15/10; a的结果为1. 同样的在Java中也是如此,所以两个int型的数据相除需要返回一个浮点型数据的时候就需要 ...
- 保留两位小数除法算式_小学数学小数除法练习题
小学数学小数除法练习题 篇一:小数除数练习卷 班级姓名 一.列竖式计算 7.83÷91.35÷2.7 54.4÷0.16 27÷1.8 6.76÷0.52 22.78÷3.4 4.8÷3 18÷48 ...
- java8 BigDecimal 除法保留三位小数 后面小数进位处理
Java 8 中,可以使用 BigDecimal 类来处理高精度的小数除法.可以使用 setScale() 方法来保留小数位数,并使用 RoundingMode 来设置舍入模式. 例如,如果要将除法结 ...
- python输入一个正整数n求下列算式的值_C语言编写程序:输入一个正整数x和一个正整数n,求下列算式的值。,C语言 编写一个程序,输入一个正整数,求出它是几位数。...
导航:网站首页 > C语言编写程序:输入一个正整数x和一个正整数n,求下列算式的值.,C语言 编写一个程序,输入一个正整数,求出它是几位数. C语言编写程序:输入一个正整数x和一个正整数n,求下 ...
- 用C语言编写一个Linux下的简单shell程序
这是一个简单的C程序,展示了如何进行系统调用执行logout cd ls pwd pid rm mkdir mv cp等命令,这是一个简单的命令解释程序shell,其源代码如下: #include & ...
- C语言试题二十五之编写一个函数float function(double h),函数的功能使对变量h中的值保留2位小数,并对第三位进行四舍五入(规定h中的值位正数)。
1. 题目 编写一个函数float function(double h),函数的功能使对变量h中的值保留2位小数,并对第三位进行四舍五入(规定h中的值位正数). 2 .温馨提示 C语言试题汇总里可用于 ...
最新文章
- Flask学习之路(一)--初识flask
- Go 使用 append 向切片增加元素
- 水晶报表——小代码,大作用(转自CSDN,阿泰)
- python中字典和集合的区别_Python中字典和集合学习小结
- tomcat使用redis存储共享session
- php3.2.3分组查询,ThinkPHP3.2.3版本如何设置应用分组
- Java基础 系统注解 @Override @Deprecated @SuppressWarnings 使用的方法及原因
- 一张小柴胡汤打天下- 四川名医马有度
- 如何自己写一个CNV分析软件?
- 阿里面试真题:Spring容器启动流程
- [UnexpectedValueException] Your github oauth token for github.com contains invalid characters
- 快速下载“阿里云镜像网站“Centos各个版本 全流程
- 大气校正6S与FLAASH计算与对比
- 世界空战史上的头号王牌空中杀手
- 苹果手机代数_讲知识:苹果手机已十年 命名规则多幻变
- 使用hexo+yilia+github搭建个人博客
- Qt实现多级菜单及设置菜单的宽度
- BZOJ3711: [PA2014]Druzyny
- Fluent Ribbon界面布局
- 一款数据库合并工具的中文版更新