文章

6

粉丝

137

获赞

2

访问

5.8k

头像
进制转换3 题解:
P1422 清华大学/厦门大学机试题
发布于2023年9月15日 15:07
阅读数 1.2k

#include<stdio.h>
#include<string.h>
#define N 105

int main()
{
    int n, m;                    //m是现在的进制,n是要转换的进制 
    char s1[N], s2[N];            //s1存储输入的字符串,s2存储转换的进制
    int i = 0, j = 0, len;         //len为字符串的长度 
    long long ans = 0;             //记录十进制数 
    
    
    scanf("%d%d", &m, &n);
    scanf("%s", s1);
    
    len = strlen(s1);
    
    //先转换为十进制数 
    for(i = 0; i < len; i++)
    {
        if(s1[i] >= '0' && s1[i] <= '9')  //如果是数字,可以直接加上他的值
            ans = ans * m + s1[i] - '0'; 
            
        else                               //如果为字母,字母需要减去A的值再加上10 
            ans = ans * m + s1[i] - 'A' + 10;
    }
    
    i = 0; //重置i的值 
    
    while(ans > 0)
    {
        int temp = ans % n;
        ans /= n;
        
        if(temp < 10) //替换为正常的数字即可
            s2[i++] = temp + '0';
            
        else  //余数大于9
            s2[i++] = temp + 'a' - 10;     
    }
    ...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发