标题:【求助】输入一个数,求二进制,八进制,十六进制转换。如何倒序输出啊,谢 ...
只看楼主
zzh2015
Rank: 1
来 自:江苏扬州
等 级:新手上路
帖 子:32
专家分:0
注 册:2015-4-7
结帖率:90.91%
已结贴  问题点数:10 回复次数:4 
【求助】输入一个数,求二进制,八进制,十六进制转换。如何倒序输出啊,谢谢拉!!
#include<stdio.h>
void trans(int n,int base)
{
    if(n>0)
    {
        if(n%base>=10)
        {
            switch(n%base)
            {
            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;
            }
        }
        else printf("%d",n%base);
    }
}
int main(void)
{
    int n,base;
    char b;
    printf("Please input a decimal number whatever you want:");
    scanf("%d",&n);
    printf("Please input the base which you want to make into:");
    scanf("%d",&base);
   \*这里少一句*\
   
    printf("\n");
}
搜索更多相关主题的帖子: 十六进制 include 二进制 八进制 如何 
2015-04-10 12:32
code力力
Rank: 5Rank: 5
来 自:宜昌
等 级:职业侠客
威 望:2
帖 子:215
专家分:338
注 册:2015-1-12
得分:4 
程序代码:
# include <stdio.h>

void test1(int n); //2进制转换 
void test2(int n); //8进制转换 
void test3(int n);//16进制转换 
int main (void)
{
    
    test3(154);
    
    
    return 0;
}


void test1(int n) //2进制转换 
{
    
    
    if(n/2)
     test1(n/2);
    printf("%d",n%2);
    
    
}

void test2(int n) //8进制转换 
{
    
    
    if(n/8)
     test2(n/8);
    printf("%d",n%8);
    
    
}

void test3(int n)//16进制转换
{
    if(n/16)
     test3(n/16);
    
    if(n%16>9)
     {
         char ch='A'*(n%16==10)+('A'+1)*(n%16==11)+('A'+2)*(n%16==12)+('A'+3)*(n%16==13)+('A'+4)*(n%16==14)+('A'+5)*(n%16==15);
         
         printf("%c",ch);
         
     }
     else
         printf("%d",n%16);
    
                                     
    
} 

你醒了?快起来敲代码!!
2015-04-10 13:14
code力力
Rank: 5Rank: 5
来 自:宜昌
等 级:职业侠客
威 望:2
帖 子:215
专家分:338
注 册:2015-1-12
得分:0 
进制转换用可以借用递归的特性:先入者后出

不过数字大了,效率就不高了。

你醒了?快起来敲代码!!
2015-04-10 13:18
AleTiff
Rank: 3Rank: 3
等 级:论坛游侠
威 望:4
帖 子:64
专家分:157
注 册:2015-3-30
得分:4 
#include "string.h"    // _strdup() 函数支持

const int base_HEX = 0x10;
const int base_OCT = 0x08;
const int base_BIN = 0x02;
const char* base_Number = "0123456789ABCDEF";

// param decin: 输入的十进制整数 = 0..4294967295
// param base:  需要转换的进制常量 = base_XXX
// return char*:返回反转的相应进制字符串
// note: 函数返回使用了 _strdup(), 该函数内部会自动生成一个内存块
//       调用函数负责调用 free() 清除这个自动生成的内存块, 例如:
//
//       char* hexStr = dec2base_rever(12345, base_HEX);
//       printf("0x%s", hexStr);
//       free(hexStr);

char* dec2base_rever(int decin, int base)
{
    int idx = 0;
    int tmp = decin;
    char Value[33] = {0};   

    if( tmp > base ){
        int test = tmp / base;
        while( test > 0 ){
            tmp = tmp % base;
            Value[idx] = base_Number[tmp];
            idx++;
            tmp = test;
            test = tmp / base;
        }
    }
   
    Value[idx] = base_Number[tmp];
    return _strdup(Value);
}
2015-04-10 14:23
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
得分:4 
搜一下吧,之前有一个通用函数解决的。这些都是基本功。

能编个毛线衣吗?
2015-04-10 14:27



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-443810-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.222301 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved