一个十六进制转10进制的程序求改错解决方案
一个十六进制转10进制的程序求改错
#include <stdio.h>
int hex2dec(char *str)
{
int m,i,k;
m=1;
for (i=0,str[i]!='\0';i++)
{
if (str[i]>='0' && str[i]<='9')
k=str[i]-'0';
else if (str[i]>='A' && str[i]<='F')
k=str[i]-'A'+10;
else if (str[i]>='a' && str[i]<='f')
k=str[i]-a+10;
else
return m;
m=16*m+k;
}
return m;
}
main()
{
char str[80];
int n;
gets(str[80]);
n=hex2dec(str);
printf("%d\n",n);
}
------解决方案--------------------
#include <stdio.h>
int hex2dec(char *str)
{
int m,i,k;
m=1;
for (i=0,str[i]!='\0';i++)
{
if (str[i]>='0' && str[i]<='9')
k=str[i]-'0';
else if (str[i]>='A' && str[i]<='F')
k=str[i]-'A'+10;
else if (str[i]>='a' && str[i]<='f')
k=str[i]-a+10;
else
return m;
m=16*m+k;
}
return m;
}
main()
{
char str[80];
int n;
gets(str[80]);
n=hex2dec(str);
printf("%d\n",n);
}
------解决方案--------------------
- C/C++ code
#include <stdio.h> #include <string.h> int hex2dec(char *str) { int m,i,k; m=0; //从0开始 for (i=0; str[i]!='\0';i++) //分号 { if (str[i]>='0' && str[i]<='9') k=str[i]-'0'; else if (str[i]>='A' && str[i]<='F') k=str[i]-'A'+10; else if (str[i]>='a' && str[i]<='f') k=str[i]-'a'+10; //'a' else return m; m=16*m+k; } return m; } main() { char str[80]; int n; gets(str); // n=hex2dec(str); printf("%d\n",n); }