标题:有劳大神帮帮忙,自己作了好几个小时了,还是不会,正处于大一刚学习阶段, ...
只看楼主
a1286643057
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2018-3-17
结帖率:100%
已结贴  问题点数:20 回复次数:4 
有劳大神帮帮忙,自己作了好几个小时了,还是不会,正处于大一刚学习阶段,谢谢
/*
利用顺序栈结构,编写算法函数void Dto16(unsigned int m)实现十进制无符号整数m到十六进制数的转换功能。
*/
#include "seqstack.h"
#include "stdio.h"
/*请将本函数补充完整,并进行测试*/
void Dto16(int m)
{
   seqstack s;
   init(&s);
   printf("十进制数%d对应的十六进制数是:",m);
   while(m)
   {
      
   }
   while(!empty(&s))
    putchar(   );
   printf("\n");
}
int main()
{    int m;
     printf("请输入待转换的十进制数:\n");
     scanf("%u",&m);
     Dto16(m);
     return 0;
}
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100
typedef int datatype;
typedef struct
{       datatype  a[MAXSIZE];
        int top;
}seqstack;
/**********************************/
/*函数名称:init()                 */
/*函数功能:初始化空栈             */
/**********************************/
void init(seqstack *st)
{
    st->top=0;
}
/**********************************/
/*函数名称:empty()                    */
/*函数功能:判断栈是否为空        */
/**********************************/
int empty(seqstack *st)
{
    return st->top?0:1;
}
/**********************************/
/*函数名称:read()                      */
/*函数功能:读栈顶元                    */
/**********************************/
datatype read(seqstack *st)
{   if (empty(st))
        {  printf("\n栈的空的!\n");exit(1);
        }
    else
        return st->a[st->top-1];
}
/**********************************/
/*函数名称:push()                      */
/*函数功能:进栈                        */
/**********************************/
void push(seqstack *st,datatype x)
{   if (st->top==MAXSIZE)
    {
        printf("栈满,无法进栈!\n");
        exit(1);
    }
    st->a[st->top]=x;
    st->top++;
}
/**********************************/
/*函数名称:pop()                      */
/*函数功能:出栈                        */
/**********************************/
datatype  pop(seqstack *st)
{   if (st->top==0)
        {   printf("\n顺序栈是空的!\n");
            exit(1);
        }
    st->top--;
}
搜索更多相关主题的帖子:  函数 int printf top 
2018-03-17 00:51
a451410
Rank: 2
等 级:论坛游民
帖 子:34
专家分:48
注 册:2018-3-4
得分:20 
太长不看
2018-03-17 23:09
a1286643057
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2018-3-17
得分:0 
回复 2楼 a451410
下面是定义的头文件,题目在上面,题目篇幅很短的,有劳了
2018-03-20 18:37
word123
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:13
帖 子:333
专家分:1622
注 册:2014-4-5
得分:0 
/*
利用顺序栈结构,编写算法函数void Dto16(unsigned int m)实现十进制无符号整数m到十六进制数的转换功能。
*/
#include "stdio.h"

#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100
typedef int datatype;
typedef struct
{       datatype  a[MAXSIZE];
        int top;
}seqstack;


//-----------------------------------函数声明------------------------------
void init(seqstack *st);
int empty(seqstack *st);
datatype read(seqstack *st);
void push(seqstack *st,datatype x);
datatype  pop(seqstack *st);
void Dto16(int m);
char map[16] = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};

/*请将本函数补充完整,并进行测试*/
void Dto16(int m)
{
   seqstack s;
   init(&s);

   printf("十进制数%d对应的十六进制数是:",m);
   while(m)
   {
       push(&s , m%16);      //------------------------每次取余数放入栈,和你笔算的方式一样,先进后出
       m/=16;
   }
   while(!empty(&s))
       putchar(map[pop(&s)]);        //----------------------映射表,直接将数字映射到字符
   printf("\n");
}
int main()
{    int m;
     printf("请输入待转换的十进制数:\n");
     scanf("%u",&m);
     Dto16(m);
     return 0;
}

/**********************************/
/*函数名称:init()                 */
/*函数功能:初始化空栈             */
/**********************************/
void init(seqstack *st)
{
    st->top=0;
}
/**********************************/
/*函数名称:empty()                    */
/*函数功能:判断栈是否为空        */
/**********************************/
int empty(seqstack *st)
{
    return st->top?0:1;
}
/**********************************/
/*函数名称:read()                      */
/*函数功能:读栈顶元                    */
/**********************************/
datatype read(seqstack *st)
{   if (empty(st))
        {  printf("\n栈的空的!\n");exit(1);
        }
    else
        return st->a[st->top-1];
}
/**********************************/
/*函数名称:push()                      */
/*函数功能:进栈                        */
/**********************************/
void push(seqstack *st,datatype x)
{   if (st->top==MAXSIZE)
    {
        printf("栈满,无法进栈!\n");
        exit(1);
    }
    st->a[st->top]=x;
    st->top++;
}
/**********************************/
/*函数名称:pop()                      */
/*函数功能:出栈                        */
/**********************************/
datatype  pop(seqstack *st)
{   if (st->top==0)
        {   printf("\n顺序栈是空的!\n");
            exit(1);
        }
    int data = st->a[st->top-1];
    st->top--;
    return data;                   //---------------------------返回栈顶元素
}
2018-03-20 19:00
a1286643057
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2018-3-17
得分:0 
回复 4楼 word123
有劳了,十分感谢
2018-04-10 14:03



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-485337-1-1.html




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

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