输入一个十进制的正整数,转换为8进制数并输出 5
#include<stdio.h>#include<stdlib.h>typedefintDataType;typedefstruct{DataTypedata[100]...
#include<stdio.h>
#include<stdlib.h>
typedef int DataType;
typedef struct
{
DataType data[100];
int top;
}SeqStack;
int InitSeqStack (SeqStack &st)
{
st.top=-1;
}
int Push (SeqStack &st, int x)
{
if(99==st.top)
return 0;
else
{
st.top++;
st.data[st.top]=x;
return 1;
}
}
int Pop(SeqStack &st, int &x)
{
if(st.top==-1)
return 0;
else
{
x=st.data[st.top];
st.top--;
return 1;
}
}
int SeqStackEmpty(SeqStack st)
{
if(st.top==-1)
return 1;
else
return 0;
}
int Convert(int n)
{
SeqStack st;
int i;
st.top=NULL;
while(n)
{
i=n%8;
Push(st,i);
n=n/8;
}
while(!SeqStackEmpty(st))
{
Pop(st,i);
printf("%d",i);
}
return 1;
}
int main()
{
SeqStack st;
InitSeqStack(st);
int n;
scanf("%d",&n);
Convert(n);
return 1;
}
哪里出问题了? 展开
#include<stdlib.h>
typedef int DataType;
typedef struct
{
DataType data[100];
int top;
}SeqStack;
int InitSeqStack (SeqStack &st)
{
st.top=-1;
}
int Push (SeqStack &st, int x)
{
if(99==st.top)
return 0;
else
{
st.top++;
st.data[st.top]=x;
return 1;
}
}
int Pop(SeqStack &st, int &x)
{
if(st.top==-1)
return 0;
else
{
x=st.data[st.top];
st.top--;
return 1;
}
}
int SeqStackEmpty(SeqStack st)
{
if(st.top==-1)
return 1;
else
return 0;
}
int Convert(int n)
{
SeqStack st;
int i;
st.top=NULL;
while(n)
{
i=n%8;
Push(st,i);
n=n/8;
}
while(!SeqStackEmpty(st))
{
Pop(st,i);
printf("%d",i);
}
return 1;
}
int main()
{
SeqStack st;
InitSeqStack(st);
int n;
scanf("%d",&n);
Convert(n);
return 1;
}
哪里出问题了? 展开
3个回答
展开全部
#include<stdio.h>
#include<stdlib.h>
typedef int DataType;
typedef struct
{
DataType data[100];
int top;
}SeqStack;
int InitSeqStack (SeqStack &st)
{
st.top=-1;
return 1;
}
int Push (SeqStack &st, int x)
{
if(99==st.top)
return 0;
else
{
st.top++;
st.data[st.top]=x;
return 1;
}
}
int Pop(SeqStack &st, int &x)
{
if(st.top==-1)
return 0;
else
{
x=st.data[st.top];
st.top--;
return 1;
}
}
int SeqStackEmpty(SeqStack st)
{
if(st.top==-1)
return 1;
else
return 0;
}
int Convert(int n)
{
SeqStack st;
int i;
st.top=-1;//这里又重新定义了st,初始化时应该为-1
while(n)
{
i=n%8;
Push(st,i);
n=n/8;
}
while(!SeqStackEmpty(st))
{
Pop(st,i);
printf("%d",i);
}
return 1;
}
int main()
{
SeqStack st;
InitSeqStack(st);
int n;
scanf("%d",&n);
Convert(n);
return 1;
}
代码已改好,若有疑问请追问,满意请采纳
展开全部
printf("%o", i); 八进制是%o %d是十进制啊 你是进制输入,输出要转换八进制就要%o
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
一
int InitSeqStack (SeqStack &st)
{
st.top=-1;
}
没有初始化。改一下。
int InitSeqStack (SeqStack &st)
{
memset(st.data,0,100);
st.top=-1;
}
二
多余代码在函数int Convert(int n)
{
/*
SeqStack st;
int i;
st.top=NULL;
*/
int InitSeqStack (SeqStack &st)
{
st.top=-1;
}
没有初始化。改一下。
int InitSeqStack (SeqStack &st)
{
memset(st.data,0,100);
st.top=-1;
}
二
多余代码在函数int Convert(int n)
{
/*
SeqStack st;
int i;
st.top=NULL;
*/
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询