这里是题目:
利用栈的知识实现任意正的10进制整数到其它进位制的转换程序。
#include <stdio.h>
#define MAXSIZE 100
typedef int datatype;
typedef struct seqstack
{ datatype a[MAXSIZE];
int top;
}seqstack;
void init(seqstack *s)
{
s->top=-1;
}
int empty(seqstack s)
{
return(s.top==-1?1:0);
}
void conversion(int n,int d)
{……}
我的这个不是用栈来进制转换的,这咋改
#include <stdio.h>
#define MAXSIZE 100
typedef int datatype;
typedef struct seqstack
{ datatype a[MAXSIZE];
int top;
}seqstack;
void init(seqstack *s)
{
s->top=-1;
}
int empty(seqstack s)
{
return(s.top==-1?1:0);
}
void conversion(int n,int d)
{
char hex[16]={'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};
int s,i=0;
int a[100]={0};
while (n!= 0){
int m = n%d;
a[i++] = m;
n = n / d;
}
for (i=i-1;i>= 0;i--){
s=a[i];
printf("%c",hex[s]);}
}
int main()
{
int n,d;
printf("请输入一个正的10进制整数:");
scanf("%d",&n);
printf("请输入要转换成的进制(2-16):");
scanf("%d",&d);
conversion(n,d);
}
#include <stdio.h>
#include <iostream.h>
#define MAXSIZE 100
typedef int datatype;
typedef struct seqstack
{ datatype a[MAXSIZE];
int top;
//datatype elem;
}seqstack;
void init(seqstack *s)
{
s->top=-1;
}
int empty(seqstack s)
{
return(s.top==-1?1:0);
}
void push(seqstack *s, datatype x)
{ if(s->top==MAXSIZE-1)
{ printf("溢出"); exit(1); }
else
{ s->top++; s->a[s->top]=x; }
}
datatype pop(seqstack *s )
{ datatype x;
if(s->top!=-1)
{ x=s->a[s->top]; s->top--; return x; }
else
{ printf("栈为空!!! "); exit(1); }
}
datatype getTop(seqstack *s)
{
if(s->top!=-1)
return s->a[s->top];
else
{
printf("stack is empty!\n");
exit(1);
}
}
void conversion(int num_hex_ten,int hex_after)
{
seqstack *s;
int x;
init(s);
while( num_hex_ten )
{
push(s, num_hex_ten % hex_after);
num_hex_ten /= hex_after;
}
printf("转换成目的进制后:");
while(s->top!=-1)
{
x = getTop(s);
pop(s);
if(x > 9){
printf("%c",x+87);
}
else{
printf("%d",x);
}
}
printf("\n");
}
int main()
{
int n,d;
printf("请输入一个正的10进制整数:");
scanf("%d",&n);
printf("请输入要转换成的进制(2-16):");
scanf("%d",&d);
conversion(n,d);
}
这个是用栈的,但运行有问题,咋改