题目内容

利用“顺序队列”将十进制的小数部分转base进制(要考虑小数位保留位数)。

个人解法

//由于本人已彻底从vs转到了vscode,且使用的是MinGW64编译环境,因此今后不会再使用#define_CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#define MaxSize 100 //最大队列长度
#define Succeed 1
#define Error 0
#define Overflow -1typedef int QElemType;typedef struct
{QElemType *base; //初始化的动态分配存储空间int front;       //头指针,若队列不空,指向队列头元素int rear;        //尾指针,若队列不空,指向队列尾元素的下一个位置
} SqQueue;//初始化循环队列
void InitQueue(SqQueue &Q)
{Q.base = (QElemType *)malloc(MaxSize * sizeof(QElemType));if (!Q.base)exit(Overflow);   //存储空间分配失败Q.front = Q.rear = 0; //构造一个空队列printf("初始化成功!");
}//返回Q的元素个数,即队列当前长度
int QueueLength(SqQueue &Q)
{return (Q.rear - Q.front + MaxSize) % MaxSize;
}//判空
bool IsEmpty(SqQueue &Q)
{QElemType e;if ((Q.rear + 1) % MaxSize == Q.front)return true;elsereturn false;
}//判满
bool IsFull(SqQueue &Q)
{QElemType e;if (Q.front == Q.rear)return true;elsereturn false;
}//入队
void EnQueue(SqQueue &Q)
{QElemType e;if (IsEmpty(Q))printf("队列已满!");else{printf("输入欲插入的元素:");scanf(" %d", &e);Q.base[Q.rear] = e;              //插入元素e为Q的新的队尾元素Q.rear = (Q.rear + 1) % MaxSize; // rear + 1printf("插入成功!");}
}//出队
void DeQueue(SqQueue &Q)
{QElemType e;if (IsFull(Q))printf("队列为空!");else{printf("输入欲删除的元素:");scanf(" %d", &e);e = Q.base[Q.front];               //删除Q的队头元素并将其值赋给eQ.front = (Q.front + 1) % MaxSize; // front + 1printf("删除成功!");}
}void Conversion()
{SqQueue Q;int base; //我原先以为base进制的意思是用存储空间base的地址数据,结果把*Q.base放进去后出大问题(有兴趣可以试试,总之输出结果很离谱)float input;QElemType output;InitQueue(Q);printf("请输入待转的十进制数:\n");scanf("%f", &input);printf("请输入进制数:\n");scanf("%d", &base);if (input == 0)exit(Error);int integer = input / 1; //分离整数部分float decimal = input - (float)integer;for (int i = 0; i < 9; i++) //遍历输出结果,这里设定小数位保留位数为9+1位{decimal = decimal * base; //小数自乘以目标进制数Q.base[Q.rear] = (QElemType)decimal; //插入取整结果作为Q的新的队尾元素Q.rear = (Q.rear + 1) % MaxSize;decimal = decimal - (QElemType)decimal;}printf("小数部分转换为%d进制的值为:\n.", base);while (!IsEmpty(Q)){output = Q.base[Q.front]; //删除Q的队头元素并将其值赋给resultQ.front = (Q.front + 1) % MaxSize;printf("%d", output); //如果输出结果里看到-1163005939这类就说明数组越界了,但不影响代码运行}
}int main()
{Conversion();system("pause");return 0;
}

运行结果

虽说数组越界并不影响编译,但还望热心大佬出手相助,在下不胜感激。

【C语言习题】将十进制的小数部分转base进制相关推荐

  1. 将十进制有理数转化为m进制数(C语言实现)

    内容: 若将十进制有理数转换为r进制的数,应如何实现. 步骤: 1.算法分析: 进行算法分析前,首先需要了解一些进制转换的知识,十进制整数转换二制是采用"除2取余,逆序输出"的方法 ...

  2. C++控制不同进制输出(二进制,八进制,十进制,十六进制)各种进制之间的转换

    目录 1.输出(头文件讲解) 2.格式控制 常用的I/O流控制符 4.各种进制之间的转换(进制大乱斗) 4.1.写在前面 4.2整体框架搭建 4.3菜单函数 4.4用户输入选择(main函数体中) 4 ...

  3. 【进制转换】二进制,十进制,八进制,16进制

    1.二进制与十进制相互转换 二进制转为十进制 0000 0110转换为10进制: (二进制里面没有"个位.十位.百位",只能通过从左到右或者从右到左第几位来描述), 从右往左开始, ...

  4. 利用栈的基本操作,将一个十进制数转换成8进制数

    题目 利用栈的基本操作,将一个十进制数转换成8进制数 #include<iostream>using namespace std;#define MAXSIZE 100 typedef i ...

  5. 数据结构---递归实现十进制装换为任意进制

    数据结构-递归实现十进制装换为任意进制 代码: #include <stdio.h> #include <stdlib.h> #include"stack.h&quo ...

  6. 十进制数转化为任意进制数n,采用变量N、数组A[]进行存储两种算法实例

    进制转化的核心代码为:(a 为输入的十进制数,n为需要转换的进制数,temp为变量进行存值) //先假设将a全部囤在个位数上,依次将a处理进行升位处理 temp = a %n; //利用求余公式,求出 ...

  7. 进制转换(十进制n转化为k进制)

    一.十进制n转化为k进制 将十进制整数n(−231≤n≤231−1)转换成k(2≤k≤16)进制数.注意,10~15分别用字母A.B.C.D.E.F表示. 输入格式: 首先输入一个正整数T,表示测试数 ...

  8. 使用栈实现十进制数转化为N进制数

    /*     使用栈求解及十进制数转化为N进制数 */ #include <iostream> #include <stack> using namespace std; vo ...

  9. 十进制数任意转换2-9进制数--栈的应用

    十进制数任意转换2-9进制数--栈的应用 最近看了看数据结构,用栈的基本原理写了一个进制转换程序,在此分享一下,以便于后续查阅! 头文件nb.h如下 #include <stdio.h> ...

最新文章

  1. c语言数组最大元调换,c语言数组元素交换有关问题,请高手过来看看
  2. [渝粤教育] 中国地质大学 马克思主义基本原理 复习题
  3. 657. 机器人能否返回原点
  4. Spring Cloud Spring Boot mybatis分布式微服务云架构(一)快速入门
  5. [蓝桥杯历届试题] 汉诺塔计数
  6. 电脑故障速查方法集萃
  7. 算法时间复杂度分析(一)
  8. 2017年语义理解总结(二)
  9. 笔记:《高效能人士的七个习惯》第一章 由内而外全面造就自己
  10. CA服务器开开发(一)---颁发证书,生成pfx证书安装文件
  11. bzoj1753[Usaco2005 qua]Who's in the Middle*
  12. 爬取北京市公交线路信息
  13. Python判断指定日期是不是法定节假日
  14. Vue中使用高德地图
  15. 做了一个可以查询飞机航班、火车班次的小应用
  16. 荣耀上线“荣耀亲选”对标有品,小米要当心了!
  17. 线性回归的多重共线性问题及其解决
  18. 采集网站服务器配置,搭建数据采集云服务器源码
  19. AndroidStudio查找快捷键
  20. 旧书交易系统——第一次报告

热门文章

  1. 谢天谢地,AI开发者的“吐槽大会”终于结束了
  2. matlab 计算闭合区域的面积
  3. 【问题集合】Unity3d天空盒问题
  4. 文章伪原创工具-自动批量文章伪原创工具免费
  5. MysqL的冷备和热备概念
  6. 如何裁剪PDF页面并缩小尺寸
  7. STM32中使用J-Link仿真器选择JTAG模式和SWD模式的区别
  8. 美联储降息如何影响加密货币市场?| 一周问答热议
  9. 电磁场数值仿真技术及天线设计与应用
  10. 帝国CMS仿资源管理吧整站源码+会员付费下载