问题遇到的现象和发生背景 :答案错误 按书上敲的 自己加了个判断正负
#include<stdio.h>
#define MAXLINE 80
int main()
{
int i,k,number=0,index=0,flag=1,j;
char hexad[MAXLINE],str[MAXLINE];
i=0;
while((str[i]=getchar())!='#')
{
i++;
}
str[i]='\0';
i=0;
k=0;
j=0;
while(str[i]!='\0')//过滤废弃的
{
if((str[i]>='0'&&str[i]<='9')||(str[i]>='A'&&str[i]<='F')||(str[i]>='a'&&str[i]<='f'))
{
hexad[k]=str[i];
k++;
}
i++;
}
hexad[k]='\0';
while(str[j]!='\0')//找第一个有效十六进制数字的下标
{
if((str[j]>='0'&&str[j]<='9')||(str[j]>='A'&&str[j]<='F')||(str[j]>='a'&&str[j]<='f'))
{
index=j;
break;
}
j++;
}
j=0;
while(j<index)//找第一个数字前面有无负号
{
if(str[j]=='-')
{
flag=-1;
break;
}
j++;
}
for(i=0;hexad[i]!='\0';i++)//输出十进制有效数字
{
if(hexad[i]>='0'&&hexad[i]<='9')
{
number=number*16+hexad[i]-'0';
}
else if(hexad[i]>='A'&&hexad[i]<='F')
{
number=number*16+hexad[i]-'A'+10;
}
else if(hexad[i]>='a'&&hexad[i]<='f')
{
number=number*16+hexad[i]-'a'+10;
}
}
printf("%d",number*flag);//乘个flag判断正负
return 0;
}
问题相关代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果