本文主要是介绍机试题-一种精确计算,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、题目如下:
精确计算:输入两个数M,N(均小于100),M/N可能为有限小数,也可能为无限循环小数,如:1/4=0.25 1/7=0.142857142857142857......如果M/N为有限小数,则输出其所有的小数位,如果M/N为无限循环小数,则输出它小数点后面的一个循环节
二、附上解法:
由于M<N,且二者都是小于100的正整数,M除以N的结果为小于1的小数。M , N都是整数 ==>结果为有理数==>有限小数/无限循环小数,除尽 <==> 余数为0,出现循环 <==> 余数重复出现(与前面任何一个余数相等)
(1)有限小数,余数==0
(2)出现循环,余数重复出现
以上两个条件作为不再向下除的结束标志。
由于M,N都是小于100的正整数,所以每次的商最多有100种情况,余数也最多有100种,所以使用两个容量为100的数组保存余数和每次余数除以除数的商。只要新的余数在保存的余数数组中出现过,因为除数是同一个,所以这次的商之后的所有的商都会重复出现。
//c语言
#include <stdio.h>
void printRes(int M, int N){int i, j;int temp, flag = 0;int remainder[100], r
这篇关于机试题-一种精确计算的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!