69,371
社区成员
发帖
与我相关
我的任务
分享
#include<stdio.h>
#include<malloc.h>
#define maxsize 100
typedef struct
{
char data[maxsize];
int top;
}sqstack;
void initstack(sqstack * &s)
{
s=(sqstack *)malloc(sizeof(sqstack));
s->top=-1;
}
void clearstack(sqstack * &s)
{
free(s);
}
int stacklength(sqstack *s)
{
return(s->top+1);
}
int stackempty(sqstack *s)
{
return(s->top==-1);
}
int push(sqstack *&s,char e)
{
if(s->top==maxsize-1)
return 0;
s->top++;
s->data[s->top]=e;
return 1;
}
void pop(sqstack *&s)
{
while(s->top!=-1)
{
s->top--;
}
}
void dispstack(sqstack *s)//貌似错误就在这个函数里//
{
int i;
for(i=s->top;i>=0;i--)
{
printf("%c",s->data[i]);
}
printf("\n");
}
void bin(sqstack *&st,int dec)//二进制//
{
char e;
while(dec!=0)
{
e=putchar(dec%2+48);
push(st,e);
dec=dec/2;
}
}
void oct(sqstack *&st,int dec)//八进制//
{
char e;
while(dec!=0)
{
e=putchar(dec%8+48);
push(st,e);
dec=dec/8;
}
}
void hex(sqstack *&st,int dec)//十六进制//
{
char e;
while(dec!=0)
{
if(dec%16>=10)
e=putchar(dec%16+55);
else
e=putchar(dec%16+48);
push(st,e);
dec=dec/16;
}
}
void main()
{
sqstack *stack;
initstack(stack);
int m;
printf("请输入要转码的数字:\n");
scanf("%d",&m);
printf("转换为二进制为:\n");
bin(stack,m);
dispstack(stack);
printf("长度为:%d\n\n",stacklength(stack));
pop(stack);
printf("转换为八进制为:\n");
oct(stack,m);
dispstack(stack);
printf("长度为:%d\n\n",stacklength(stack));
pop(stack);
printf("转换为十六进制为:\n");
hex(stack,m);
dispstack(stack);
printf("长度为:%d\n\n",stacklength(stack));
clearstack(stack);
}
#include<stdio.h>
#include<malloc.h>
#define maxsize 100
typedef struct
{
char data[maxsize];
int top;
}sqstack;
void initstack(sqstack * &s)
{
s=(sqstack *)malloc(sizeof(sqstack));
s->top=-1;
}
void clearstack(sqstack * &s)
{
free(s);
}
int stacklength(sqstack *s)
{
return(s->top+1);
}
int stackempty(sqstack *s)
{
return(s->top==-1);
}
int push(sqstack *&s,char e)
{
if(s->top==maxsize-1)
return 0;
s->top++;
s->data[s->top]=e;
return 1;
}
void pop(sqstack *&s)
{
while(s->top!=-1)
{
s->top--;
}
}
void dispstack(sqstack *s)//貌似错误就在这个函数里//
{
int i;
for(i=s->top;i>=0;i--)
{
printf("%c",s->data[i]);
}
printf("\n");
}
void bin(sqstack *&st,int dec)//二进制//
{
char e;
while(dec!=0)
{
e=dec%2+48;
push(st,e);
dec=dec/2;
}
}
void oct(sqstack *&st,int dec)//八进制//
{
char e;
while(dec!=0)
{
e=dec%8+48;
push(st,e);
dec=dec/8;
}
}
void hex(sqstack *&st,int dec)//十六进制//
{
char e;
while(dec!=0)
{
if( dec%16 >= 10 )
e=dec%16+55;
else
e=dec%16+48;
push(st,e);
dec=dec/16;
}
}
void main()
{
sqstack *stack;
initstack(stack);
int m;
printf("请输入要转码的数字:\n");
scanf("%d",&m);
printf("转换为二进制为:\n");
bin(stack,m);
dispstack(stack);
printf("长度为:%d\n\n",stacklength(stack));
pop(stack);
printf("转换为八进制为:\n");
oct(stack,m);
dispstack(stack);
printf("长度为:%d\n\n",stacklength(stack));
pop(stack);
printf("转换为十六进制为:\n");
hex(stack,m);
dispstack(stack);
printf("长度为:%d\n\n",stacklength(stack));
clearstack(stack);
}
//putchar是一个输出函数 不是一个转换函数