zoukankan      html  css  js  c++  java
  • 求循环小数

    对于任意的真分数 N/M ( 0 < N < M ),均可以求出对应的小数。如果采用链表表示各个小数,对于循环节采用循环链表表示,则所有分数均可以表示为如下链表形式。

    此题需要提交所有代码,不能只提交子函数change。

    循环节

    输入: N M

    输出: 转换后的小数(不超过 50 )

    要求: 仅编写将分数转换为小数的函数 change( int n, int m, NODE * head ) 。

    /* PRESET CODE BEGIN - NEVER TOUCH CODE BELOW */
    
    #include <stdio.h>
    #include <stdlib.h>
    
    typedef struct node
    {   int         data;
        struct node * next;
    } NODE;
    
    void output( NODE * );
    void change( int, int, NODE * );
    
    void output( NODE * head )
    {   int k=0;
    
        printf("0.");
        while ( head->next != NULL && k<50 )
        {   printf("%d", head->next->data );
            head = head->next;
            k ++;
        }
        printf("
    ");
    }
    
    void change(int n, int m, NODE * head)
    {
        int a = n, b[50] = {0}, i=0, j=0;
        NODE * tmp = NULL;
        NODE * p = NULL, *q = head;
        do
        {
            b[i++] = a *= 10;
            for (p = head->next, j=0; p!=NULL && j<i-1; p=p->next)
            {
                if (b[j++] == a)
                {
                    q->next = p;
                    return;
                }
            }
            tmp = (NODE *)malloc(sizeof(NODE));
            tmp->data = a / m;
            a %= m;
            q->next = tmp;
            q = tmp;
            q->next = NULL;
        }
        while (a && i<50);
    }
    
    int main()
    {   int n, m;
        NODE * head;
    
        scanf("%d%d", &n, &m);
        head = (NODE *)malloc( sizeof(NODE) );
        head->next = NULL;
        head->data = -1;
        change( n, m, head );
        output( head );
        return 0;
    }

      每位除法的余数作为判断循环的依据,必须被存储,而结构体NODE中没有该域,所以单独申请一个数组,遵照题意,输出长度不会超过50位,所以数组开到50即可。

      注意循环结束条件,避免数组越界。

  • 相关阅读:
    spring cloud学习(五) 配置中心
    spring cloud学习(四) 动态路由
    spring cloud学习(三) 断路器
    spring cloud学习(二) 调用服务
    spring cloud学习(一) 服务注册
    spring boot实现异步调用
    openlayers 5.3记录
    asp.net core3.1 实战开发(EF+Mysql 从数据库生成实体类到项目)
    asp.net core3.1 实战开发(EF+Sqlserver 从数据库生成实体类到项目)
    Jexus独立版(专业版)的安装
  • 原文地址:https://www.cnblogs.com/weir007/p/5977702.html
Copyright © 2011-2022 走看看