最好是仅仅改动我写的转化公式
s的转换规则是:所有base进制的合法字符和仅能出现在s首位的符号位("+"和"-")转换为一个十进制整数
#include <stdio.h>
#define MAX_STR_LEN 100
int strToInt(char s[], int base)
{
int i,sign=1,n=0;
if(s[0]=='-')sign=-1;
if(s[0]=='+')sign=1;
if(base==16)
{
if(s[0]=='+'||s[0]=='-')
{
for(i=1; s[i]!='\0'; i++)
{
if((s[i]>='0'&&s[i]<='9')||(s[i]>='A'&&s[i]<='F')||(s[i]>='a'&&s[i]<='f'))
n=n*16+s[i]-'0';
else continue;
}
return n*sign;
}
else
{
for(i=0; s[i]!='\0'; i++)
{
if((s[i]>='0'&&s[i]<='9')||(s[i]>='A'&&s[i]<='F')||(s[i]>='a'&&s[i]<='f'))
n=n*16+s[i]-'0';
else continue;
}
return n*sign;
}
}
}
int main()
{
int base;
char s[MAX_STR_LEN];
while( (scanf("%d:", &base) != EOF) && (gets(s) != NULL) )
printf("%d\n", strToInt(s, base));
return 0;
}
0~9,A~F,a~f区别对待
#include <stdio.h>