题解 | 进制转换

#include <math.h>
#include <stdio.h>


int change_int_arr(int *a,int n,int len){//从下标为0的开始对应n进制数的高位
    int num = 0;
    int i;
    int dig;
    for(i = 0;i < len;i++){
        dig = 0;
        dig = a [i] * pow(n, len - 1 - i);
        num += dig;
    }
    return num;
}
int  char_to_int(char *s,int *a){//将字符串数组转换为int数组
    
    int i;
    int len = 0;
    for(i = 2;s[i] != '\n';i++){
        len++;
        switch(s[i]){
            case 48:case 49:case 50:case 51:case 52:case 53:case 54: case 55:case 56:case 57: a[i - 2] = s[i] - 48;break;
            case 'A':case 'B':case 'C':case 'D':case 'E':case 'F':
            a[i - 2] = s[i] - 'A' + 10;break;
        };
    }
    //printf("%d",len);
    return len;
}
int main() {
   char c[20];
   int a[20];
   fgets(c,20,stdin);
   int len = char_to_int(c,a);
   printf("%d",change_int_arr(a, 16, len));
    return 0;
}

全部评论

相关推荐

评论
点赞
收藏
分享
牛客网
牛客企业服务