求一个分数对应小数的循环节。、

思路:

我们分别用x和y表示分子和分母,先求出整数部分x div y和余数部分x mod y,那么小数部分就是重复将余数部分乘以10再进行整除运算和求余运算,直到出现循环或余数为0时结束。
我们不妨从余数入手,因为小数部分整除的结果是由上一次运算的余数决定的,如果某一次运算产生的余数跟前面产生的余数相同,则说明循环开始。

参考代码:

#include<stdio.h> #define mn 1000 void main() { int i,m,n,r,t; int p[mn],q[mn]; for(i=0;i<mn;i++) //给数组p初始化值全为-1 { p[i]=-1; q[i]=0; } printf("input :m,n(0<=m<n<=1000)= "); scanf("%d%d",&m,&n); t=0; //初始化值 r=m; //把被除数赋给r while(r!=0&&(p[r]==-1)) //循环条件当r不为0且p[r]=-1时执行循环体 { p[r]=t; //余数r第一次出现的位置 r=10*r; //把被除数扩大10倍,以至于取第一个小数 t++; q[t]=r/n; //计算小数点后t位的值:取整,即为m/n的小数从小数点开始逐个取出放到数组q中 r=r%n; //算完一位就去掉一位,即取余对n } printf("m/n = 0."); //因为m<n,所以m/n整数部分0,所以先输出'0.' if (r!=0) //被除数不为0就执行以下语句 { for(i=1;i<=p[r];i++) //输出循环小数中前面非循环的部分 printf("%d",q[i]); printf("("); //输出循环的小数放在括号中 for(i=p[r]+1;i<=t;i++) printf("%d",q[i]); printf(")"); } else //被除数为0的情况 for(i=1;i<=t;i++) //输出不循环的小数 printf("%d",q[i]); printf("/n"); }

笔试题——输出循环小数的循环节相关推荐

  1. 面试:输出循环小数的循环节

    一.引入 偶然在网上看见的,手痒了,就试了试,哈哈.......做出来了,实际就是模拟. 下面的来自维基百科:循环小数是从小数部分的某一位起,一个数字或几个数字,依次不断地重复出现的小数. 循环小数即 ...

  2. java 循环小数_面试:输出循环小数的循环节

    一.引入 偶然在网上看见的,手痒了,就试了试,哈哈.......做出来了,实际就是模拟. 下面的来自维基百科:循环小数是从小数部分的某一位起,一个数字或几个数字,依次不断地重复出现的小数. 循环小数即 ...

  3. 输出1/n(是循环小数的,只输出第一个循环节)

    Input 第一行整数T,表示测试组数.后面T行,每行一个整数 n (1<=|n|<=10^5). Output 输出1/n. (是循环小数的,只输出第一个循环节). Sample Inp ...

  4. c语言 查找循环节起点,用C语言怎么求循环小数的循环节?

    满意答案 zybehqej 推荐于 2016.09.09 采纳率:43%    等级:8 已帮助:512人 1.判断循环的关键是在确定每位小数的时候,判断余数是否出现与之前的相同. 2.例程:int  ...

  5. 求无限循环小数的循环节

    输入两个整数x1,x2,输出x1/x2的小数部分的循环节 测试案例: 输入: 8 7 2 210 输出 0.(142857) 0.0(095238) #include <stdio.h>i ...

  6. C++之求循环小数循环节

    ■题目描述 :     任意分数都可以写成小数的形式,样例是有限小数或无限循环小数中的一种. ■输入描述:          两个正整数p和q,代表分子和分母. 两个正整数p和q,代表分子和分母.且1 ...

  7. 10道C++输出易错笔试题收集(敢进来挑战吗?)

    下面这些题目都是我之前准备笔试面试过程中积累的,大部分都是知名公司的笔试题,C++基础薄弱的很容易栽进去.我从中选了10道简单的题,C++初学者可以进来挑战下,C++大牛也可以作为娱乐玩下(比如下面的 ...

  8. 10道C++输出易错笔试题收集

    10道C++输出易错笔试题收集 下面这些题目都是我之前准备笔试面试过程中积累的,大部分都是知名公司的笔试题,C++基础薄弱的很容易栽进去.我从中选了10道简单的题,C++初学者可以进来挑战下,C++大 ...

  9. 给定一个数值,输出符合中国人习惯的读法--记一道笔试题

    题目:给定一个数字,最大小于一万亿,输出符合中国人习惯的读法,例如: a.12输出:十二 b.102输出:一百零二 c.1002输出:一千零二 d.112输出:一百十二 e.10112输出:一万零一百 ...

最新文章

  1. 阿里程序员每天都沮丧想离职!天天去厕所哭!求助心理医生!其他阿里员工:我们也这样!阿里究竟怎么了?...
  2. matlab对矩阵的单个元素修改,怎么修改矩阵中的某些元素 或者简单点说保留矩阵中的元素...
  3. 通俗说基于Yarn的Map-Reduce过程
  4. 【论文相关】历年CVPR、ICCV、ECCV论文合集下载
  5. 二十五、深入Python中的协程
  6. 【SHARE】WEB前端学习资料
  7. 计蒜客可以做计算机编程吗,如果你的编程能力不足以支撑你成为工程师的野心,不妨到计蒜客上学学看...
  8. Java 抛异常的两种方法
  9. 为什么要使用Node.js进行数据科学
  10. 【Kafka】Exiting due to: org/apache/kafka/common/protocol/SecurityProtocol
  11. Exp3:MAL_免杀原理与实践
  12. pfSesne 使用IPv6与隧道代理
  13. 16.卷2(进程间通信)---Sun RPC
  14. 拓端tecdat|R语言法国足球联赛球员多重对应分析(MCA)
  15. SpringMVC学习(一)SpringMVC入门 、HelloSpringMVC程序、SpringMVC执行原理
  16. 常见电脑病毒及解决措施
  17. windows电脑桌面旋转快捷键
  18. 图像处理——乘性噪声和加性噪声
  19. git 入门笔记-基础命令
  20. 第9周项目6委派任务

热门文章

  1. pidstat_Linux查看某个进程的磁盘IO读写情况 pidstat
  2. OpenLayers开发:符号矢量化
  3. 高维向量相似搜索插件 pgvector
  4. vue使用命令行构建完项目后_通过命令行创建vue项目的方法
  5. 可能这些是你想要的H5键盘兼容方案
  6. 瑞典让华为失去了一个1000万人口的市场,却同时让爱立信失去了一个140000万人的市场...
  7. 练习Vue烘培坊项目
  8. fifa18 服务器维护,fifa18链接服务器
  9. Word图片粘贴上传控件,直接粘贴图片到编辑器-DEDE
  10. html表格中添加超链接,Excel表格中添加超链接的方法教程