首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

贴,这个程序该如何写比较好啊用C语言

2012-07-28 
求助贴,这个程序该怎么写比较好啊,用C语言。写一函数,输入一个十六进制数,输出相应的十进制数。[解决办法]C/

求助贴,这个程序该怎么写比较好啊,用C语言。
写一函数,输入一个十六进制数,输出相应的十进制数。

[解决办法]

C/C++ code
long fun (char *str){    int tmp = 0;    long sum = 0;    for (int i = 0; s[i] != '\0' ; i++)    {        if (s[i] < '9')            tmp = s[i] - '0';        else            tmp = s[i] - 'a' + 10;        sum = sum * 16 + tmp;    }    return sum;}
[解决办法]
接收到的数字,从低位到高位按照转换法则,转换....
如:
接收:2AF5
转换: 10997 = 5 * 16^0 + F (15)* 16^1 + A (10)* 16^2 + 2 * 16^3

先倒序,或者从尾部到头部开始 5 * 16^0 , F * 16 ^ 1 = 15 * 16^1
...............第n位,九尾,m * 16 ^( n - 1)
[解决办法]
#include <math.h>
#include <string.h>

long stot(char *p)
{
int len = strlen(p);
double n = 0;
while(*p != '\0')++p;
--p;
for (int i=0; i<len ; i++)
{
if (*p >= 'a' && *p <= 'z') 
{
n += (*p - ‘a' + 10) * pow(16.0 , i);
}
else if (*p >= 'A' && *p <= 'Z') 
{
n += (*p - 'A' + 10) * pow(16.0 , i);
}
else
{
n += (*p - '0') * pow(16.0 , i);
}
--p;
}
return (long)n;
}
[解决办法]
C/C++ code
#include <math.h>#include <string.h>long stot(char *p){    int len = strlen(p);    double n = 0;    while(*p != '\0')++p;    --p;    for (int i=0; i<len ; i++)    {            if (*p >= 'a' && *p <= 'z')         {            n += (*p - 87) * pow(16.0 , i);        }        else if (*p >= 'A' && *p <= 'Z')         {            n += (*p - 55) * pow(16.0 , i);        }        else        {            n += (*p - '0') * pow(16.0 , i);        }            --p;    }    return (long)n;} 

热点排行