openjudge数据结构练习集 数制转换(栈应用)

【数据结构】栈的应用---数制转换 阅读详情

数制转换(栈应用)

总时间限制: 
1000ms
内存限制: 
65536kB
描述

编程实现:输入两个正整数m和r(2<= r <=16),输出与十进制数m相等的r进制数。大于9的数字依次使用大写字母:A B C D E F

要求:使用链栈来实现,否则成绩记0分。


输入
输入一行,包括两个整数m和r,用空格隔开。1<=m<=9999, 2<=r<=16
输出
与十进制整数m相等的r进制数
样例输入
108 16
样例输出
6C

#include<stdio.h>
#include<stdlib.h>

#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
#define MAXSIZE 20 /*  存储空间初始分配量 */

typedef int Status;
typedef int SElemType;

typedef struct StackNode
{
    SElemType data;
    struct StackNode *next;
}StackNode,*LinkStackPtr;

typedef struct
{
    LinkStackPtr top;
    int count;
}LinkStack;

Status InitStack(LinkStack *S)
{
    S->top = (LinkStackPtr)malloc(sizeof(StackNode));
    if(!S->top)
        return ERROR;
    S->top=NULL;
    S->count=0;
    return OK;
}

Status StackEmpty(LinkStack S)
{
    if (S.count==0)
        return TRUE;
    else
        return FALSE;
}


Status Push(LinkStack *S,SElemType e)
{
    LinkStackPtr s=(LinkStackPtr)malloc(sizeof(StackNode));
    s->data=e;
    s->next=S->top;	/*  把当前的栈顶元素赋值给新结点的直接后继*/
    S->top=s;	 /*  将新的结点 s 赋值给栈顶指针 */
    S->count++;
    return OK;
}

Status Pop(LinkStack *S,SElemType *e)
{
    LinkStackPtr p;
    if(StackEmpty(*S))
        return ERROR;
    *e=S->top->data;
    p=S->top;	/*  将栈顶结点赋值给 p,见图中③ */
    S->top=S->top->next;	/*  使得栈顶指针下移一位,指向后一结点 */
    free(p);	/*  释放结点 p */
    S->count--;
    return OK;
}

Status visit(SElemType c)
{
    printf("%d ",c);
    return OK;
}

Status StackTraverse(LinkStack S)
{
    LinkStackPtr p;
    p=S.top;
    while(p)
    {
        visit(p->data);
        p=p->next;
    }
    printf("\n");
    return OK;
}

int main()
{
    int i=0;
    int m,r;
    int e;
    scanf("%d%d",&m,&r);
    LinkStack s;
    InitStack(&s);
    while(m>0)
    {
        int x=m%r;
        m=m/r;
        Push(&s,x);
    }
    LinkStackPtr p;
    while(!StackEmpty(s))
    {
        Pop(&s,&e);
        if(e<10)
            printf("%d",e);
        else
        {
            switch(e)
            {
                case 10:printf("A");break;
                case 11:printf("B");break;
                case 12:printf("C");break;
                case 13:printf("D");break;
                case 14:printf("E");break;
                case 15:printf("F");break;
            }
        }
    }
    return 0;
}

OpenJudge百炼-2798-2进制化为16进制-C语言-数制转换 描述: 输入一个2进制的数,要求输出该2进制数的16进制表示。 在16进制的表示中,A-F表示10-15 输入: 第1行是测试数据的组数n,后面跟着n行输入。每组测试数据占1行,包括一个以0和1组成的字符串,字符串长度至少是1,至多是10000 输出: n行,每行输出对应一个输入。 样例输入: 2 100000 111 样例输出: 20 7 /*********** 阅读详情

相关推荐

信息学奥赛刷题必备:OpenJudge NOI 4.6 1455题‘An Easy Problem’保姆级解法(C++实现)

本文详细解析了OpenJudge NOI 4.6 1455题'An Easy Problem'的C++实现方法,从基础枚举法到高效的二进制位操作技巧,帮助信息学奥赛选手掌握数制转换与算法优化。通过清晰的代码示例和性能分析,提升解题效率,适合备战NOI等算法竞赛的选手参考学习。

weixin_30606461的博客 334

【OpenJudge】【数据结构】全题解

Challenge0 : 直接数组模拟即可。 Challenge1 : 比上一题加强了一点,对每个位置建立链表,修改时向该位置插入新节点并保存时间戳,查询时沿着链表找到第一个时间戳小于k的数字 Challenge2:比上一题更难了,可以撤销前x次操作。我们可以使用可持久化的思想,每次操作都新建节点,用倍增思想维护当前节点的祖先,这样查询就可以做到O(logn) Challenge3 : 裸线

I'm dreamer 1500

数据结构数制转换

数据结构中的简单常见小程序,用C语言实现数制之间的转换 十进制到二进制 八进制 十六进制,希望可以帮助大家学习数据结构。

openjudge数据结构练习集 队列基本操作

队列基本操作查看提交统计提问总时间限制: 1000ms单个测试点时间限制: 500ms内存限制: 5000kB描述输入若干个整数(小于50个),整数共有四种类型,不同类型的整数代表不同操作。说明如下:1、[10,99]之间的整数:将该整数入队。2、-1: 队首整数出队。3、-2: 显示队列所有整数。4、-3: 输入结束。说明:采用链队列实现,必须有队列初始化函数、入队函数、出队函数。输入第一行若干...

beforeevery的博客 912

华为云Stack的学习(三)

LVS是四层负载均衡,建立在OSI模型的传输层之上,所以效率非常高。NAT模式的转发主要通过修改IP地址(位于OSI模型的第三层网络层)实现转发。DR模式的转发主要通过修改MAC地址(位于OSI模型的第二层数据链路层)实现转发。云服务框架中使用的DR模式。域名解析服务器分为管理侧(OM)和租户侧(Tenant)**DNS-OM:**作为云服务的本地DNS服务器,为云服务提供域名解析服务,并代理公网域名的解析。

Ciyaso的博客 8562

华为eNSP Pro实战:NE/CE设备SSH远程配置避坑指南

本文针对华为eNSP Pro用户在模拟多台NE路由器或CE交换机时遇到的浏览器卡顿问题,提供了详细的SSH远程配置避坑指南。通过对比浏览器与SSH客户端的资源占用和操作体验,文章详细阐述了为NE和CE设备配置SSH服务的关键步骤、命令差异及常见错误排查方法,旨在帮助用户提升实验效率,实现稳定高效的远程管理。

weixin_29196891的博客 220

数据结构--数制的转换

【案例分析】    当将一个十进制整数N转换为八进制数时,在计算过程中,把N与8求余得到的八进制数的各位依次进栈,计算完毕后将栈中的八进制数依次出栈输出,输出结果就是待求得的八进制数【案例实现】在具体实现时,栈可以采用顺序存储表示也可以采用链式存储表示。算法-----数制的转换【算法步骤】1、初始化一个空栈S。2、当十进制数N非零时,循环执行以下操作:    把N与8求余得到的八进制数压入栈S; ...

亲,如果文章对你有帮助的话请点个关注吧! 9964

双足步行机器人的ZMP与CoP检测

静态步行与动态步行   机器人步态分为静态步行和动态步行。当机器人做静态步行运动时,身体的各个部分运动速度很小,机器人的整体稳定性较易控制。静态步行稳定性采用机器人的重心地面投影点(Center of Gravity,简称CoG)作为稳定性标准,这种判定方法适用于运动较为缓慢的情况。如果机器人采用的是一种高速运动的步行方式,则称之为动态步行。当机器人进行动态步行时,其重心的位置和加速度的大小时...

weixin_34112208的博客 5908

OpenJudge NOI 1.13 01:数制转换

【题目链接】 OpenJudge NOI 1.13 01:数制转换 【题目考点】 1. 数制 数制转换过程中,必然会用到以下两点。 2. 数字正向组合 从高位到低位遍历数字的每一位,最终将每位数字组合成一个完整的数字 示例: //数组a中,a[0]是百位数字,a[1]是十位数字,a[2]是个位数字,求这个数字的值 int a[3] = {3,2,1}, num = 0;//设这个数字为321 for(int i = 0; i < 3; ++i) num = num*10 + a[i]; cout &

君义NOIP的博客 2560

AI Agent实战:WorkBuddy安装部署、任务执行与模型接入全教程

AI Agent是当前自动化办公与智能工作流的核心技术,它区别于传统问答式AI,能够理解目标、拆解任务并调用工具交付完整成果。其底层原理基于任务规划、工具调用与结果验证的循环机制,让机器从“提供建议”进化为“完成任务”。在工程实践中,合理配置模型服务(如接入DeepSeek)、设计标准化Skill(技能包)与自定义指令,可以显著提升Agent在报告生成、数据分析、竞品调研等场景中的稳定性与效率。WorkBuddy作为典型的任务式AI工作台,为运营、产品、开发等多角色提供了统一入口,覆盖安装部署、任务描述公式

weixin_26712075的博客 289

STM32驱动MG996R舵机的PWM控制与闭环原理

舵机是一种典型的模拟闭环伺服系统,其核心是通过电位器反馈实现角度位置的自动校正。工作原理基于负反馈控制:目标PWM脉宽决定期望角度,电位器输出实时反馈实际角度,控制电路计算偏差并驱动电机消除误差。该机制赋予舵机强带载能力与抗干扰性,是机器人、云台、智能执行器等场景的关键执行单元。在嵌入式开发中,STM32通过定时器生成标准20ms周期、0.5–2.5ms脉宽的PWM信号,需严格遵循电气规范,并解决PA15引脚SWJ复用冲突、定时器重映射及CCR精度计算等关键问题。本文深入解析MG996R舵机控制全流程,涵盖

weixin_42600407的博客 562

Openjudge 1.13.1 数制转换

Openjudge 1.13.1 数制转换

m0_57099194的博客 306

ETAS工具导入DBC生成Com协议栈

ETAS工具导入DBC主要也是生成arxml用的,ETAS推荐使用Cobra导入,本文介绍导入过程及注意事项不管是导入DBC还是arxml,本质上都是为了生成对应的com协议栈,目的是为了减少重复的工作量,所以,前期定义好收发的矩阵很重要,一般导入一次之后,后面就可以按变更点手动更改了。

赞的博客 1711

从‘数制转换’到‘位运算’:一道OpenJudge题如何帮你彻底理解二进制与枚举算法

本文通过OpenJudge上的'An Easy Problem'题目,深入探讨了二进制与枚举算法的核心概念。从数制转换到位运算技巧,详细解析了计算机底层逻辑和高效算法设计,帮助读者掌握信息学奥赛中的关键解题思维。

weixin_30411819的博客 346

专栏目录:Linux 内存管理子系统的进化——从 MM 到 HMM

专栏梳理了Linux内存管理子系统从经典MM到异构内存管理(HMM)的演进历程。内容分为六大部分:首先介绍经典MM基础,包括虚拟地址空间、页表、VMA等核心机制;其次分析MM通用框架如页表遍历、NUMA迁移等;然后探讨设备内存引入的关键技术,如ZONE_DEVICE和dev_pagemap;接着深入解析HMM核心机制及其与DMA的集成;随后通过多个实际驱动案例展示HMM应用;最后讨论大页支持等进阶主题。专栏采用"经典机制→问题→扩展方案"的三段式结构,帮助开发者理解Linux如何通过HMM实现设备内存管理。

图形/计算GPU的驱动与虚拟化技术分享园地 872

PCL 贪婪投影三角剖分算法【2025最新版】

本博客在学习PCL中的贪婪投影三角算法的基础上,实现了使用彩色点云重建彩色模型的应用案例。博客长期更新,最近一次更新时间为:2025年7月6日。

点云侠的博客 37万+

OpenJudge 2710 数制转换 (数制)

描述 给一个a进制的数转换为b进制的数。 输入 输入只有一行,包含三个整数a,n,b。a表示其后的n 是a进制整数,b表示欲将a进制整数n转换成b进制整数。 a,b是十进制整数,2 =&amp;lt; a,b &amp;lt;= 16。 输出 输出包含一行,该行有一个整数为转换后的b进制数。输出时字母符号全部用大写表示,即(0,1,…,9,A,B,…,F)。 样例输入 15 Aab3 7 样例输出 210306 ...

sunlanchang的博客 1065

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

OpenJudge-01:数制转换

描述 求任意两个不同进制非负整数的转换(2进制~16进制),所给整数在long所能表达的范围之内。 不同进制的表示符号为(0,1,...,9,a,b,...,f)或者(0,1,...,9,A,B,...,F)。 输入 输入只有一行,包含三个整数a,n,b。a表示其后的n 是a进制整数,b表示欲将a进制整数n转换成b进制整数。 a,b是十进制整数,2 =< a,b <= 16。 输出 输出包含一行,该行有一个整数为转换后的b进制数。输出时字母符号全部用大写表示,即(0,1,...,9,A

Lyn_zhu的博客 925

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

openjudge 1.13.1 数制转换

进制转化

weixin_60869516的博客 504

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

OpenJudge 1.13.1数制转换

http://noi.openjudge.cn/ch0113/01/ 解题方法

xsh_fu的博客 468

OpenJudge NOI 1.13 46:八进制到十进制

OpenJudge NOI 1.13 46:八进制到十进制例:输入八进制数字到a 例:输入八进制数字到a 基本数制转换,将原数字通过数字组合转为值,再将值在目标进制下进行数字拆分,得到目标进制的数字串。借用scanf/printf或cin/cout中的特定方法,可以处理十进制、八进制、十六进制数字的转换。 这是一个比较取巧的方法,并非通用方法。仅作为了解。...

君义NOIP的博客 865

OpenJudge NOI 1.13 44:正整数的任意进制转换

OpenJudge NOI 1.13 44:正整数的任意进制转换 注意:题目说是正整数的进制转换,而实际上输入的数字可能有0。先处理字符串,将输入的字符串拆分成p,p进制字符串n,及q。先考虑如果涉及的都是低精度数字,应该如何将p进制的n转为q进制。 先将p进制的n转为值v,再对v在q进制下做数字拆分,得到q进制下的数字串。 以上代码可以解决数值在int类型范围内的数字的数制转换。 而本题n可以达到50位,必须用高精度数字表示。 将输入的数字串转为p进制高精度数字。 上述代码中“将p进制数字转为值”这一步不

君义NOIP的博客 1733

程序设计导引及在线实践——练习记录

文章目录 初步打算是先练习,记录好的代码。

weixin_43238031的博客 538

OpenJudge NOI 1.13 45:十进制到八进制

OpenJudge NOI 1.13 45:十进制到八进制基本数制转换,将原数字通过数字组合转为值,再将值在目标进制下进行数字拆分,得到目标进制的数字串。

君义NOIP的博客 704

信息学奥赛一本通 1413:确定进制 | OpenJudge NOI 1.13 34:确定进制 | OpenJudge NOI 2.1 1973:确定进制

【题目链接】 ybt 1413:确定进制 OpenJudge NOI 1.13 34:确定进制 OpenJudge NOI 2.1 1973:确定进制 注意:两OJ平台上题目条件不同,ybt中:2≤b≤402\le b \le402≤b≤40,OpenJudge中2≤b≤162\le b \le 162≤b≤16 【题目考点】 1. 数制 2. 函数 【解题思路】 数字范围1~1000000,两数相乘值超过int类型可以表示的范围,所以变量要设为long long 某个数字不可能是某些进制下的数字,比如数字

君义NOIP的博客 3750

信息学奥赛一本通 1082:求小数的某一位 | OpenJudge NOI 小学奥数 7830:求小数的某一位

【题目链接】 ybt 1082:求小数的某一位 OpenJudge NOI 小学奥数 7830:求小数的某一位 【题目考点】 1. 数制:求某小数位 设rrr为a/b的余数,q是整数商,那么根据 a÷b=q⋯⋯ra \div b = q \cdots\cdots ra÷b=q⋯⋯r 有ab=q+rb\frac{a}{b} = q + \frac{r}{b}ba​=q+br​ 其中q是结果的整数部分,rb\frac{r}{b}br​是结果的小数部分。 假设rb\frac{r}{b}br​值为0.d1d2d3d

君义NOIP的博客 5004
上一篇: openjudge数据结构练习集 约瑟夫问题
下一篇: openjudge数据结构练习集 反向输出整数序列
beforeevery
博客等级 码龄9年 9粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值