进制转换器(C语言)

目录

1问题: 输入任意进制的数值,可以转换成任意进制的数值(2到36进制);

2思路:

3代码:(需要运用到数据结构栈的知识)

4运行结果:


1问题: 输入任意进制的数值,可以转换成任意进制的数值(2到36进制);

2思路:

因为十进制是中间值,就是任何进制转换成十进制只需要每位乘上自己进制的加权数即可,十进制转换成任意进制可以的逆余数即可

一、十进制转任意进制:
       十进制转任意进制时,将这个十进制数除以进制数,比如2(也就是十进制转二进制),得到商和一个从0~1的余数,然后再以这个商为被除数,除了进制数2,继续得到商和一个从0~1的余数。以此方式不断相除,直到得到的商为0为止。此时,得到若干个余数,把这些余数按从后到先的顺序排列起来,那么这个排列起来的值即为该十进制转换成二进制的值。计算如图所示:

最后得到的余数为二进制的非零的最高位,最先得到的余数为二进制的最低位,可知:十进制数9转换成二进制数为1001。

二、任意进制转十进制:
        任意进制转十进制时,以二进制数1001为例:该进制的最低位(右一)的值1就表示实际的十进制值1,次低位(右二)的值0表示进制数2的一次方的0倍即为0,次次低位(右三)的值0表示进制数2的二次方4的0倍即为0,最高位(左一)的值1表示进制数2的三次方8的1倍即为8,以此类推,将每位得到的十进制数相加得到9,该和即为二进制数1001对应的十进制数。计算如图所示:

3代码:(需要运用到数据结构栈的知识)

#include<stdlib.h>
#include<string.h>
#include<math.h>
#include<iostream>
using namespace std;
#define MAXSIZE 100
#define ok 1
#define error 0
#define ovrflow -1 
typedef int status;
typedef struct{
	int *base;
	int *top;
	int stacksize;
}sqstack;
status initlist(sqstack &s);
void input(int x,int &e);
void conversion(sqstack &s,int y,int e);
void push(sqstack &s,int e);//改进 
int stackempty(sqstack s);
int pop(sqstack &s,int &e);
int main(){
	sqstack s;
	int x,y,m,e=0;
	while(1){
		cout<<"请决定将几进制转换为几进制:";
		cin>>x>>y;
		cout<<endl<<"请输入具体数值:";
		input(x,e);
		if(initlist(s)) cout<<"初始化成功"<<endl;
		else			cout<<"初始化失败";
		conversion(s,y,e);//栈,要转换的进制,元素 
		cout<<endl<<endl<<endl; 
	}
	return 0;
}
status initlist(sqstack &s){//初始化 
	s.base=new int[MAXSIZE];
	if(!s.base) return error;
	s.top=s.base;
	s.stacksize=MAXSIZE;
	return ok;
}
void conversion(sqstack &s,int y,int e){//万物皆可十进制 x原先进制,y要转换的进制,m数值 
	while(e){
		push(s,e%y);
		e=e/y;
	}
	cout<<"转换成"<<y<<"进制为:";
	while(!stackempty(s)){
		pop(s,e);
		cout<<e;
	}
}
void input(int x,int &e){
	char a[20];
	scanf("%s",a);
	int c;
	c=strlen(a);
	cout<<endl;
	for(int i=0;i<c;i++){
		if(a[i]>='0'&&a[i]<='9')
			e+=((int)a[i]-48)*(int)pow(x,c-i-1);
		if(a[i]>='A'&&a[i]<='Y')
			e+=((int)a[i]-55)*(int)pow(x,c-i-1);
	}
}
void push(sqstack &s,int e){
	if(s.top-s.base==s.stacksize){
		cout<<"失败,栈满";
	}
	*s.top++=e;
}
int stackempty(sqstack s){
	if(s.top==s.base) return ok;
	return error;
}
int pop(sqstack &s,int &e){
	if(s.top==s.base) return error;
	e=*--s.top;
	return ok;
}
4运行结果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/514431.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

跨域问题解决方案之CORS

跨域问题解决方案之CORS 文章目录 跨域问题解决方案之CORS概述浏览器的同源策略同源的判定规则目的同源策略的限制范围 浏览器的同源策略为什么会引发跨域问题&#xff1f;CORS规则CORS解决方案CORS方案将请求分为两类举例简单请求预检请求总结学以致用 概述 浏览器安全的基石…

文件操作详解(二)

目录 一.文件的顺序读写1.顺序读写函数&#xff08;适合于所有的流&#xff09;1.1 fgetc(读字符)1.2 fputc(写字符)1.3 fgets(读字符串)1.4 fput(写字符串)1.5 fscanf(格式化地读)1.6 fprintf(格式化地写) 2.顺序读写函数&#xff08;只适用于文件流&#xff09;2.1 fread(二进…

jupyter Notebook 默认路径修改

1. anaconda prompt 中运行 jupyter notebook --generate-config 命令&#xff0c;将在 C:\Users\Think\.jupyter文件下生成 jupyter_notebook_config.py 文件。 2.在jupyter_notebook_config.py 文件中&#xff0c;找c.NotebookApp.notebook_dir 这个变量&#xff0c; (1)若…

2012年认证杯SPSSPRO杯数学建模A题(第二阶段)蜘蛛网全过程文档及程序

2012年认证杯SPSSPRO杯数学建模 A题 蜘蛛网 原题再现&#xff1a; 第二阶段问题   现在我们假设一个具体的环境。假设有一个凸多边形的区域&#xff0c;蜘蛛准备在这个区域&#xff08;或其一部分&#xff09;上结一张网。   问题一&#xff1a; 在区域的边界上安置有若干…

区间概率预测python|QR-CNN-BiLSTM+KDE分位数-卷积-双向长短期记忆神经网络-时间序列区间概率预测+核密度估计

区间预测python|QR-CNN-BiLSTMKDE分位数-卷积-双向长短期记忆神经网络-核密度估计-回归时间序列区间预测 模型输出展示&#xff1a; (图中是只设置了20次迭代的预测结果&#xff0c;宽度较宽&#xff0c;可自行修改迭代参数&#xff0c;获取更窄的预测区间&#xff09; 注&am…

【chrome扩展】简 Tab (SimpTab)‘每日一句名言’样式

背景&#xff1a;最初参考“每日诗词”发现总是那几句&#xff0c;可以更换API接口完成“每日一句名言” 声明&#xff1a;本人不会ajax及ccs样式&#xff0c;非专业人士&#xff0c;借助CHATGPT代码生成完成。请友善交流。 每一句名言API: "https://api.xygeng.cn/open…

焦糖布丁理论:从用户任务角度重新审视产品价值

一、引言&#xff1a; 在竞争激烈的市场环境中&#xff0c;我们经常会遇到这样的困惑&#xff1a;为什么一款自认为极具创新和品质的产品&#xff0c;却未能获得市场的青睐和认可&#xff1f;焦糖布丁理论为我们提供了一个全新的视角&#xff0c;即”客户并非在购买产品本身&a…

gitlab代码迁移,包含历史提交记录、标签、分支

1、克隆现有的GitLab仓库&#xff08;http://localhost:8888/aa/bb/cc.git&#xff09;到本地&#xff0c;包括所有分支和标签 git clone --bare http://localhost:8888/aa/bb/cc.git 2、在gitlab上创建一个空的仓库&#xff08;http://localhost:7777/aa/bb/cc.git&#xff…

CAD Plant3D 2023 下载地址及安装教程

CAD Plant3D是一款专业的三维工厂设计软件&#xff0c;用于在工业设备和管道设计领域进行建模和绘图。它是Autodesk公司旗下的AutoCAD系列产品之一&#xff0c;专门针对工艺、石油、化工、电力等行业的设计和工程项目。 CAD Plant3D提供了一套丰富的工具和功能&#xff0c;帮助…

Spring Cloud微服务入门(一)

微服务的演变过程 //controller 视图交互层 前端数据处理传给service //1.DAO RequestBody userDAO String id;String type; {"id":"lcs", "type":"lcs"} //2.GET请求 findUserById&#xff1f;id1&typelcsRequestParam String …

电商大数据采集|电商API接口|自动化采集|人工采集

大数据采集是指从海量、异构、分散、动态的网络环境中收集、提取和存储数据的过程。大数据采集主要分为两种方式&#xff1a;自动化采集和人工采集。 1.自动化采集 电商API自动化采集是利用爬虫技术和API等方式&#xff0c;通过编写程序实现对网站或者应用程序中的数据进行自…

用户认证安全性测试

用户认证安全性测试 认证与会话管理认证--Authentication01 常见认证方式02 session认证Session Fixation攻击Session保持攻击 03 Token认证多因素认证session和token区别 04 暴力破解密码的那些事密码设置推荐策略 会话--Authorization 权限控制权限管理方式垂直权限管理水平权…

5.3.2 实验2:配置交换机端口安全

1、实验目的 通过本实验可以掌握&#xff1a; 交换机管理地址配置及接口配置。查看交换机的MAC地址表。配置静态端口安全、动态端口安全和粘滞端口安全的方法。 2、实验拓扑 配置交换机端口安全的实验拓扑如图所示。 配置交换机端口安全的实验拓扑 3、实验步骤 &#xff…

界面控件DevExtreme JS ASP.NET Core 2024年度产品规划预览(一)

在本文中我们将介绍今年即将发布的v24.1附带的主要特性&#xff0c;这些特性既适用于DevExtreme JavaScript (Angular、React、Vue、jQuery)&#xff0c;也适用于基于DevExtreme的ASP.NET MVC/Core控件。 注意&#xff1a;本文中列出的功能和特性说明官方当前/预计的发展计划&a…

Jenkins--任务详解

一、任务类型 Jenkins的主要功能的实现是由执行任务去完成的&#xff0c;常用的任务类型主要有以下三种&#xff1a; 自由风格任务(Free Style Project): 这是Jenkins中最常用的任务类型&#xff0c;允许你自定义各种构建步骤和配置选项&#xff0c;如源码管理、构建触发器、…

【第十一届大唐杯全国大学生新一代信息通信技术大赛】赛题分析

赛道一 一等奖 7% 二等奖 15% 三等奖 25% 赛道二 参考文档&#xff1a; 《第十一届大唐杯全国大学生新一代信息通信技术大赛&#xff08;产教融合5G创新应用设计&#xff09;专项赛说明.pdf》 一等奖&#xff1a;7% 二等奖&#xff1a;10% 三等奖&#xff1a;20% 赛项一&am…

使用 Flume 将 CSV 数据导入 Kafka:实现实时数据流

使用 Flume 将 CSV 数据导入 Kafka&#xff1a;实现实时数据流 文介绍了如何使用 Apache Flume 将 CSV 格式的数据从本地文件系统导入到 Apache Kafka 中&#xff0c;以实现实时数据流处理。通过 Flume 的配置和操作步骤&#xff0c;我们可以轻松地将数据从 CSV 文件中读取并发…

Django複習總結

①Django是框架。那麼什麼是框架&#xff1a; 框架很像是一個骨架&#xff0c;帶有很多默認器官的骨架。我們可以根據需要改寫、複寫這些器官。 從而實現自己所需要的功能。 ②Django是MVC模型\MVT模型&#xff1a; MVC模型&#xff1a;M&#xff1a;models模型層 V&#…

wireshark解析grpc/protobuf的方法

1&#xff0c;wireshark需要安装3.20以上 下载地址&#xff1a;https://www.wireshark.org/ 2&#xff0c;如果版本不对&#xff0c;需要卸载&#xff0c;卸载方法&#xff1a; sudo rm -rf /Applications/Wireshark.app sudo rm -rf $HOME/.config/wireshark sudo rm -rf /…

【信号处理】基于变分自编码器(VAE)的脑电信号增强典型方法实现(tensorflow)

关于 在脑电信号分析处理任务中&#xff0c;数据不均衡是一个常见的问题。针对数据不均衡&#xff0c;传统方法有过采样和欠采样方法来应对&#xff0c;但是效果有限。本项目通过变分自编码器对脑电信号进行生成增强&#xff0c;提高增强样本的多样性&#xff0c;从而提高最终…