• HNCU 1330: 算法3-1:八进制数


    题目描述
    将十进制数转换为八进制,并输出。
    这里写图片描述
    图:将十进制数转换为八进制并输出
    输入
    输入包含若干十进制正整数。

    输出
    输出相应的八进制数,每个占一行。

    样例输入
    1
    2
    3
    7
    8
    9
    19
    10020345
    样例输出
    1
    2
    3
    7
    10
    11
    23
    46162771

    栈的简单应用

    #include<stdio.h>
    #include<stdlib.h>
    
    #define STACK_INIT_SIZE 100
    #define STACKINCREMENT 10
    #define OVERFLOW 0
    #define OK 1
    #define ERROR 0
    typedef int SElemType;
    typedef int Status;
    
    typedef struct {
        SElemType *base;
        SElemType *top;
        int stacksize;
    }SqStack; 
    
    Status InitStack(SqStack *p)//构造一个空栈p 
    {
        p->base = (SElemType*)malloc(STACK_INIT_SIZE*sizeof(SElemType));
        if(!p->base )
            exit(OVERFLOW);
        p->top = p->base;
        p->stacksize = STACK_INIT_SIZE;
        return OK;
    }
    
    Status Push(int e,SqStack *p)//插入e为栈的新元素 
    {
        SElemType *newbase;
        if((p->top -p->base) >= p->stacksize )
        {
            newbase = (SElemType*)realloc(p->base,(STACKINCREMENT+p->stacksize )*sizeof(SElemType));
            if(!newbase)
                exit(OVERFLOW);
            p->base = newbase;
            p->stacksize += STACKINCREMENT;
        }
         *(p->top)++ = e;
    
        return OK;
    }
    
    Status StackEmpty(SqStack *p)//若栈为空栈,则返回OK,否则返回ERROR 
    {
        if(p->base == p->top )
            return OK;
        return ERROR;
    }
    
    Status Pop(SqStack *p,int *n)//若栈不为空,则删除栈顶元素,用*n返回其值 
    {
        if(p->base == p->top )
            return ERROR;
        *n = *(--p->top);
        return OK;
    }
    void Conversion(int n,SqStack *p)//对于任意输入的一个非负十进制整数,打印输出与其等值的八进制数 
    {
        int e;
        InitStack(p);
        while(n)
        {
            Push(n%8,p);
            n/=8;
        }
        while(!StackEmpty(p))
        {
            Pop(p,&e);
            printf("%d",e);
        }
        printf("
    ");
    }
    
    int main()
    {
        int n;
        SqStack p;
        while(scanf("%d",&n)!=EOF)
        {
            Conversion(n,&p);
        }
        return 0;
    } 
  • 相关阅读:
    Python36和Python27共存的方法
    普通用户启动redis
    NetHogs 实时检测网络流量 转
    Linux命令nohup+screen 转
    变更Linux下的Java版本 alternatives
    centos7下使用yum安装mysql
    CentOS6.6系统中安装配置Samba的教程
    Linux服务器中木马(肉鸡)手工清除方法(转)
    linux杀毒软件clamav安装与使用
    msys git 安装配置、git命令行使用
  • 原文地址:https://www.cnblogs.com/hellocheng/p/7350135.html
Copyright © 2020-2023  润新知