求懂C++的大神用C++语言帮忙写个程序。在线等!急!!!!!!

2025-02-02 12:54:00
推荐回答(1个)
回答1:

给你一个参考,你可以自己改写:

#include 
#include 
#include 
#include 
#define MAX_CONVERT_NUM_LEN    50
char m2n(char m, char n, char *mNum, char *nNum)
{
    char *np=nNum;
    char JINZHI[37] ="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    unsigned int dec;
    char shang[MAX_CONVERT_NUM_LEN], tt[MAX_CONVERT_NUM_LEN];
    char *sp, *tp;
    char getm, temp;
    
    if(m<2 || m>36 || n<2 || n>36)
        return -1;
    
    strcpy(shang, mNum);
    sp = shang;
    while(*sp != '\0'){
        dec = 0;
        *tt = '\0';    
        tp = tt;
        while(*sp != '\0'){
            getm = *sp > '9' ? (toupper(*sp++)-'A'+10) : ((*sp++)-'0');
            if(getm < 0 || getm >= m )
                return -1;
            dec = dec * m + getm;
            if((temp=dec/n) != 0 || *tp != '\0')
                *tp++ = JINZHI[temp];
            dec %= n;
        }
        *np++ = JINZHI[dec];
        *tp = '\0';
        strcpy(shang, tt);
        sp = shang;
    }
    *np-- = '\0';
    while(np>nNum){
        temp =*np;
        *np-- =*nNum;
        *nNum++ = temp;
    }
    return 0;
}

int main(int argc, char **argv) 
{
    char *m="123004560007890000abcdEF";
    char n[MAX_CONVERT_NUM_LEN];
    
    if(strlen(m) > 0 && 0 == m2n(16, 10, m, n))
        printf("%s \n",n);
    else
        printf("error!!!\n");
    
    system("pause");
    return 0;
}