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语言代码中,我们使用了以下思路来计算小数部分和判断循环节:

  1. 使用数组decimal_part存储小数部分的每一位数字。
  2. 使用数组remainder_dict记录余数出现的位置
  3. 当发现重复的余数时,记录循环节的起始位置(start_index)和结束位置(end_index)。

最后,我们打印出小数的精确值,并根据是否有循环节进行输出。如果有循环节,我们打印出循环节的起始位置和结束位置。

C语言实现分数转小数及循环节判断

原文地址: https://www.cveoy.top/t/topic/lqf 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录