当前位置: 代码迷 >> C语言 >> 问个问题~
  详细解决方案

问个问题~

热度:391   发布时间:2008-05-28 09:46:23.0
问个问题~
#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??
}

----------------解决方案--------------------------------------------------------