递归进制转换_strrev

#define _CRT_SECURE_NO_WARNINGS

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

void to2str(int num,int i,char *str2)
{
    if (num == 0)
    {
        return;
    }
    else
    {
        to2str(num / 2,i+1,str2);
        str2[i] = (num % 2) + ‘0‘;
    }
}

void to8str(int num,int i,char *str8)
{
    if (num == 0)
    {
        return;
    }
    else
    {
        to8str(num / 8, i+1, str8);
        str8[i] = (num % 8) + ‘0‘;
    }
}

void to16str(int num,int i,char *str16)
{
    if (num == 0)
    {
        return;
    }
    else
    {
        to16str(num / 16,i+1,str16);

        if (num % 16 < 10)
        {
            str16[i] = (num % 16) + ‘0‘;
        }
        else
        {
            str16[i] = (num % 16) - 10 + ‘A‘;
        }
    }
}

void main()
{
    char str2[32] = { 0 };
    char str8[32] = { 0 };
    char str16[32] = { 0 };

    int num = 0;
    scanf("%d", &num);

    to2str(num, 0,str2);
    _strrev(str2);

    to8str(num, 0, str8);
    _strrev(str8);

    to16str(num, 0, str16);
    _strrev(str16);

    printf("\n%s", str2);
    printf("\n%s", str8);
    printf("\n%s", str16);
    system("pause");
}
时间: 2024-10-25 06:32:07

递归进制转换_strrev的相关文章

递归进制转换

算法问题总是很复杂,我每次都觉得会了,每次一到稍微涉及一点儿算法的地方都要想好久. 以下 10进制转换成2进制: #include <iostream> void tenToB(int a); void packageForT2B(int a); int main() { packageForT2B(13); packageForT2B(6); return 0; } void packageForT2B(int a){ printf("输入的十进制数字是%d,它的二进制形式是:\n

用递归求解进制转换

递归算法虽然容易理解,但我们可能时常忘记使用它.我就只记得算法课上老师讲过的场景:斐波那契数列,汉诺塔这两个例子.偶尔看到b站上一个C语言视频里面用递归求解进制转换的例子,突然之间恍然大悟,想着记录下来. 下面是一个求解二进制的程序代码 #include<iostream> using namespace std; void convert(int n) { if ((n / 2) != 0) { convert(n / 2); cout << n % 2; } else cout

进制转换函数

一般常用到的进制转换大概就是二进制与十进制,十进制与十六进制,二进制与十六进制之间的转换,好像<stdlib.h>里的itoa函数可以做一些进制转换,不过我还是想自己造造轮子.二进制或十六进制转到十进制很简单,比如我们要将二进制数1011转为十进制表示,你会发现,1011=101*2+1 而101=10*2+1,10=1*2+0,1=0*2+1,也就是说1011可以由((((0*2+1)*2+0)*2)+1)+1来表示,由于计算机在算这一串表达式时基于的是十进制,所以结果就自然而然地转为了十进

任意进制转换算法

任意进制转换算法 N年没有写博客,发个进制转换的玩下,支持负数:功能属于简化版的 Convert.ToInt32 ,特点是: 1.任意位,如:0,1(二进制),0...7(八进制),0...9,A...F(16进制),0...N(N进制),或者是:[email protected]#$%^&*(8进制,字符符号),也可以是中文. 2.8 byte 最大长度. 3.C#源码. 最近写markdown格式习惯啦,cnblogs啥时候全改掉算了,别用这个htmleditor算了. 先说明下进制转换的基

03 php 数据类型:整数,进制转换,浮点,字符,布尔,数组,空类型,类型转换,算术运算,比较运算

03 数据类型:整数,进制转换,浮点,字符,布尔,数组,空类型,类型转换, 算术运算,比较运算,逻辑运算,短路现象, 三目运算符,字符型运算: 数据类型 整体划分 标量类型: int, float, string, bool 复合类型: array,     object 特殊类型: null,     resouce 整数类型int, integer 3种整数表示法 十进制写法:123: $n1 = 123; 八进制写法: 0123 $n2 = 0123; 十六进制写法: 0x123 $n3

计算机进制转换

一.计算机只认识0和1,二进制. 二.2进制转换成 8进制 和 16进制,如下图: 二进制 > 八进制 :  研究上图发现,3位最高二进制可以用来表示一位八进制.所以,将二进制分解每3位,不够前面补0,然后每3位转换为10进制,顺序排列即可. 二进制 > 十六进制  :4位最高二进制可以用来表示一位十六进制.所以,将二进制分解每4位,不够前面补0,然后每4位转换为10进制,超过9用字母表示即可.顺序排列即可. 如下: 二进制 > 十进制:   11001001 = 2^7+2^6+2^3

原理之一,进制转换

原理之一,进制转换 日常生活中采用个数字都是十进制,而计算机采用的是运算更简单.易实现且可靠,为逻辑设计提供了有力途经的二进制,除此之外还有八进制和十六进制作为二进制的缩写. 进制:逢N进一,N是每种进位计数制表示一位数所需要的符号数目为基数. 二进制:逢二进一,借一当二,包含的数字(0.1) 八进制:逢八进一,借八当一,包含(0.1.2.3.4.5.6.7) 十六进制:逢十六当一,以一当十六,包含(0.1.2.3.4.5.6.7.8.9.10(A).11(B).12(C).13(D).14(E

NOIP2000 进制转换

题一   进制转换              (18分)  问题描述      我们可以用这样的方式来表示一个十进制数: 将每个阿拉伯数字乘以一个以该数字所处位置的(值减1)为指数,以10为底数的幂之和的形式.例如:123可表示为 1*102+2*101+3*100这样的形式. 与之相似的,对二进制数来说,也可表示成每个二进制数码乘以一个以该数字所处位置的(值-1)为指数,以2为底数的幂之和的形式.一般说来,任何一个正整数R或一个负整数-R都可以被选来作为一个数制系统的基数.如果是以R或-R为基

进制进制进制~转换

从刚学计算机器就对进制转换有着莫名的反感,2进制 8进制 10进制 16进制各种转换. 下面就说下逻辑地址转换成物理地址的求法吧 首先,用户输入一个16进制的数字cin>>hex>>logic_add;   hex的意思是告诉计算机输入的数是以16进制方式输入的 这个时候你要是输出cout<<logic_add;  你会发现输出的是把这个16进制的数转换为10进制以后输出的结果 cout<<hext<<logic_add;这样输出的才是16进制.