| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2526 人关注过本帖
标题:新手求解,2,8,16进制转换10进制
只看楼主 加入收藏
瓦尼
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2012-3-7
结帖率:75%
收藏
已结贴  问题点数:20 回复次数:6 
新手求解,2,8,16进制转换10进制
从键盘上任意输入一个2、8或16进制数(若输入的相应进制数有误,需重新输入),将其转换成十进制数输出
搜索更多相关主题的帖子: 十进制 
2012-04-15 17:25
xieshenghui
Rank: 2
等 级:论坛游民
帖 子:44
专家分:15
注 册:2011-12-24
收藏
得分:3 
。。。。。。。。。
2012-04-15 18:39
C_戴忠意
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:575
专家分:1349
注 册:2011-10-21
收藏
得分:3 
进制转换问题

请问楼主怎么把十进制转换为二进制?

编程之路定要走完……
2012-04-15 18:41
a935245228
Rank: 2
来 自:湖北武汉
等 级:论坛游民
帖 子:45
专家分:56
注 册:2012-3-12
收藏
得分:3 
将任一整数转换为二进制形式

 *问题分析与算法设计
 将十进制整数转换为二进制的方法很多,这里介绍的实现方法利用了C语言能够对位进行操作的特点。对

 于C语言来说,一个整数在计算机内就是以二进制的形式存储的,所以没有必要再将一个整数经过一系列

 的运算转换为二进制形式,只要将整数在内存中的二进制表示输出即可。
 *程序说明与注释
 #include<stdio.h>
 void printb(int,int);
 int main()
 {
 int x;printf("Input number:");
 scanf("%d",&x);
 printf("number of decimal form:%d\n",x);
 printf(" it's binary form:");
 printb(x,sizeof(int)*8); /*x:整数 sizeof(int):int型在内存中所占的字节数
 sizeof(int)*8:int型对应的位数*/
 putchar('\n');
 }

 void printb(int x,int n)
 {
 if(n>0)
 {
 putchar('0'+((unsigned)(x&(1<<(n-1)))>>(n-1))); /*输出第n位*/
 printb(x,n-1); /*归调用,输出x的后n-1位*/
 }
 }

 *运行结果
 输入:8
 输出:
 number of decimal form:8
 it's bunary form:0000000000001000
 输入:-8
 输出:number of decimal form:-8
 it's binary form:1111111111111000
 输入:32767
 输出:number of decimal form:32767
 it's binary form:0111111111111111
 输入:-32768
 输出:number of decimal form:-32768
 it's binary form:1000000000000000
 输入:128
 输出:number of decimal form:128
 it's binary form:0000000010000000
2012-04-15 20:30
阴阳
Rank: 4
等 级:业余侠客
帖 子:102
专家分:297
注 册:2012-4-7
收藏
得分:3 
程序代码:
我有一个10进制转换成2,8,16进制的
#include "stdio.h"
void any1(int x);
void any2(int x);
void any3(int x);
char change(int x);
void main()
{
    long integer = 0;
    int n;
    int c;
  
    while(9)
   {
       printf("请输入需要转换为的进制数和需要转换的十进制整数:");
    scanf("%d %d",&n,&integer);
    if(n == 2)
    {
       printf("转换成%d进制为:",n);
       any1(integer);
    }else if(n == 8)
    {
       printf("转换成%d进制为:",n);
       any2(integer);
    }else
    {
       printf("转换成%d进制为:",n);
       any3(integer);
    }
    printf("\n");
  
    printf("是否继续?(Y/N):");
    scanf(" %c",&c);
    if((c == 'n')||(c == 'N'))
    break;
    }
}
void any1(int x)
{
    if(x / 2 > 0)
       {
           any1(x / 2);
           printf("%d",x % 2);
       }
     else
     printf("%d",x);
}
void any2(int x)
{
    if(x / 8 > 0)
       {
           any2(x / 8);
           printf("%d",x % 8);
       }
     else
     printf("%d",x);
}
void any3(int x)
{
    if(x / 16 > 0)
       {
           any3(x / 16);
           if((x % 16) > 9)
           printf("%c",change(x % 16));
           else
           printf("%d",x % 16);
       }
     else
     {
         if(x > 9)
          printf("%c",change(x));
         else
        printf("%d",x);
     }
}
char change(int x)
{
    switch(x)
    {
        case 10: return 'A';
        case 11: return 'B';
        case 12: return 'C';
        case 13: return 'D';
        case 14: return 'E';
        case 15: return 'F';
        default : return 'N';
    }
}

看着用吧!

一阴一阳之谓道!
2012-04-15 21:22
点灯
Rank: 1
等 级:新手上路
帖 子:1
专家分:3
注 册:2012-3-31
收藏
得分:3 
,好
2012-04-15 21:58
love24114
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:223
专家分:399
注 册:2011-7-11
收藏
得分:3 
无需太复杂的算法
八进制
scanf("%o",&n);// %x 16进制 ,
printf("%d",n);

如果想自己实现的话,一个栈和模算法就行了
2012-04-15 22:16
快速回复:新手求解,2,8,16进制转换10进制
数据加载中...
 
   



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

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