#include<stdio.h>
#include<stdlib.h>
#define StackInitSize 100
typedef int StackElementType;
typedef struct{
StackElementType data[StackInitSize];
int top;
}SeqStack;
SeqStack *initstack(SeqStack *s)
{
s=(SeqStack*)malloc(sizeof(SeqStack));
if(s!=NULL){
s->top=-1;
return s;
}
else{
printf("没有足够的空间,申请失败,程序终止\n");
exit(0);
}
}
int isempty(SeqStack *s)
{
return (s->top==-1)?1:0;
}
SeqStack push(SeqStack *s,StackElementType x)
{
if(s->top==StackInitSize){
printf("栈满,程序终止\n");
exit(0);
}
else{
s->top++;
s->data[s->top]=x;
}
return *s;
}
StackElementType pop(SeqStack *s)
{
StackElementType temp;
if(isempty(s)){
printf("栈空,程序终止\n");
exit(0);
}
else{
temp=s->data[s->top];
s->top--;
return temp;
}
}
void conversion(int n,int r) //函数功能,数值转换
{
SeqStack *s;
StackElementType x;
s=initstack(s);
//采用除r取余法
while(n){
push(s,n%r); //余数入栈
n=n/2;
}
while(!isempty(s)){
x=pop(s);
printf("%d",x);
}
printf("\n");
}
int main()
{
int n,r;
printf("输入十进制数:");
scanf("%d",&n);
printf("转换基数2-9:");
scanf("%d",&r);
printf("结果:");
conversion(n,r);
#include<stdlib.h>
#define StackInitSize 100
typedef int StackElementType;
typedef struct{
StackElementType data[StackInitSize];
int top;
}SeqStack;
SeqStack *initstack(SeqStack *s)
{
s=(SeqStack*)malloc(sizeof(SeqStack));
if(s!=NULL){
s->top=-1;
return s;
}
else{
printf("没有足够的空间,申请失败,程序终止\n");
exit(0);
}
}
int isempty(SeqStack *s)
{
return (s->top==-1)?1:0;
}
SeqStack push(SeqStack *s,StackElementType x)
{
if(s->top==StackInitSize){
printf("栈满,程序终止\n");
exit(0);
}
else{
s->top++;
s->data[s->top]=x;
}
return *s;
}
StackElementType pop(SeqStack *s)
{
StackElementType temp;
if(isempty(s)){
printf("栈空,程序终止\n");
exit(0);
}
else{
temp=s->data[s->top];
s->top--;
return temp;
}
}
void conversion(int n,int r) //函数功能,数值转换
{
SeqStack *s;
StackElementType x;
s=initstack(s);
//采用除r取余法
while(n){
push(s,n%r); //余数入栈
n=n/2;
}
while(!isempty(s)){
x=pop(s);
printf("%d",x);
}
printf("\n");
}
int main()
{
int n,r;
printf("输入十进制数:");
scanf("%d",&n);
printf("转换基数2-9:");
scanf("%d",&r);
printf("结果:");
conversion(n,r);
}
//利用一维数组作为顺序栈进行转换
#include<stdio.h>
#define len 100
void conversion(int n,int r)
{
int s[len],top;
int x;
top=0; //初始化栈
while(n)
{
s[top++]=n%r;
n=n/r;
}
while (top!=0)
{
x=s[--top];
printf("%d",x);
}
}
int main()
{
int n,r;
scanf("%d %d",&n,&r);
conversion(n,r);
}