13751652677 发表于 2016-3-7 23:34:53

十进制转化为八进制,为什么输出答案是错的

#include <stdio.h>
#include <stdlib.h>
#define STACK_INIT_SIZE 100
#defineSTACKINCREMENT 10
typedef struct
{
    int *base;
    int *top;
    int stacksize;
}sqstack;

int Initstack(sqstack *s)
{
    (*s).base=(int*)malloc(STACK_INIT_SIZE*sizeof(int));
    if(!(*s).base)
      exit(-1);
    (*s).top=(*s).base;
    (*s).stacksize=STACK_INIT_SIZE;
    return 1;
}

int Pop(sqstack *s,int *e)
{
    if((*s).top==(*s).base)
    {
      return 0;
    }
    e=*--(*s).top;
    return1;
}

int Push(sqstack *s,int e)
{
    if((*s).top-(*s).base==(*s).stacksize)
    {
      (*s).base=(int*)realloc((*s).base,((*s).stacksize+STACKINCREMENT)*sizeof(int));
      if(!(*s).base)
            exit(-1);
      (*s).top=(*s).base+(*s).stacksize;
      (*s).stacksize+=STACKINCREMENT;
    }
    *(*s).top++=e;
    return 1;
}

int Stackempty(sqstack s)
{
    if(s.top==s.base)
    {
      return 0;
    }
    else
      return 1;
}

void Conversion()
{
    int n,e;
    sqstack s;
    Initstack(&s);
    printf("请输入一个十进制数:");
    scanf("%d",&n);
    while(n)
    {
      Push(&s,n%8);
      n=n/8;
    }
    printf("下一步");
    while(Stackempty(s))
    {
      Pop(&s,&e);
      printf("%d",e);
    }
}

intmain()
{
    printf("此程序为把十进制用栈转化为八进制\n");
    Conversion();
    return 0;
}

n0noper 发表于 2016-3-8 08:48:45

撸主,我这边是可以的呀~~~

//   e=*--(*s).top;
       *e = *--(*s).top;                // MODIFY BY n0noper

如果还有错,贴出错误截图大家一起讨论。

13751652677 发表于 2016-3-8 13:22:38

n0noper 发表于 2016-3-8 08:48
撸主,我这边是可以的呀~~~




厉害,谢谢,头像本人吗

n0noper 发表于 2016-3-8 13:42:19

13751652677 发表于 2016-3-8 13:22
厉害,谢谢,头像本人吗

no no no.
I'm a man.
妹纸?加我Q啊{:10_285:}
哈哈,开玩笑的,可以方便联系,有问题一起讨论

DAY 发表于 2016-3-8 17:52:48

#include<iostream>
#include<cstdio>
using namespace std;
int main()//Decimal to octal
{
int m;
char a;
cin>>m;
sprintf(a,"%o",m);
cout<<a<<endl;
}

13751652677 发表于 2016-3-9 10:43:37

DAY 发表于 2016-3-8 17:52


are you a girl
页: [1]
查看完整版本: 十进制转化为八进制,为什么输出答案是错的