C编程问题,请求C高手帮忙

来源:百度知道 编辑:UC知道 时间:2024/05/16 12:22:50
这是题目
十进制N和其它进制数的转换是计算机实现计算的基本问题,其解决方法很多,其中一个简单算法基于下列原理:
N=(N div d)*d+ N mod d ( 其中:div为整除运算,mod为求余运算)
例如十进制向八进制的数制转换 (1348)10=(2504)8,其运算过程如下:
N N div 8 N mod 8
1348 168 4
168 21 0
21 2 5
2 0 2
请利用堆栈用上述方法实现十进制向三进制的数制转换。
我的代码是这样的:
#include<stdio.h>
struct stack
{
datetype date;
struct Node *next;
}s;
main()
{
int a,b,c,d;
printf("请输入转化为3进制的数值、0"):
scanf("%d",&a);
while()
{
b=a%3;
c=a-(3*b);
push(stack *s,datatype a);
pop(stack *s);
}
printf("十进制的%d转化后为三进制的%d\0",a,d);

}
int push(stack *s,datatype a);
{
if(full stack)
re

错误很多 呵呵 改了一半不想改了 给你个顺序栈的
#include <stdio.h>
#define Maxsize 100

typedef struct{
int date[Maxsize];
int top;
}SqStack;
void InitStack(SqStack *st)
{
st->top=-1;
}
int StackEmpty(SqStack *st)
{
return(st->top==-1);
}

int Push(SqStack *st,int x)
{
if(st->top==Maxsize-1)
return 0;
st->top++;
st->date[st->top]=x;
return 1;
}
int Pop(SqStack *st,int *x)
{
if(st->top==-1)
return 0;
*x=st->date[st->top];
st->top--;
return 1;
}

void conversion(void)
{
int n,x;
SqStack s;
InitStack(&s);
scanf("%d",&n);
while(n){
Push(&s,n%8);
n=n/8;
}
while(!StackEmpty(&s))
{
Pop(&s,&x);
print