如题所述
æè·¯ï¼åè¿å¶æ´æ°è½¬æ¢ä¸ºåå
è¿å¶æ´æ°éç¨"é¤16åä½ï¼éåºæå"æ³ã
å
·ä½åæ³æ¯ï¼ç¨16æ´é¤åè¿å¶æ´æ°ï¼å¯ä»¥å¾å°ä¸ä¸ªååä½æ°ï¼åç¨16å»é¤åï¼åä¼å¾å°ä¸ä¸ªååä½æ°ï¼å¦æ¤è¿è¡ï¼ç´å°å为0æ¶ä¸ºæ¢ï¼ç¶åæå
å¾å°çä½æ°ä½ä¸ºåå
è¿å¶æ°çä½ä½ææä½ï¼åå¾å°çä½æ°ä½ä¸ºåå
è¿å¶æ°çé«ä½ææä½ï¼ä¾æ¬¡æåèµ·æ¥ã
åè代ç ï¼
#include "stdio.h"int main()
{
int num,a[100],i=0,m=0;
char hex[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
scanf("%d",&num);
while(num>0)
{
a[i++]=num%16;
num=num/16;
}
printf("转å为åå è¿å¶çæ°ä¸ºï¼");
for(i=i-1;i>=0;i--)//ååºè¾åº
{
m=a[i];
printf("%c",hex[m]);
}
printf("\n");
}
/*
è¿è¡ç»æï¼
17
转å为åå è¿å¶çæ°ä¸ºï¼11
*/
温馨提示:答案为网友推荐,仅供参考
第1个回答 2008-11-17
调用系统函数strtol。我觉得你这个问题:把十进制整数n转换成十六进制怎么编程 本身就有问题,十进制整数n转换成十六进制只是显示方式不一样而已,在计算机内部其实都是按二进制存储的。比如int i; i=96和i=0x60你按%d打印出来的是一样的。
第2个回答 推荐于2017-09-23
#include <malloc.h>
#include <iostream>
#include<string>
#include<cctype>
#define STACKSIZE 50
#define STACKINCREMENT 20
#define OVERFLOW -1
#define OK 1
#define ERROR -1
using namespace std;
typedef struct
{
int *base;
int *top;
int stacksize;
}Stack;
int InitStack(Stack &s) //创建一个空栈
{
s.base=(int*)malloc(STACKSIZE*sizeof(int));
if(!s.base)
return (OVERFLOW);
s.top=s.base;
s.stacksize=STACKSIZE;
return (OK);
}
int Push(Stack &s,int e) //入栈
{
if((s.top-s.base)>=s.stacksize)
{
s.base=(int*)realloc(s.base,(STACKSIZE+STACKINCREMENT)*sizeof(int));
if(!s.base)
return(OVERFLOW);
s.top=s.base+s.stacksize;
s.stacksize+=STACKINCREMENT;
}
*s.top++=e;
return (OK);
}
int Empty(Stack s) //判断栈是否为空
{
if(s.base==s.top)
return(1);
else
return(0);
}
int * Pop(Stack &s,int *e)
{
if(Empty(s))
return (NULL);
e=--s.top;
return e;
}
void main()
{
int i,*e;
e=new int ;
int *getResult;
getResult=new int ;
char ch;
do{
cout<<"请输入一个正整数: "<<endl;
cin>>i;
Stack s;
InitStack(s);
while(i)
{
Push(s,i%16);
i=i/16;
}
cout<<"转为的16进制数为: "<<endl;
while(!Empty(s))
{
e=Pop(s,getResult);
if(e!=NULL)
cout<<*e;
}
cout<<endl;
cout<<"您想继续求解十六进制吗?请输入您的选择(y/n)"<<endl;
cin>>ch;
if(isupper(ch)==1)
ch=tolower(ch);
}while(ch!='n');
}本回答被提问者和网友采纳
#include <iostream>
#include<string>
#include<cctype>
#define STACKSIZE 50
#define STACKINCREMENT 20
#define OVERFLOW -1
#define OK 1
#define ERROR -1
using namespace std;
typedef struct
{
int *base;
int *top;
int stacksize;
}Stack;
int InitStack(Stack &s) //创建一个空栈
{
s.base=(int*)malloc(STACKSIZE*sizeof(int));
if(!s.base)
return (OVERFLOW);
s.top=s.base;
s.stacksize=STACKSIZE;
return (OK);
}
int Push(Stack &s,int e) //入栈
{
if((s.top-s.base)>=s.stacksize)
{
s.base=(int*)realloc(s.base,(STACKSIZE+STACKINCREMENT)*sizeof(int));
if(!s.base)
return(OVERFLOW);
s.top=s.base+s.stacksize;
s.stacksize+=STACKINCREMENT;
}
*s.top++=e;
return (OK);
}
int Empty(Stack s) //判断栈是否为空
{
if(s.base==s.top)
return(1);
else
return(0);
}
int * Pop(Stack &s,int *e)
{
if(Empty(s))
return (NULL);
e=--s.top;
return e;
}
void main()
{
int i,*e;
e=new int ;
int *getResult;
getResult=new int ;
char ch;
do{
cout<<"请输入一个正整数: "<<endl;
cin>>i;
Stack s;
InitStack(s);
while(i)
{
Push(s,i%16);
i=i/16;
}
cout<<"转为的16进制数为: "<<endl;
while(!Empty(s))
{
e=Pop(s,getResult);
if(e!=NULL)
cout<<*e;
}
cout<<endl;
cout<<"您想继续求解十六进制吗?请输入您的选择(y/n)"<<endl;
cin>>ch;
if(isupper(ch)==1)
ch=tolower(ch);
}while(ch!='n');
}本回答被提问者和网友采纳
第3个回答 2008-11-17
简单方法之一:
#include <iostream>
#include <stdio.h>
using namespace std;
int main(void)
{
int num;
char buf[100];
cin>>num;
itoa(num,buf,16);
cout<<buf<<"\n";
return 0;
}
#include <iostream>
#include <stdio.h>
using namespace std;
int main(void)
{
int num;
char buf[100];
cin>>num;
itoa(num,buf,16);
cout<<buf<<"\n";
return 0;
}
参考资料:还有其他方法可以参考
第4个回答 2008-11-17
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
printf("%x\n",n);
return 0;
}
int main()
{
int n;
scanf("%d",&n);
printf("%x\n",n);
return 0;
}