m0_68492093 2022-04-23 04:09 采纳率: 50%
浏览 50
已结题

问题不难,时间紧张。

利用栈这种数据结构,编程实现将一个十进制整数n转换成r进制数(r的取值为2~9)。
要求:
1、栈的存储结构为顺序栈,不能是链栈。
2、使用辗转相除法实现数制的转换。

  • 写回答

2条回答 默认 最新

  • 不会长胖的斜杠 后端领域新星创作者 2022-04-23 04:12
    关注

    望采纳~

    #include <stdio.h>
    #include <stdlib.h>
     
    #define ERROR 0
    #define OK 1
    #define  MAXSIZE  20
    typedef int ElemType;
     
    typedef struct Sqstack{
        ElemType *top;
        ElemType *base;
        ElemType stacksize;
    }stack;
     
    /*Function:栈初始化 */ 
    int Initstack04(stack *s){
        s->base=(ElemType *)malloc(MAXSIZE*sizeof(ElemType));//申请空间
        if(s->base==NULL) {
            printf("栈创建失败!");
            return ERROR; 
        }
       s->top=s->base;
       s->stacksize=MAXSIZE;
       printf("栈创建成功!"); 
       return OK;
    }
    /*Function:入栈*/ 
    int Push04(stack *s,ElemType e){
        if(s->top-s->base==MAXSIZE){
            return ERROR;
        }
        *s->top++=e;
        return OK;
    } 
    /*Function:出栈*/ 
    int Pop04(stack *s){
        if(s->top==s->base){
            printf("栈为空栈!\n");
            return ERROR;
        }
        s->top--;
        printf("%d ",*s->top);
        return OK;
    }
    /*Function:进制转换*/
    void transition(stack *s){
         int n,m;
         printf("请输入您要转换的数字:\n");
         scanf("%d",&m);
         printf("请输入您要转换的进制:\n");
         scanf("%d",&n);
         while(m){
             Push04(s,m%n);//余数入栈 
             m=m/n;
            }
         printf("转换结果为:\n");
         while(s->top!=s->base){//输出 
             Pop04(s);
         }
    }
    void main(){
        stack s;
        Initstack04(&s);
        transition(&s);
    }
    
    
    

    img

    展开全部

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 4月30日
  • 已采纳回答 4月23日
  • 创建了问题 4月23日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部