(数据结构)数制转换——将一个十进制整数转换成一个非十进制数

这篇具有很好参考价值的文章主要介绍了(数据结构)数制转换——将一个十进制整数转换成一个非十进制数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

#include<stdio.h>
#include<stdlib.h>
//类型创建
typedef struct	LinkedStackNode
{
	int data;
	struct LinkedStackNode* next;
}LinkedStackNode, * LinkedStack;
LinkedStack top;
//链栈的初始化
//头结点的初始化
LinkedStack Init_LinkedStack()
{
	LinkedStack top = (LinkedStackNode*)malloc(sizeof(LinkedStackNode));
	if (top != NULL)
	{
		top->next = NULL;
	}
	else
	{
		printf("头结点申请空间失败\n");
	}
	return top;
}
//判断栈空
int LinkedStack_Empty(LinkedStack top)
{
	if (top->next == NULL)
	{
		return 1;
	}
	else
	{
		return 0;
	}
}
//入栈
int Push_LinkedStack(LinkedStack top, int x)
{
	LinkedStackNode* node;
	node = (LinkedStackNode*)malloc(sizeof(LinkedStackNode));
	if (node == NULL)
	{
		printf("节点申请空间失败\n");
		return 0;
	}
	node->data = x;
	node->next = top->next;
	top->next = node;
	return 1;
}
//出栈
int Pop_LinkedStack(LinkedStack top, int* x)
{
	LinkedStackNode* node;
	if (top->next == NULL)
	{
		printf("链栈为空,无法进行出栈操作\n");
		return 0;
	}
	else
	{
		node = top->next;
		*x = node->data;
		top->next = node->next;  //将头结点后的节点整体向前一位
		free(node);
		return 1;
	}
}
//读取栈顶元素
int Get_LinkedStack(LinkedStack top, int* x)
{
	if (top->next == NULL)
	{
		printf("链栈为空\n");
		return 0;
	}
	else
	{
		*x = top->next->data;
		return 1;
	}
}
//对于输入的任意一个非负十进制整数,打印输出与其等值的任意进制数
void Conversion(int N)
{
	int x; //声明变量x,输出转换后各个位数上的数
	int jinzhi;
	printf("请输入需要转换为的进制数\n");
	scanf("%d",&jinzhi);
	LinkedStack S = Init_LinkedStack();   //构造空链栈S
	while (N > 0)   //当N>0时,继续进行数值转换
	{	
		Push_LinkedStack(S,N%jinzhi);  //对N对进制数的余数的入栈
		N /=jinzhi;  //将N的商赋值给本身,便于下一轮计算
	}
	printf("转化后的进制数为:");
	while (!LinkedStack_Empty(S))  //栈不为空时,出栈栈中的余数
	{
		Pop_LinkedStack(S,&x);   //进行出栈操作
		printf("%d ",x);
	}
}
int main()
{
	//栈的初始化
	//头结点的初始化
	LinkedStack top;
	top = Init_LinkedStack();
	if (top == NULL)
	{
		printf("申请链栈空间失败\n");
	}
	//对于输入的任意一个非负十进制整数,打印输出与其等值的任意进制数
	int N;
	printf("请输入需要转换的非负十进制数\n");
	scanf("%d",&N);
	Conversion(N);
	return 0;
}

文章来源地址https://www.toymoban.com/news/detail-720534.html

到了这里,关于(数据结构)数制转换——将一个十进制整数转换成一个非十进制数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数据结构:利用栈实现数制转换

    数制转换 从键盘输入一个十进制数n,并输入要转换的进制数m,利用栈将n转换成m进制,并输出转换后的结果。 首先设计一个含有多个菜单项的主菜单程序,然后再为这些菜单项配上相应的功能。 主菜单设计要求: 程序运行后,显示一个标题“进制转换”,标题下方给出4个

    2024年02月07日
    浏览(37)
  • 二进制与十进制的转换【相互转换, C++】

    二进制转十进制: 以字符串的形式读入二进制串。 获得该字符串的位数,即二进制的最高位是多少。 从左往右遍历 == 从高位往低位展开! 核心:按权展开,按位相加。 代码: 十进制转换为二进制: 思路: 十进制转化为 x x x 进制采用的是除 x x x 取余法(从下往上取余数

    2024年02月12日
    浏览(46)
  • Python中二进制十进制转换

            hello大家好,今天我想和大家分享一下在Python中进制转换加减法的方法。         比如现在我们需要求100 + 10,然后需要将结果110以二进制的形式返回,又或者我们现在有一个小需求,就是要计算二进制1010和二进制1011的和是多少,然后依旧以二进制的形式返回

    2024年02月16日
    浏览(36)
  • 十六进制转换到十进制(java)

    一、前言  首先我们要知道十六进制的转换以及十以上的进制的转换与十以下的进制转换是不一样的,它们在一位上会用超过9的数字,这个我们在利用以前的方法就行不通了,我接下来就向大家分享一种方法。(注:在Java中10---15分别用A B C D E F表示,不分大小写) 二、正文

    2024年02月11日
    浏览(49)
  • C++十进制与二进制之间的转换

    一般采用\\\"除2取余,逆序排列\\\"法: 也就是将一个十进制数不断除2,将每次得到的余数倒序从后向前排列。 拿求救信号6举个例子: 6/2=3……0  末位就是0 3/2=1……1   前一位就是1 1/2=0……1  再前一位就是1 再画个图辅助理解,这回试试100: 所以100的二进制表达就是1100100 那用

    2024年02月08日
    浏览(36)
  • MATLAB十六进制与十进制互相转换

    包含单个数字进行转换和数组进行转换(可用于串口数据解析) 1.十六进制转十进制

    2024年01月16日
    浏览(40)
  • 【Python 千题 —— 基础篇】进制转换:十进制转二进制

    题目描述 计算机底层原理中常使用二进制来表示相关机器码,学会将十进制数转换成二进制数是一个非常重要的技能。现在编写一个程序,输入一个十进制数,将其转换成二进制数。 输入描述 输入一个十进制数。 输出描述 程序将输入的十进制数转换为二进制数,并输出其

    2024年02月07日
    浏览(51)
  • 二进制与十进制数互相转换的方法及原理

    有人问我一道十进制数转化为二进制数的题:13.625转化为二进制应该如何表示。让我回忆起十多年前学编程时就搞不懂二进制,不找“不必求甚解”的借口,我搜索了一些平台,但很失望,这么多年过去了,能找到的资源依然和以前一样,只讲怎样操作,不提为什么这样操作

    2024年02月04日
    浏览(42)
  • Java中十六进制与十进制之间互相转换

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 提示:这里可以添加本文要记录的大概内容: 提示:以下是本篇文章正文内容,下面案例可供参考 话不多说,直接上代码 如将十进制数字 108 转换为十六进制 代码示例如下: 运行结果: 这样将一个十

    2024年02月12日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包