回 帖 发 新 帖 刷新版面

主题:任意大的十进制数转换为,十六进制

[em1]
谁会啊?这个好像不是很简单的!

回复列表 (共9个回复)

沙发

# include <stdio.h>
main ()
{ void turn(int n);
  int n;
  printf("Please enter a number:");
  scanf("%d",&n);
  turn(n);
}
void turn(int n)
{ int b,c;
 c=1;
 b=0;
while(n>0)
 { b+=(n%16)*10;
   n=n/16;
   c=c*10;
 }
 printf("%d\n",b);
}
用函数调用做 可以改变输入数的值
 根据n改变数据类型 因为数据类型决定了储存数据时内存分配的字节数目(即数值型数据的范围) 没有数据类型包括无限大的数

板凳

一楼是不是忘了考虑int类型的变量的取值范围,如果超出这个范围,我想这个应该运行不了。我是新手,提点小意见,见谅啊。

3 楼

我也考虑到啦 在程序代码后边已经说明啦 根据n的范围改变数据类型 也不太麻烦

4 楼

参考这个
http://dev.firnow.com/course/4_webprogram/asp.net/netjs/20100629/252288.html

并且应该注意到2进制到16进制的转换是从小数点开始,4位2进制对应1位16进制

5 楼

四楼的大哥 这个题是十进制转化为十六进制啊 虽然您的话也是对的

6 楼

[quote]四楼的大哥 这个题是十进制转化为十六进制啊 虽然您的话也是对的[/quote]
你在输出时把2进制4位1组不就得到16进制了吗?

关键是这个网址的这种方法才是符合你要求的一种方法,你也可以参考其思路写出自己的代码

难道你还想我给你写出完整的程序吗?

7 楼

方法有很多啊..建议楼主用栈的方法试试,虽然麻烦点,但是对理解程序提高算法设计能力很有好处!

8 楼


#include<stdio.h>

int main()
{
long int i;
char num[10];
scanf("%ld",&i);
sprintf(num,"%0lX",i);
printf("%s\n",num);

}

9 楼

#include <iostream>
using namespace std;

class stack
{
private:
    int n;
    char z;
public:
    stack *next;
    void set(int x)
    {
        n=x;
    }
    void get()
    {
        if(n<10)
            cout<<n;
        else
        {
            switch(n)
            {
            case 10:
                cout<<'A';
                break;
            case 11:
                cout<<'B';
                break;
            case 12:
                cout<<'C';
                break;
            case 13:
                cout<<'D';
                break;
            case 14:
                cout<<'E';
                break;
            case 15:
                cout<<'F';
                break;
            }
        }
    }
};

stack *p=NULL;

int main()
{
    unsigned long int m;
    cin>>m;
    while(m!=0)
    {
        int x=m%16;
        m/=16;
        stack *q=new stack;
        q->next=p;
        q->set(x);
        p=q;
    }
    while(p!=NULL)
    {
        p->get();
        p=p->next;
    }
    return 0;
}

我来回复

您尚未登录,请登录后再回复。点此登录或注册