unsigned long十进制转换为十六进制只用putchar输出

#include <stdio.h>
#include <stdlib.h>


void ten_to_sixteen(long s)
{
int i,j;
long a,m,p,c,b[10];


a=m=s;

for( j=1; ;j++ )
{
p=m/16;
m=p;
if( p==0 )
{
break;
}
}
for( i=0;i<j;i++ )
{
c=a%16;
b[i]=c;
a=a/16;
}


printf( "转换的十六进制数结果:" );
putchar('0');
putchar('x');
j--;
for(;j>=0;j--)
{
switch(b[j])
{
case 0:
putchar('0');
break;
case 1:
putchar('1');
break;
case 2:
putchar('2');
break;
case 3:
putchar('3');
break;
case 4:
putchar('4');
break;
case 5:
putchar('5');
break;
case 6:
putchar('6');
break;
case 7:
putchar('7');
break;
case 8:
putchar('8');
break;
case 9:
putchar('9');
break;
case 10:
putchar('A');
break;
case 11:
putchar('B');
break;
case 12:
putchar('C');
break;
case 13:
putchar('D');
break;
case 14:
putchar('E');
break;
case 15:
putchar('F');
break;
default:
break;
}

}
}


int main()
{
long num;
printf( "请输入要转换的十进制数:" );
scanf("%ld",&num);
ten_to_sixteen(num);
printf( "\n" );
return 0;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 以下是一个用C语言编写的将进制转换十六进制的栈实现代码。 ``` #include <stdio.h> #include <stdlib.h> #define STACK_SIZE 100 typedef struct { int top; int data[STACK_SIZE]; } Stack; void Stack_Init(Stack *s) { s->top = -1; } int Stack_IsEmpty(Stack *s) { return s->top == -1; } int Stack_IsFull(Stack *s) { return s->top == (STACK_SIZE - 1); } void Stack_Push(Stack *s, int value) { if (Stack_IsFull(s)) { printf("Stack is full\n"); return; } s->top++; s->data[s->top] = value; } int Stack_Pop(Stack *s) { if (Stack_IsEmpty(s)) { printf("Stack is empty\n"); return -1; } int value = s->data[s->top]; s->top--; return value; } int main() { int decimal, remainder; char hex[STACK_SIZE]; int i = 0; Stack s; Stack_Init(&s); printf("Enter decimal number: "); scanf("%d", &decimal); while (decimal > 0) { remainder = decimal % 16; Stack_Push(&s, remainder); decimal /= 16; } while (!Stack_IsEmpty(&s)) { remainder = Stack_Pop(&s); switch (remainder) { case 10: hex[i++] = 'A'; break; case 11: hex[i++] = 'B'; break; case 12: hex[i++] = 'C'; break; case 13: hex[i++] = 'D'; break; case 14: hex[i++] = 'E'; break; case 15: hex[i++] = 'F'; break; default: hex[i++] = remainder + '0'; break; } } printf("Hexadecimal: "); for (int j = i - 1; j >= 0; j--) { printf("%c", hex[j]); } printf("\n"); return 0; } ``` ### 回答2: 下面是使用C语言编写的进制转十六进制的栈代码: ```c #include <stdio.h> void DecimalToHex(int decimal) { int stack[100], i = 0; while (decimal != 0) { stack[i] = decimal % 16; decimal /= 16; i++; } printf("转换为十六进制:"); for (int j = i - 1; j >= 0; j--) { if (stack[j] < 10) { printf("%d", stack[j]); } else { char hexChar = 'A' + stack[j] - 10; printf("%c", hexChar); } } printf("\n"); } int main() { int decimal; printf("请输入一个进制数:"); scanf("%d", &decimal); DecimalToHex(decimal); return 0; } ``` 这段代码首先定义了一个栈数组`stack`,用于存储转换后的十六进制数字。然后通过除以16和取余操作,将进制数每一位的余数依次存入栈中,并将进制数除以16,直到进制数为0为止。然后按照逆序的方式从栈中弹出数字,并将其转换为对应的十六进制数进行打印。最后在`main`函数中,通过用户输入的进制数调用`DecimalToHex`函数进行转换和打印。 ### 回答3: 下面是用C语言编写的将进制数转换为十六进制数的代码: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_STACK_SIZE 100 // 假设栈的最大容量为100 // 定义栈结构 typedef struct { int top; unsigned int data[MAX_STACK_SIZE]; } Stack; // 初始化栈 void init(Stack* stack) { stack->top = -1; } // 判断栈是否为空 int isEmpty(Stack* stack) { return stack->top == -1; } // 入栈 void push(Stack* stack, unsigned int value) { if (stack->top == MAX_STACK_SIZE - 1) { printf("栈已满!\n"); return; } stack->data[++stack->top] = value; } // 出栈 unsigned int pop(Stack* stack) { if (isEmpty(stack)) { printf("栈是空的!\n"); return 0; } return stack->data[stack->top--]; } // 将进制数转换为十六进制数 void decimalToHexadecimal(int decimal) { if (decimal == 0) { printf("0\n"); return; } Stack stack; init(&stack); while (decimal != 0) { push(&stack, decimal % 16); decimal /= 16; } printf("转换为十六进制的结果:"); while (!isEmpty(&stack)) { unsigned int value = pop(&stack); if (value < 10) printf("%u", value); else printf("%c", value - 10 + 'A'); } printf("\n"); } int main() { int decimal; printf("请输入一个进制数:"); scanf("%d", &decimal); decimalToHexadecimal(decimal); return 0; } ``` 以上代码通过栈的先入后出的特性,将进制数转换为十六进制数的每一位依次存储到栈中,然后再依次弹出栈中的元素进行打印,即可得到转换结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值