C语言实现分数转小数及循环节判断
C语言实现分数转小数及循环节判断
以下是使用C语言实现分数转小数,并判断循环节的代码:
#include <stdio.h>
void calculate_fraction() {
int m, n;
printf('please input a fraction (m/n) (0< m< n<=100): ');
scanf('%d/%d', &m, &n);
int decimal_part[100];
int remainder_dict[100] = {0};
int remainder = m % n;
int decimal_length = 0;
int start_index = -1, end_index = -1;
while (remainder != 0) {
if (remainder_dict[remainder] != 0) {
start_index = remainder_dict[remainder];
end_index = decimal_length;
break;
}
remainder_dict[remainder] = decimal_length;
remainder *= 10;
decimal_part[decimal_length] = remainder / n;
remainder %= n;
decimal_length++;
}
double accuracy_value = (double)m / n;
printf('%d/%d it\'s accuracy value is: %.15f.\n', m, n, accuracy_value);
if (start_index != -1) {
printf('\tand it is an infinite cyclic fraction from %d\n', start_index + 1);
printf('\tdigit to %d digit after decimal point.\n', end_index + 1);
}
}
int main() {
calculate_fraction();
return 0;
}
在这个C语言代码中,我们使用了以下思路来计算小数部分和判断循环节:
- 使用数组
decimal_part存储小数部分的每一位数字。 - 使用数组
remainder_dict记录余数出现的位置。 - 当发现重复的余数时,记录循环节的起始位置(
start_index)和结束位置(end_index)。
最后,我们打印出小数的精确值,并根据是否有循环节进行输出。如果有循环节,我们打印出循环节的起始位置和结束位置。
原文地址: https://www.cveoy.top/t/topic/lqf 著作权归作者所有。请勿转载和采集!