• HNCU1330:算法3-1:八进制数


    http://hncu.acmclub.com/index.php?app=problem_title&id=111&problem_id=1330

    题目描述

    将十进制数转换为八进制,并输出。
    图:将十进制数转换为八进制并输出

    输入格式

    输入包含若干十进制正整数。

    输出

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

    样例输入

    1
    2
    3
    7
    8
    9
    19
    10020345

    样例输出

    1
    2
    3
    7
    10
    11
    23
    46162771

    #include<string.h>
    #include<ctype.h>
    #include<malloc.h> /* malloc()等 */
    #include<limits.h> /* INT_MAX等 */
    #include<stdio.h> /* EOF(=^Z或F6),NULL */
    #include<stdlib.h> /* atoi() */
    #include<math.h> /* floor(),ceil(),abs() */
    /* 函数结果状态代码 */
    #define TRUE 1
    #define FALSE 0
    #define OK 1
    #define ERROR 0
    #define INFEASIBLE -1
    typedef int Status; /* Status是函数的类型,其值是函数结果状态代码,如OK等 */
    typedef int Boolean; /* Boolean是布尔类型,其值是TRUE或FALSE */
    
    #define STACK_INIT_SIZE 10 /* 存储空间初始分配量 */
    #define STACKINCREMENT 2 /* 存储空间分配增量 */
    typedef int SElemType; /* 定义栈元素类型为整型 */
    typedef struct SqStack
    {
        SElemType *base; /* 在栈构造之前和销毁之后,base的值为NULL */
        SElemType *top; /* 栈顶指针 */
        int stacksize; /* 当前已分配的存储空间,以元素为单位 */
    } SqStack; /* 顺序栈 */
    
    Status InitStack(SqStack *S)
    {
        /* 构造一个空栈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;
    }
    
    Status Push(SqStack *S,SElemType e)
    {
        /* 插入元素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;
    }
    
    Status Pop(SqStack *S,SElemType *e)
    {
        /* 若栈不空,则删除S的栈顶元素,用e返回其值,并返回OK;否则返回ERROR */
        if((*S).top==(*S).base)
            return ERROR;
        *e=*--(*S).top;
        return OK;
    }
    
    Status StackEmpty(SqStack S)
    {
        /* 若栈S为空栈,则返回TRUE,否则返回FALSE */
        if(S.top==S.base)
            return TRUE;
        else
            return FALSE;
    }
    
    void conversion(int n) /* 算法3.1 */
    {
        /* 对于输入的任意一个非负十进制整数,打印输出与其等值的八进制数 */
        SqStack s;
        SElemType e;
        InitStack(&s); /* 初始化栈 */
        while(n) /* 当n不等于0 */
        {
            Push(&s,n%8); /* 入栈n除以8的余数(8进制的低位) */
            n=n/8;
        }
        while(!StackEmpty(s)) /* 当栈不空 */
        {
            Pop(&s,&e); /* 弹出栈顶元素且赋值给e */
            printf("%d",e); /* 输出e */
        }
        printf("
    ");
    }
    
    int main()
    {
        int n;
        while(~scanf("%d",&n))
        {
            conversion(n);
        }
        return 0;
    }
    


     

  • 相关阅读:
    Raft Consensus Algorithm 分布式系统一致性协议
    Dynamic Programming 类问题的空间优化方法
    Bellman–Ford and SPFA Algorithm
    K8S
    SegmentTree
    TCP TIME_WAIT 状态
    When does locking or MVCC occur? Where do I need to specify which one the database should use?
    神经网络的工作原理
    React Native:State 及其 生命周期
    Css Animation
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3199131.html
Copyright © 2020-2023  润新知