问个问题~
#include <stdio.h>#include <string.h>
#include <math.h>
int f(char a[])
{
int i,j;
j=0;
for(i=0;;i++)
{if(a[i]=='A') a[i]=10;
else if(a[i]=='B') a[i]=11;
else if(a[i]=='C') a[i]=12;
else if(a[i]=='D') a[i]=13;
else if(a[i]='E') a[i]=14;
else if(a[i]=='F') a[i]=15;
j=j+a[i]*pow(16,strlen(a)-i);
if(a[i+1]='\0') break;
}
return(j);
}
void main()
char b[100];
gets(b);
printf("%s",f(b));
}
将十六进制转换为十进制~
求教
编译失败问题出在哪里?
----------------解决方案--------------------------------------------------------
'0'~'9' 没有处理,他们还是字符,而不是对应的数字
----------------解决方案--------------------------------------------------------
哇……这个代码好强……开眼界了………………
----------------解决方案--------------------------------------------------------
成功了也是个死循环。
程序代码:
#include <stdio.h>
#include <string.h>
#include <math.h>
int f(char a[])
{
int i,j;
j=0;
for(i=0;;i++) //格式有点乱
{if(a[i]=='A') a[i]=10;
else if(a[i]=='B') a[i]=11;
else if(a[i]=='C') a[i]=12;
else if(a[i]=='D') a[i]=13;
else if(a[i]='E') a[i]=14;
else if(a[i]=='F') a[i]=15;
j=j+a[i]*pow(16,strlen(a)-i);
if(a[i+1]='\0') break; //死循环就它造成的。
}
return(j);
}
void main()
char b[100];
gets(b);
printf("%s",f(b)); //返回值是int, 怎么打印用%s??
}
----------------解决方案--------------------------------------------------------