16进制转10进制

 

 

 

#include "stdio.h"
#define N 50
long fun(char *s)
{
    int i,t;
    long sum=0;
    for(i=0;s[i];i++)
    {
    if(s[i]>='0'&&s[i]<='9')//当字符是'0'--'9'时,*-‘0'就行了
    t=s[i]-'0';
    if(s[i]>='a'&&s[i]<='z')
    t=s[i]-'a'+10;//当字符是 abcdef 时,*-‘a’+10 就行了
    if(s[i]>='A'&&s[i]<='Z')
    t=s[i]-'A'+10;//当字符是 ABCDEF 时,*-‘A’+10 就行了
    sum=sum*16+t; //每次循环一次进位16
    }
    return sum;
}
int main(void) //本题先定义一个数组来保存输入的数,数采用以字符串的方式输入,
{ //利用字符串与字符数组相结合的方式
    int m;
    char s[N];
    printf("Enter 16 进制的数:");
    scanf("%s",s);
    m=fun(s);
    printf("%ld",m);
}

 

posted @ 2020-09-20 21:45  然终酒肆  阅读(360)  评论(0编辑  收藏  举报