题目
答案
#include<stdio.h>
#include<string.h>
int main()
{
char str[10000];
char x;
gets(str);
int count=0,flag=1;
long sum=0;
int i=strlen(str)-2;
while(i>=0)
{
if(str[i]>='0'&&str[i]<='9')
sum+=pow(16,count++)*(str[i]-'0');
else if(str[i]>='a'&&str[i]<='f')
sum+=pow(16,count++)*(str[i]-'a'+10);
else if(str[i]>='A'&&str[i]<='F')
sum+=pow(16,count++)*(str[i]-'A'+10);
i--;
}
i=0;
while(str[i]!='#')
{
if(str[i]=='-')
{
flag=-1;break;
}
else if((str[i]>='0'&&str[i]<='9')||(str[i]>='a'&&str[i]<='f')||(str[i]>='A'&&str[i]<='F')) break;
i++;
}
printf("%ld",flag*sum);
}
PTA测试点
总结
本题在判断是否为16进制数时,字母部分的范围是a到f而不是a到z,而且在求sum以及sum的符号时都要判断