进制转换 十进制转换为八进制
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define M 3
typedef struct mystack
{
int a[M];
int top;
}ST;
int isfull(ST *t);
int isempty(ST *t);
int pop(ST *t,int *data);
int push(ST *t,int data);
void transfer(int number);
int main()
{
int x;
printf("请输入一个十进制数:\n");
scanf("%d",&x);
while(x!=0)
{
transfer(x);
}
return 0;
}
int isfull(ST *t)
{
if(t->top==M-1)
return 1;
else return 0;
}
int isempty(ST *t)
{
if(t->top<0)
return 1;
else return 0;
}
int push(ST *t,int data)
{
if(!isfull(t))
{
(t->top)++;
t->a[t->top]=data;
return 1;
}
else return 0;
}
int pop(ST *t,int *data)
{
if(!isempty(t))
{
*data=t->a[t->top];
(t->top)--;
return 1;
}
else return 0;
}
void transfer(int number)
{
ST t;
int r;
t.top=-1;
while(number)
{
r=number%8;
push(&t,r);
number=number/8;
}
while(!isempty(&t))
{
pop(&t,&r);
printf("%d",r);
}
printf("\n");
}
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define M 3
typedef struct mystack
{
int a[M];
int top;
}ST;
int isfull(ST *t);
int isempty(ST *t);
int pop(ST *t,int *data);
int push(ST *t,int data);
void transfer(int number);
int main()
{
int x;
printf("请输入一个十进制数:\n");
scanf("%d",&x);
while(x!=0)
{
transfer(x);
}
return 0;
}
int isfull(ST *t)
{
if(t->top==M-1)
return 1;
else return 0;
}
int isempty(ST *t)
{
if(t->top<0)
return 1;
else return 0;
}
int push(ST *t,int data)
{
if(!isfull(t))
{
(t->top)++;
t->a[t->top]=data;
return 1;
}
else return 0;
}
int pop(ST *t,int *data)
{
if(!isempty(t))
{
*data=t->a[t->top];
(t->top)--;
return 1;
}
else return 0;
}
void transfer(int number)
{
ST t;
int r;
t.top=-1;
while(number)
{
r=number%8;
push(&t,r);
number=number/8;
}
while(!isempty(&t))
{
pop(&t,&r);
printf("%d",r);
}
printf("\n");
}