用c语言编一个函数,将一个十进制整数转换成十六进制整数。
时间: 2024-02-26 20:56:36 浏览: 30
好的,以下是一个将十进制整数转换成十六进制整数的C语言函数:
```c
void decimal_to_hexadecimal(int decimal)
{
int remainder, quotient;
int i = 1, j, temp;
char hexadecimal[100];
quotient = decimal;
while (quotient != 0)
{
temp = quotient % 16;
if (temp < 10)
{
temp = temp + 48;
}
else
{
temp = temp + 55;
}
hexadecimal[i++] = temp;
quotient = quotient / 16;
}
printf("Equivalent hexadecimal value of %d is: \n", decimal);
for (j = i - 1; j > 0; j--)
{
printf("%c", hexadecimal[j]);
}
printf("\n");
}
```
你可以在程序中调用这个函数,并将需要转换的十进制整数作为参数传递给它。
相关问题
C语言写一个函数将十六进制转换为十进制
以下是C语言实现将十六进制转换为十进制的函数:
```c
#include <stdio.h>
#include <string.h>
#include <math.h>
int hex_to_decimal(char hex[]) {
int decimal = 0;
int len = strlen(hex);
for (int i = 0; i < len; i++) {
int digit = 0;
if (hex[i] >= '0' && hex[i] <= '9') {
digit = hex[i] - '0';
} else if (hex[i] >= 'a' && hex[i] <= 'f') {
digit = hex[i] - 'a' + 10;
} else if (hex[i] >= 'A' && hex[i] <= 'F') {
digit = hex[i] - 'A' + 10;
} else {
printf("Invalid hexadecimal string.\n");
return 0;
}
decimal += digit * pow(16, len - i - 1);
}
return decimal;
}
int main() {
char hex[] = "1A4F";
int decimal = hex_to_decimal(hex);
printf("Hexadecimal %s in decimal is %d.\n", hex, decimal);
return 0;
}
```
在本示例中,我们定义了一个名为 `hex_to_decimal` 的函数,它接收一个十六进制字符串 `hex` 作为参数,并返回一个十进制整数。在函数内部,我们首先计算出十六进制字符串的长度 `len`,然后遍历字符串中的每个字符,并将其转换为十进制数。我们使用 `if-else` 语句来判断当前字符是数字还是字母,并计算出对应的十进制值。最后,我们使用 `pow` 函数计算出当前字符所表示的十进制值,并将其加到 `decimal` 变量中。遍历完字符串后,我们返回 `decimal` 变量的值。
在主函数中,我们定义了一个十六进制字符串 `hex`,并调用 `hex_to_decimal` 函数将其转换为十进制数。最后,我们输出转换后的结果。
c语言写出用顺序栈将一个非负十进制整数转换成八进制数。
可以的,以下是C语言代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
#define STACK_SIZE 20 // 定义栈的大小
typedef struct Stack_struct {
int top;
int data[STACK_SIZE];
} Stack;
void init_stack(Stack* s) // 初始化函数
{
s->top = -1;
}
void push(Stack* s, int elem) // 入栈函数
{
if (s->top == STACK_SIZE - 1) {
printf("栈已满,无法再入栈!\n");
} else {
s->data[++s->top] = elem;
}
}
int pop(Stack* s) // 出栈函数
{
if (s->top == -1) {
printf("栈已空,无法再出栈!\n");
return -1;
} else {
return s->data[s->top--];
}
}
int octal_conversion(int dec_num) // 十进制转八进制函数
{
int octal_num = 0;
Stack s;
init_stack(&s);
while (dec_num != 0) { // 入栈十进制数
push(&s, dec_num % 8);
dec_num /= 8;
}
while (s.top != -1) { // 出栈八进制数
octal_num = octal_num * 10 + pop(&s);
}
return octal_num;
}
int main()
{
int dec_num, octal_num;
printf("请输入一个非负十进制整数:");
scanf("%d", &dec_num);
octal_num = octal_conversion(dec_num);
printf("转换后的八进制数为:%d\n", octal_num);
return 0;
}
```