用c语言编写一个10进制转为16进制的简单程序,包括小数部分
时间: 2023-05-24 20:06:41 浏览: 105
10进制转16进制的程序.
/* 十进制转十六进制程序 */
#include<stdio.h>
int main()
{
double num; //定义十进制数
int i; //循环计数器
char hex[20]; //存储十六进制数
int integer; //整数部分
double decimal; //小数部分
//输入十进制数
printf("请输入一个十进制数:");
scanf("%lf", &num);
//将整数部分转为十六进制
integer = (int)num;
i = 0;
while(integer != 0)
{
int tmp = integer % 16;
char ch;
if(tmp >= 10)
ch = tmp - 10 + 'A';
else
ch = tmp + '0';
hex[i++] = ch;
integer /= 16;
}
hex[i] = '\0'; //字符串以'\0'结束
strrev(hex); //反转字符串
//将小数部分转为十六进制
decimal = num - (int)num;
if(decimal != 0) //存在小数部分才进行操作
{
i = 0;
hex[strlen(hex)] = '.'; //在整数部分后添加小数点
while(decimal != 0 && i < 6) //保留小数点后6位
{
decimal *= 16;
int tmp = (int)decimal;
char ch;
if(tmp >= 10)
ch = tmp - 10 + 'A';
else
ch = tmp + '0';
hex[strlen(hex)] = ch;
decimal -= tmp;
i++;
}
hex[strlen(hex)] = '\0'; //字符串以'\0'结束
}
//输出结果
printf("十六进制数为:%s\n", hex);
return 0;
}
阅读全文