#include <stdio.h>
#include <stdlib.h>
#include <stdlib.h>
typedef int elemtype;
typedef struct
{
elemtype data[100] ;
int top ;
}sqstack;
typedef struct
{
elemtype data[100] ;
int top ;
}sqstack;
void initstack(sqstack *s)//初始化
{
{
s->top=-1;
}
int stackempty(sqstack *s)//判空
{
if(s->top==-1)
return 1;
else
return 0;
}
void push(sqstack *s,elemtype e)//压栈
{
if (s->top==99) //满栈
return 0;
s->top++;
s->data[s->top]=e;
}
}
int stackempty(sqstack *s)//判空
{
if(s->top==-1)
return 1;
else
return 0;
}
void push(sqstack *s,elemtype e)//压栈
{
if (s->top==99) //满栈
return 0;
s->top++;
s->data[s->top]=e;
}
int pop(sqstack *s)//出栈
{
if (stackempty(s)) return 0;
return (s->data[s->top--]);
}
void test(elemtype m,elemtype jz)//数字m转化为jz进制
{
sqstack s;
int k;
initstack(&s);
while(m)
{
push(&s,m%jz);
m=m/jz;
}
printf("转换成M进制后数字为:");
while(!stackempty(&s))//将元素出栈
{
k=pop(&s);
if(k<10)
printf("%d",k);
else
printf("%c",k+55);//超出10转换为A~F
}
printf("\n");
}
long fun(char *s,int jz1)
{
int i,t;
long sum=0;
for(i=0;s[i];i++)
{
if(s[i]<='9')
t=s[i]-'0'; //数字字符变为数字
else
t=s[i]-'a'+10; //字母变为16进制对应数字
sum=sum*jz1+t;
}
return sum;
}
int main()
{
long m;
char s[100];
int jz1,jz;
printf("输入进制:");
scanf("%d",&jz1);
printf("输入数:");
scanf("%s",s);
m=fun(s,jz1);
printf("输入需转化的进制M: ");
scanf("%d",&jz);
{
long m;
char s[100];
int jz1,jz;
printf("输入进制:");
scanf("%d",&jz1);
printf("输入数:");
scanf("%s",s);
m=fun(s,jz1);
printf("输入需转化的进制M: ");
scanf("%d",&jz);
while(jz!=-1)
{
test(m,jz);
if(jz==-1) return(0);
printf("请输入需转化的进制M: ");
scanf("%d",&jz);
}
}
{
test(m,jz);
if(jz==-1) return(0);
printf("请输入需转化的进制M: ");
scanf("%d",&jz);
}
}