当前位置: 首页 > news >正文

2.求循环小数

题目

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

输入: N M

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

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


C完整代码

#include <stdio.h>  
#include <stdlib.h>  typedef struct node
{int data;struct node* next;
} NODE;void change(int n, int m, NODE* head)
{NODE* current = head;  // 当前节点指针,初始指向头节点for (int i = 1; i <= 50; i++)  // 循环50次,最多插入50个节点{if (n == 0)  // 如果被除数为0,则退出循环{break;}else{n = n * 10;  // 将被除数乘以10,以便获取下一个商int quotient = n / m;  // 计算商n = n % m;  // 计算余数NODE* newNode = (NODE*)malloc(sizeof(NODE));  // 创建新节点newNode->data = quotient;  // 将商存储在新节点的数据域中current->next = newNode;  // 将新节点连接到当前节点的后面current = newNode;  // 将当前节点指针移动到新节点}}current->next = NULL;  // 将最后一个节点的next指针置为NULL,表示链表结束
}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("\n");
}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);// 释放动态分配的内存空间NODE* current = head;while (current != NULL) {NODE* temp = current;current = current->next;free(temp);}return 0;
}

http://www.lryc.cn/news/170871.html

相关文章:

  • zabbix监控告警邮箱提醒,钉钉提醒
  • 典型数据结构-栈/队列/链表、哈希查找、二叉树(BT)、线索二叉树、二叉排序树(BST树)、平衡二叉树(AVL树)、红黑树(RB树)
  • pyarmor 加密许可证的使用
  • 网络路径监控分析
  • vue双向数据绑定是如何实现的?
  • el-date-picker 封装一个简单的日期组件, 主要是禁用日期
  • 保研复习-计算机组成原理
  • linux环境安装redis(亲测完成)
  • 关于命令行交互自动化,及pyinstaller打包wexpect的问题
  • 8.4 【MySQL】文件系统对数据库的影响
  • Python WEB框架FastAPI (二)
  • 基于Java网络书店商城设计实现(源码+lw+部署文档+讲解等)
  • 怒刷LeetCode的第3天(Java版)
  • JavaScript数组去重常用方法
  • 蓝牙电话之HFP—电话音频
  • JDBC基本概念
  • leetcode876 链表的中间节点
  • 了解方法重写
  • 2、从“键鼠套装”到“全键盘游戏化”审核
  • 【flutter】架构之商城main入口
  • linux学习实操计划0103-安装软件
  • git vscode
  • Linux命令行批量删除文件
  • CAN - 基础
  • 【Hash表】找出出现一次的数字-力扣 136
  • Resize和centerCrop的区别
  • 无涯教程-JavaScript - SUM函数
  • ChatGLM P-Tuningv2微调定制AI大模型
  • 关于RISC-V安全性的全面综述
  • Python基础语法规则和Java不同的地方