立志用尽量少的代码做高效的表达。


题目描述:

输入正整数a,b,c,输出a/b的小数形式,精确到小数点后c位。 a,b ≤10^6 ,c≤100。输入包含多组数据,结束标记记为a = b = c = 0。

样例输入:

1 6 4
0 0 0

样例输出:

Case 1: 0.1667


网上有很多错误代码,形如:

或者:

无论C格式,还是C++格式,都是错的!!!因为根本没办法显示几十位的小数!

因此,本题的核心思路只有这一个:数组存储高精度小数。

举例:

输入1 6 4, 首先将1扩大到100000,用100000除6,得到16666.666…要求保留小数点后四位,因此四舍五入后为:1667。输出整数部分与该数即可。
由于可能取到小数点后100位,因此所有数据用数组存储,模拟手算除法。


注意以下几组特殊数据(之所以判断进位那块儿的代码有点复杂,就是因为需要考虑第三种特殊情况。):

代码:

#include<bits/stdc++.h>
using namespace std;
int main() {int mol, den, num;while(cin >> mol >> den >> num && mol) {int a[110] = {0};int integer = mol/den;mol = mol%den;//1、为数组赋值 int siz = 0;do {a[siz++] = mol*10/den;mol = (mol*10)%den;}while(siz != num+1); //2、判断进位 int jin = 0;//进位 if(a[num] >= 5) {            //满足四舍五入条件jin = 1; for(int i = num-1; i >= 0; i--) {  //从后向前遍历,进位。a[i] += jin; if(a[i] == 10) {jin = 1; a[i] = 0;} else jin = 0;}} if(jin != 0) integer += 1;    //如果到最后进位还没有给掉,那么将进位给到整数位 //3、输出 cout << integer << '.';for(int i = 0; i < num; i++) {cout << a[i];}putchar('\n'); }return 0;
}

二更: 应读者要求, 加了C语言版代码

#include<stdio.h>
int main() {int mol, den, num;while(scanf("%d%d%d", &mol, &den, &num) && mol) {int a[110] = {0};int integer = mol/den;mol = mol%den;//1、为数组赋值 int siz = 0;do {a[siz++] = mol*10/den;mol = (mol*10)%den;}while(siz != num+1); //2、判断进位 int jin = 0;//进位 if(a[num] >= 5) {           //满足四舍五入条件jin = 1; for(int i = num-1; i >= 0; i--) {  //从后向前遍历,进位。a[i] += jin; if(a[i] == 10) {jin = 1; a[i] = 0;} else jin = 0;}} if(jin != 0) integer += 1;    //如果到最后进位还没有给掉,那么将进位给到整数位 //3、输出 printf("%d.", integer);for(int i = 0; i < num; i++) {printf("%d", a[i]);}putchar('\n'); }return 0;
}

如果对你产生了帮助,就请给博主点一个小小的赞吧!大家的点赞是我不断更新的最大动力!

解题报告——习题2-5 分数化小数(decimal) 输入正整数a,b,c,输出a/b的小数形式,精确到小数点后c位。相关推荐

  1. ACMNO.2 输入一个华氏温度,要求输出摄氏温度。公式为 c=5(F-32)/9 输出要求有文字说明,取位2小数。 输入 一个华氏温度,浮点数 输出 摄氏温度,浮点两位小数

    题目描述 输入一个华氏温度,要求输出摄氏温度.公式为 c=5(F-32)/9 输出要求有文字说明,取位2小数. 输入 一个华氏温度,浮点数 输出 摄氏温度,浮点两位小数 样例输入 -40 样例输出 c ...

  2. 化简分数,输入分子和分母,输出化简后的分子和分母。采用无脑迭代法;

    1.令min等于分子与分母中小的那个值 2.i从2到min循环,若 分子分母都能除尽i,则修改分子,分母,min以及i,令i再次从2开始循环 ​ int main() {int a, b;printf ...

  3. 分数化小数c语言题目,习题 2-5 分数化小数 (decimal)(C语言版)

    习题描述:"输入正整数 a, b, c,输出a/b的小数形式,精确到小数点后c位.a, b<= 10^6, c<=100.输入包含多组数据,结束标记为 a=b=c=0." ...

  4. 分数化小数(c语言)

    输入正整数a,b,c,输出a/b的小数形式,精确到小数点后c位.a,b≤10 6 ,c≤100.输入包含多组数据, 结束标记为a=b=c=0. 样例输入: 1 6 4 0 0 0 样例输出: Case ...

  5. 分数化小数(模拟除法操作)

    题目:输入a, b, c,输出a/b的小树形式,精确到小数点后c位.a,b <= 1e6, c <= 100; 输出包含多组数据,结束标记为a = b = c = 0. 样例输入:1   ...

  6. 分数化小数(用变量控制小数位数)

    输入正整数a,b,c,输出a/b的小数形式,精确到小数点后c位.a,b<=10e6,c<=100.输出包含多组数据,结束标志为a=b=c=0. 样例输入: 1 6 4 0 0 0 样例输出 ...

  7. 上海市计算机学会2022年10月月赛丙组解题报告

    上海市计算机学会2022年10月月赛丙组解题报告 直角三角形的判定 题目描述 给定三个正整数表示三角形的三条边,请判定它是否为直角三角形 输入格式 第一行:三个整数 a,b 与 c 输出格式 若可以构 ...

  8. 输入一个华氏温度,要求输出摄氏温度。公式为 c=5(F-32)/9 输出要求有文字说明,取位2小数。...

    题目描述 输入一个华氏温度,要求输出摄氏温度.公式为 c=5(F-32)/9 输出要求有文字说明,取位2小数. 输入 一个华氏温度,浮点数 输出 摄氏温度,浮点两位小数 样例输入 -40 样例输出 c ...

  9. java-从键盘输入一串字符,输出不同的字符以及每个字符出现的次数。(输出不按照顺序)运用String类的常用方法解题

    从键盘输入一串字符,输出不同的字符以及每个字符出现的次数.(输出不按照顺序)运用String类的常用方法解题 package labreport7;import java.util.Scanner;/ ...

最新文章

  1. Remove Nth Node From End of List leetcode java
  2. LeetCode题组:第9题-回文数
  3. 电容式传感器位移性能试验报告_圆柱形电容式接近开关可以分3类?
  4. SAP Spartacus cost center list里通向detail页面的url生成逻辑
  5. 100行代码实现了多线程,批量写入,文件分块的日志方法
  6. Android布局怎么画图形,Android开发者的图形化布局
  7. IEnumerable和IQueryable的区别
  8. 初探数位DP-hdu2089
  9. 信息学奥赛一本通(1313:【例3.5】位数问题)
  10. 织梦dede模板|白绿色户外拓展教育培训网站织梦dede模板源码[带手机版数据同步]
  11. matplolib绘图
  12. 在Mac OS X上安装Oracle客户端
  13. 51单片机的轮胎气压监测系统_汽车的胎压监测系统有哪些作用?
  14. Ubuntu 11.04 下安装配置 JDK 7
  15. RSA私钥及公钥生成
  16. his提供哪些服务_品牌战略咨询能为企业提供哪些服务
  17. pc软件签名:数字证书的使用
  18. 上位机和下位机的区别是什么
  19. WIN10开启Hyper-V虚拟化功能
  20. 在UBUNTU 13.1 中使用五笔拼音混合输入法

热门文章

  1. docker学习笔记(五)docker实战
  2. Kafka分区分配策略(4)——分配的实施
  3. 面向视频原生,火山引擎发布视频云与边缘云软硬一体的新云解决方案
  4. 你今天怎么这么好看——基于深度学习的大型现场实时美颜
  5. 高孟平:深度学习是视频技术与人眼视觉连结的重要桥梁
  6. 2021 有哪些不容错过的后端技术趋势
  7. 如何设计一个高可用、高并发秒杀系统
  8. 第四冠!腾讯AI「绝艺」斩获世界智能围棋公开赛冠军
  9. ngx_event_expire_timers
  10. 转:Linux下安装Gtest/Gmock