利用栈进行数制转换

#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<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);
}



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值