这是我编的,题目是“编写一函数,参数是一个十六进制数字符串返回结果是相应的十进制数。”可以运行,只是运算有错。如输入a05,算出的就不是2565.求C语言大神帮我看看哪里错了。
#include<stdio.h>
#include<math.h>
#include<string.h>
#define N 10
int function(char a[])
{
int i,c,sum=0;
c=strlen(a);
for(i=0;i<c;i++)
{
if('A'<=a[i]&&a[i]<='E')
a[i]=a[i]-55;
else if('a'<=a[i]&&a[i]<='e')
a[i]=a[i]-87;
else if(1<=a[i]&&a[i]<=9)
a[i]=a[i];
}
for(i=0;i<c;i++)
sum=sum+a[i]*pow(16,c-1-i);
return sum;
}
main()
{
char a[N];
printf("Please input a string:\n");
gets(a);
printf("%d\n",function(a));
}
pow函数是C语言的一个库函数。
函数原型:double pow(double x, double y);
功 能:计算x^y
返 回 值:计算结果
举例如下:
double x = 3.14, y=2, z;注:使用pow函数的时候,需要将头文件#include<math.h>包含进源文件中。
VC调试,已改,更改位置见程序中相应的注释部分:
#include<stdio.h>C98标准原型:
double pow (double base, double exponent);头文件:
#include <math.h>功能:计算base的exponent次幂。
说明:base应大于零,返回幂指数的结果。
举例: