编写一个函数,将一个十进制转换为十六进制,在主函数实现输入和输出
问题描述:
编写一个函数,将一个十进制转换为十六进制,在主函数实现输入和输出
答
int a;
scanf_s("%d", &a);
printf("0x%x", a);
答
#include <stdio.h>
#include <string.h>
static void reverse(char *str, int len);
void convert(char *str, int n, int base);
int main(void)
{
int n;
char str[64];
scanf("%d", &n);
//16
convert(str, n, 16);
reverse(str, strlen(str));
puts(str);
//8
convert(str, n, 8);
reverse(str, strlen(str));
puts(str);
//2
convert(str, n, 2);
reverse(str, strlen(str));
puts(str);
return 0;
}
void convert(char *str, int n, int base)
{
int i = 0, remain;
if (base <= 0)
return;
while (n) {
remain = n % base;
if (remain >= 10)
str[i] = remain - 10 + 'A';
else
str[i] = remain + '0';
n /= base;
i++;
}
str[i] = 0;
}
static void reverse(char *str, int len)
{
int i, tmp;
for (i = 0; i < len/2; i++) {
tmp = str[i];
str[i] = str[len - i - 1];
str[len-i-1] = tmp;
}
}
供参考~
建议多测测,找找问题~