| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 909 人关注过本帖, 1 人收藏
标题:用将十进制转化为八进制。。改不了错呀!!!
只看楼主 加入收藏
ray李锐
Rank: 1
来 自:奉节
等 级:新手上路
帖 子:28
专家分:7
注 册:2013-3-9
结帖率:100%
收藏(1)
已结贴  问题点数:10 回复次数:10 
用将十进制转化为八进制。。改不了错呀!!!
#include<stdio.h>
#include <malloc.h>
#define STACK_INIT_SIZE 100;
#define STACKINCERMENT 10;
#define OVERFLOW -1
#define ERROR  0
#define  OK  1
typedef   int Status;
typedef struct _stack
{
   int  *base;
   int  *top;
 int stacksize;
}SqStack;
Status InitStack(SqStack &S);
{
    S.base=(SElemType *)malloc(STACK_INIT_SIZE *sizeof(SElemType));
    if(!S.base)exit(OVERFLOW);
    S.top=S.base;
    S.stacksize=100;
    return 1;
}//InitStack
Status StackEmpty(SqStack S)
{
    if(S->top==-1)
        return OK;
    else
        return  ERROR;
}
Status StackEmpty(SqStack S)
{
     S.base=(SElemType *)malloc(STACK_INIT_SIZE *sizeof(SElemType));
     if(S->top==NULL)  return 0;
     else return 1;
}

Status push(SqStack &S,SElemType &e)
{
    if(S.top-S.base>=S.stacksize)
    {
        S.base=(SElemType*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(SElemType));
        if(!S.base)exit(OVERFOLW);
        S.top=S.base+S.stacksize;
        S.stacksize+=STACKINCREMENT;
    }
    *S.top++=e;
     return OK;
}//Push
Status Pop(SqStack &s SElemType e)
{
    if(S.top==S.base )return ERROR;
    e=*--S.top;
    return OK;
}//Pop
void conversion()
{
    int N;
    InitStack(S);   
   
    while (N);        
    {   
    push(S,N%8);
    N=N/8;
    }
    while (!StackEmpty(S))
    {
    Pop(S,e);
    printf("%d",e);
    }
}//conversion;
void main()
{
    SqStack s;
    int e,N;
    printf("请输入一个数\n");
    scanf("%d",N);
    InitStack(s);
    conversion();
    printf("\n");
}
搜索更多相关主题的帖子: include return 八进制 
2013-04-14 20:33
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
10转8 有如此麻烦???

DO IT YOURSELF !
2013-04-14 21:17
邓士林
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:淮河河畔
等 级:贵宾
威 望:61
帖 子:2392
专家分:13384
注 册:2013-3-3
收藏
得分:0 
我看了又十来分钟,错误蛮多的,你想练练栈的操作,用栈来存贮然后输出。
1、宏定义后面没有引号;
#define STACK_INIT_SIZE 100;
#define STACKINCERMENT 10;
2、exit(OVERFLOW)这个在的头文件是#include <stdlib.h>你得添上。
3、对象的引用用‘.’而不是‘->’如你的:if(S.top-S.base>=S.stacksize)
4、SElemType这个你没有定义,在用malloc函数进行内存分配的时候,形式(指针所指数据类型 *)malloc(sizeof(指针所指类型的数据类型)*个数),而不是你的S.base=(SElemType *)malloc(STACK_INIT_SIZE *sizeof(SElemType));
5、if(S->top==-1)这两个类型不一样,'==' : no conversion from 'const int' to 'int *'我也没想好。基本就这个样子




Maybe
2013-04-14 21:37
支风儿
Rank: 2
等 级:论坛游民
帖 子:25
专家分:13
注 册:2013-4-6
收藏
得分:5 

#include<stdio.h>
#include<malloc.h>    //注意,define后不能用;
#define ERROR 0
#define OK 1
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10

typedef int SElemType;
typedef int Status;

struct SqStack
{
    SElemType *base;
    SElemType *top;
    int stacksize;
};
Status InitStack(SqStack &S)//创空栈
{
    S.base=(SElemType*)malloc(STACK_INIT_SIZE*sizeof(SElemType));
   if(!S.base)
   return ERROR;
   S.top=S.base;
   S.stacksize=STACK_INIT_SIZE;
   return OK;}
Status Push(SqStack &S,SElemType e)//插元素为新栈顶
{
 if(S.top-S.base>=S.stacksize)
  {S.base=(SElemType*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(SElemType));
   if(!S.base)
   return ERROR;
   S.top=S.base+S.stacksize;
   S.stacksize+=STACKINCREMENT;}
   *S.top++=e;

   return OK;
}
Status Pop(SqStack&S,SElemType &e)//栈不空,删除栈顶元素
{
    if(S.top==S.base)
       return ERROR;
   e=*--S.top;
    return OK;
}
Status StackEmpty(SqStack &S)//是否是空栈
{
    if(S.base==S.top)
    return OK;
    else
    return ERROR;
}
int main()
{    int n,e;
   SqStack S;
    InitStack(S);
    scanf("%d",&n);
    while(n)
    {
        Push(S,n%8);
        n=n/8;
    }
    while(!StackEmpty(S))
    {
        Pop(S,e);
        printf("%d",e);
    }
    return OK;

}
你比较下咯
2013-04-14 21:42
ray李锐
Rank: 1
来 自:奉节
等 级:新手上路
帖 子:28
专家分:7
注 册:2013-3-9
收藏
得分:0 
回复 4楼 支风儿
这是我改后的,步骤都是跟书上一样的,但还是打不出来,你帮忙看看

#include<stdio.h>
#include<malloc.h>
#define OK 1
#define ERROR 0
#define OVERFLOW -1
#define STACK_INIT_SIZE 100
#define STACKINCERMENT 10
typedef int SElemType;
typedef   int Status;
typedef struct
{
   SElemType  *base;
   SElemType *top;
 int stacksize;
}SqStack;
//创建一个空栈;
Status InitStack(SqStack &S)
{
    S.base=(SElemType *)malloc(STACK_INIT_SIZE * sizeof(SElemType));
    if(!S.base)
        exit(OVERFLOW);
    S.top=S.base;
    S.stacksize=STACK_INIT_SIZE ;
    return OK;
}//InitStack
//插入操作
Status Push(SqStack &S,SElemType e)
{
    if(S.top-S.base>=S.stacksize)
    {
        S.base=(SElemType *)realloc(S.base,(S.stacksize+STACKINCREMENT) * sizeof(SElemType));
        if(!S.base)
            exit(OVERFLOW);
        S.top=S.base+S.stacksize;
        S.stacksize+=STACKINCREMENT;
    }
    *S.top++=e;
     return OK;
}//Push
//出栈
Status Pop(SqStack &s,SElemType &e)
{
    if(S.top==S.base )return ERROR;
    e=*--S.top;
    return OK;
}//Pop
Status StackEmpty(SqStack &S)//是否是空栈
{
    if(S.base==S.top)
    return OK;
    else
    return ERROR;
}
void conversion()
{
    int N;
    InitStack(S);
    scanf("%d",N);
    while (N)        
    {   
    Push(S,N%8);
    N=N/8;
    }
    while (!StackEmpty)
    {
    Pop(S,e);
    printf("%d",e);
    }
}//conversion;
int main()
{
    conversion()   
}
2013-04-15 22:52
ray李锐
Rank: 1
来 自:奉节
等 级:新手上路
帖 子:28
专家分:7
注 册:2013-3-9
收藏
得分:0 
回复 3楼 邓士林
确实有很多错,但是那个(S.top-S.base>=S.stacksize)可以吧!!书上就是这样写的
2013-04-15 22:54
邓士林
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:淮河河畔
等 级:贵宾
威 望:61
帖 子:2392
专家分:13384
注 册:2013-3-3
收藏
得分:0 
#include<stdio.h>
#include<malloc.h>
#include "stdlib.h"
#define OK 1
#define ERROR 0
#define OVERFLOW -1
#define STACK_INIT_SIZE 100
#define STACKINCERMENT 10
typedef int SElemType;
typedef   int Status;
typedef struct
{
   SElemType  *base;
   SElemType *top;
int stacksize;
}SqStack;
//创建一个空栈;
Status InitStack(SqStack &S)
{
    S.base=(SElemType *)malloc(STACK_INIT_SIZE * sizeof(SElemType));
    if(!S.base)
        exit(OVERFLOW);
    S.top=S.base;
    S.stacksize=STACK_INIT_SIZE ;
    return OK;
}//InitStack
//插入操作
Status Push(SqStack &S,SElemType e)
{
    if(S.top-S.base>=S.stacksize)
    {
        S.base=(SElemType *)realloc(S.base,(S.stacksize+STACKINCERMENT) * sizeof(SElemType));
        if(!S.base)
            exit(OVERFLOW);
        S.top=S.base+S.stacksize;
        S.stacksize+=STACKINCERMENT;
    }
    *S.top++=e;
     return OK;
}//Push
//出栈
Status Pop(SqStack &S,SElemType &e)
{
    if(S.top==S.base )return ERROR;
    e=*--S.top;
    return OK;
}//Pop
Status StackEmpty(SqStack &S)//是否是空栈
{
    if(S.base==S.top)
    return OK;
    else
    return ERROR;
}
void conversion()
{
    int N;
    SqStack S;
    InitStack(S);
    scanf("%d",N);
    while (N)        
    {   
    Push(S,N%8);
    N=N/8;
    }
    while (StackEmpty)
    {
    Pop(S,e);             //上面的没问题了,你的e现在是没定义啊!所以有错!你修改下
    printf("%d",e);
    }
}//conversion;
int main()
{
    conversion();
    return 0;
}

Maybe
2013-04-16 00:38
ray李锐
Rank: 1
来 自:奉节
等 级:新手上路
帖 子:28
专家分:7
注 册:2013-3-9
收藏
得分:0 
回复 7楼 邓士林
thank  you...
2013-04-16 10:57
邓士林
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:淮河河畔
等 级:贵宾
威 望:61
帖 子:2392
专家分:13384
注 册:2013-3-3
收藏
得分:5 
回复 8楼 ray李锐
昨天一点多给你看的,你在好好看的。

Maybe
2013-04-16 11:04
yz1025
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:491
专家分:919
注 册:2012-10-26
收藏
得分:0 
没细看
10转8不是
int i=10;
printf("%o",i);
就好了吗?
图片附件: 游客没有浏览图片的权限,请 登录注册

不要投我
2013-04-16 14:39
快速回复:用将十进制转化为八进制。。改不了错呀!!!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.046274 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved