数据结构--进制(任意)转换

**

#include< stdio.h>
#include< stdlib.h>
#include < string.h>
#define N 100

typedef struct nima{
    char a; 
}data;

typedef struct hehe{
data *c;    
int u;
int max;
}arry;
void frist(arry*fist)
{
    fist->c= (data*)malloc(sizeof(data)*N);
    fist->max = N;
    fist->u = 0;
}
void push(arry*fist,char m)
{

    fist->c[fist->u].a = m;
    if(fist->u == fist->max){
        printf("full");
        exit(0);
    }
       printf("%c   ",fist->c[fist->u].a);
       fist->u++;
}
void pop(arry*fist,char *m)
{   
                   if((fist->u-1)<0){
    printf("error");
    exit(0);
    }
    fist->u--;
    *m=fist->c[fist->u].a;
}
void suan(arry*fist,char a[],int m,int d)
{   
    int j = strlen(a);
    int sum = 0;
    int dd;
    for(int i =0;i<j;i++)
    {
        dd=1;   
        for(int i_1 = j-i-1;i_1>0;i_1--)
        {
        dd=dd*m;        
        }
        if(a[i]>='0'&&a[i]<='9')
        sum= sum+dd*(a[i]-'0');
        if(a[i]>='a'&&a[i]<='f')
        sum = sum+dd*(a[i]-'a'+10);
        if(a[i]>='A'&&a[i]<='F')
        sum= sum+dd*(a[i]-'A'+10);
    }
    printf("%d\n",sum);
    int mm;
    char cc;
    while(sum)
    {
        mm = sum%d;
        if(mm>=10)
        {
        cc = 'a'+mm-10; 
        }
        else
        {
        cc = '0'+mm-0;
        }
        push(fist,cc);
        sum = sum/d;
    }
    printf("%d\n",fist->u);
    int jjj = fist->u;
    for(int i=0;i<jjj;i++)
    {

        pop(fist,&cc);
        printf("%c",cc);
    }
    printf("\n");
}
int main()
{
    arry fist;
    frist(&fist);
    char aa[N];
    int i;
    int d;
    scanf("%s",aa);
    printf("进制\n") ;
    scanf("%d",&i);
    printf("换\n");
    scanf("%d",&d);
    suan(&fist,aa,i,d);
    return 0;
}

**

没有更多推荐了,返回首页