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

别再只看读写速度了!聊聊手机闪存eMMC、UFS3.1和SSD背后的功耗与体积玄学

本文深入探讨手机闪存技术eMMC、UFS3.1和SSD在功耗与体积设计上的关键差异。通过对比接口技术、封装工艺和温度管理,揭示移动存储如何在有限空间内平衡性能与能效,为消费者提供选购参考。重点关注UFS3.1的差分信号设计和全双工架构带来的显著优势。

weixin_27061475的博客 447

从Wi-Fi到蓝牙:手把手教你用Cadence Virtuoso搭建一个2.4GHz锁相环频率综合器(含PFD/CP/VCO模块设计)

本文详细介绍了如何在Cadence Virtuoso中设计一个2.4GHz锁相环频率综合器(PLL),涵盖从系统架构到模块级设计的全流程。重点解析了PFD、CP和VCO等核心模块的设计技巧与仿真验证方法,帮助模拟集成电路设计师掌握高频PLL的实现要点,满足Wi-Fi和蓝牙等无线通信标准的要求。

weixin_30315723的博客 418

数据结构--数制的转换

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

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

完美解决LBP2900打印机安装驱动提示无法识别USB及连接错误等问题(附Win11全新安装支持及卸载方案)

LBP2900打印机虽然经典老旧,但在Win11上依然可以完美使用!许多网上教程都无视安装失败后的问题,在此分享一种全新、100%有效的方法来解决驱动连接错误和无法识别USB设备的问题。无论是新安装还是卸载重装,这个方法都适用。本文整合了通用驱动包,支持Win2000到Win11系统,操作简单,轻松摆脱安装困扰,享受无忧打印体验!

心开始の未来~的博客 2万+

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

1. Klipper从安装到运行

本文记录Klipper固件从安装,配置到运行的详细过程

weixin_42098934的博客 1万+

手把手教你学Simulink--基于Simulink的开关磁阻电机电流斩波控制仿真建模

特点:定子和转子均由普通硅钢片叠压而成,没有永磁体或绕组在转子上。工作原理:利用转子旋转时不同位置的磁阻变化产生转矩。控制挑战:由于SRM的高度非线性和磁饱和效应,需要复杂的控制算法来优化性能。利用Simscape Electrical中的模块构建SRM的物理模型,配置参数如电阻、电感等。matlab深色版本% 添加SRM电机模块根据实际需求调整电机参数。通过上述步骤,我们简要介绍了如何基于Simulink进行开关磁阻电机的电流斩波控制仿真建模。

MHD0815的博客 306

Openjudge 1.13.1 数制转换

Openjudge 1.13.1 数制转换

m0_57099194的博客 306

comsol如何实现五厚度的单元模拟?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 470

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

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

weixin_30411819的博客 346

【用unity实现100个游戏之18】从零开始制作一个类CSGO/CS2、CF第一人称FPS射击游戏——基础篇1(附项目源码)

生存和射击游戏一直是我的最爱,说起3D最普遍的应该就是射击系统了,你可以在任何情况下加入射击功能,所以我写下了这篇FPS开发记录。希望对你有帮助。在这个项目中,你将学习如何设计和实现射击系统、武器系统、玩家控制、场景设计等方面的内容。通过这个项目,你将深入了解游戏开发中的许多核心概念和技术,并且在实践中不断提升自己。本项目将带你从零开始逐步实现一个完整的第一人称射击游戏,并且会逐步引入一些高级功能,如特效、声音等。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 5499

【Unity 反向运动学插件】Final IK 一套完整的IK解决方案

Final IK是Unity中一套完整的反向运动学解决方案,提供多种IK算法(CCD、FABRIK等)和功能模块,包括全身IK、VR驱动、武器瞄准、视线跟随等。其核心是通过数学方法计算关节旋转,使末端骨骼精确到达目标位置。系统支持多约束求解、旋转限制、动画烘焙及交互系统,采用模块化设计,兼顾性能与扩展性,适用于动作游戏、VR等需要高质量角色控制的场景,是Unity生态中最成熟的IK工具链之一。

2403_88403568的博客 1004

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

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

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

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

openjudge 1.13.1 数制转换

进制转化

weixin_60869516的博客 504

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

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、付费专栏及课程。

余额充值