c语言16进制转10进制软件,16进制转10进制(C语言)

满意答案

dcebd7a0de6265b6ccae5ead692f1eab.png

wang2222065

推荐于 2016.12.04

dcebd7a0de6265b6ccae5ead692f1eab.png

采纳率:54%    等级:13

已帮助:7914人

/*刚刚忘了小数点~~*/

#include

#include

#include

#define MAXSIZE 20 /*串最大长度*/

#define RADIX 16 /*基数*/

int main()

{

char source[MAXSIZE];

float result[MAXSIZE/2] = {0}; /*数组长度不会超过串长度的一半*/

int sign = 1; /*正负号*/

int precision = -1; /*小数位数*/

int i,j;

gets(source);

printf("%s\n",source);

for(i=0, j=0;i<=strlen(source); i++)

{

switch(source[i]) /*可以使用if语句替换但这样效率更高*/

{

case '.':

precision = 0;

break;

case '0':

case '1':

case '2':

case '3':

case '4':

case '5':

case '6':

case '7':

case '8':

case '9': /*计算结果*/

if(precision != -1)

precision++;

result[j] = result[j] * RADIX +(source[i]-'0');

break;

case 'A': /*如果愿意可以加上小写字母的判断*/

case 'B':

case 'C':

case 'D':

case 'E':

case 'F': /*计算结果*/

if(precision != -1)

precision++;

result[j] = result[j] * RADIX +(source[i]-'A'+10);

break;

default: /*结果有两种情况零的情况需要额外判断*/

if(precision != -1)

result[j] /= pow(float(RADIX),precision);

if(((fabs(result[j]) <= 0.000001)&&(source[i-1] == '0'))||(fabs(result[j]) > 0.000001))

{

result[j] *= sign;

printf("%f\n",result[j]);

j++;

}

precision = -1;

if(source[i] == '-')

sign=-1;

else

sign=1;

break;

}

}

getchar();

return 0;

}

05分享举报

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值