用C语言编程,输入一个十进制正整数,输出其对应的十六进制整数。

2024-11-12 21:51:50
推荐回答(4个)
回答1:

#include

int main()

{

int a,*p;

p=&a;

scanf("%d",p);

printf("%x\n",*p);

return 0;

}

扩展资料:    

十进制数转换为二进制数时,由于整数和小数的转换方法不同,所以先将十进制数的整数部分和小数部分分别转换后,再加以合并。

十进制整数转换为二进制整数采用"除2取余,逆序排列"法。具体做法是:用2去除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为零时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。

回答2:

不用系统的函数,用栈实现

// test.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include
#include

struct stack
{
char* base;
char* top;
int length;
};

void InitStack(struct stack *p)
{
p->base=(char*)malloc(100);
p->top=p->base;
*(p->top)=0;
p->length=0;
}

bool push(struct stack *p,char a)
{
if(p->length >=100) return false;
*(p->top) = a;
p->top++;
*(p->top)=0;
p->length++;
return true;
}

bool pop(struct stack *p)
{
if(p->length <= 0) return false;
p->top--;
*(p->top)=0;
p->length--;
return true;
}

char Get_Top(struct stack *p)
{
if(p->length <= 0) return false;
return *(p->top-1);
}
int main(int argc, char* argv[])
{
struct stack MyStrack;
InitStack(&MyStrack);
int a;
printf("请输入一个整数:");
scanf("%d",&a);
while(a)
{
int tempint=a%16;
char temp = tempint>9 ? 'A'+tempint-10:'0'+tempint;
push(&MyStrack,temp);
a=a/16;
}

int len=MyStrack.length;
printf("转化为十六进制为:");
for(int i=0;i {
char temp=Get_Top(&MyStrack);
if(!temp) return 0;
pop(&MyStrack);
printf("%c",temp);
}
return 0;
}

回答3:

#include
#include
void main(){
int a;
char b[10];
scanf("%d",&a);
itoa(a,b,16);
printf("%s",b);
}

回答4:

运行结果
a=1000

a=3e8h
Press any key to continue

程序
//VC6.0
#include "stdio.h"

void main()
{
int a;

printf("a=");
scanf("%d",&a);
printf("\na=%xh\n",a);
}