输入一个字符串转换成十进制整数

输入一个字符串,它可能是2–16进制数中一种进制数的表示,计算它对应的10进制数可能的最小值。例如,“151”可以是6–16进制中任何一种进制数的表示。 对应的10进制数可能的最小值就是67,也就是把它当成6进制。

输入格式:

输入一行字符串,仅由‘0’–‘9’和‘A’–'F’这些字符组成,保证转换后对应的10进制数在int范围内。

输出格式:

输出一个整数,为字符串对应10进制数可能的最小值。

输入样例:

213

输出样例:

39

#include
#include
#define N 100000
int KToD(char str[], int k);

int main(void)
{
    char str[N];
    int i,n,k,d,t=0,m,min;
    scanf("%s",str);
    /*下面判断最低进制,例如123不可能为2或3进制*/
    for(i=0; str[i]!='\0'; i++)
    {
    //因为含有字母,故分类讨论
        if(isalpha(str[i]))
        {
            switch(str[i])
            {
            case 'A':
                m=11;
                break;
            case 'B':
                m=12;
                break;
            case 'C':
                m=13;
                break;
            case 'D':
                m=14;
                break;
            case 'E':
                m=15;
                break;
            case 'F':
                m=16;
                break;
            }
            if(m>t)
                t=m;
        }
        else
        {
        if((str[i]-'0'+1)>t)
            t=str[i]-'0'+1;
        }
    }
    //将min先赋为最小进制得到的值
    min=KToD(str,t);
    for(i=t+1; i<=16; i++)
    {
        d=KToD(str,i) ;
        if(d

以前心态:遇到进制转换都直接跳
现在心态:做完进制题后,我行了!!
任意进制转换还不会捏ԅ(¯﹃¯ԅ)
大佬们不但能ak,还代码简单,TQL

总结:

无非每次循环乘以进制后再加上该位数字

你可能感兴趣的:(笔记)