鱼C论坛

 找回密码
 立即注册
查看: 926|回复: 6

[已解决]为什么只能得到栈已经满了???

[复制链接]
发表于 2020-5-15 20:08:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
//本次作业目的:将十进制的数转化为二进制,八进制或十六进制
#include <stdio.h>
typedef struct
{
        int A[10];
        int top;
}stack;
void iniStack(stack *S);//初始化栈
int Push(stack *S, int  x);//压栈
int Pop(stack *S, int *x);//出栈
int EmptyStack(stack *S);//判栈空
void DecToOthers(int n, int b);//进行进制间的转换

int main()
{
        int i ,j;
        printf("请输入一个十进制的数字:");
        scanf("%d", &i);
        DecToOthers(i, 2);
        return 0;
}
void iniStack(stack *S)//初始化栈
{
        S->top = -1;
}
int Push(stack *S, int  x)//压栈
{
        if (S->top = 9)
        {
                printf("栈中的数据已经满了\n");
                return 0;
        }
        S->top++;
        S->A[S->top] = x;
        return 1;
}
int Pop(stack *S, int *x)//出栈
{
        if (EmptyStack(S))
        {
                printf("栈是空的");
                return 0;
        }
        else
        {
                x = S->A[S->top];
                S->top--;
                return 1;
        }
}
int EmptyStack(stack *S)//判栈空
{
        return(S->top == -1);
}
void DecToOthers(int n, int b)//进行进制间的转换
{
        char M[] = "abcdefg";
        stack Z;
        int x ,i;
        iniStack(&Z);
        while (n)
        {
                Push(&Z, n%b);
                if (n > 9)
                {
                        i = n - 9;
                        n = M[i - 1];
                }
                n = n/b;
        }
        while (EmptyStack(&Z))
        {
                Pop(&Z, &x);
                printf("%d", x);
        }
}
最佳答案
2020-5-15 20:39:12
算了,帮你改了一下
原因是Push那里==写成=了
//本次作业目的:将十进制的数转化为二进制,八进制或十六进制
#include <stdio.h>
typedef struct
{
        int A[10];
        int top;
}stack;
void iniStack(stack *S);//初始化栈
int Push(stack *S, int  x);//压栈
int Pop(stack *S, int *x);//出栈
int EmptyStack(stack *S);//判栈空
void DecToOthers(int n, int b);//进行进制间的转换

int main()
{
        int i ,j;
        printf("请输入一个十进制的数字:");
        scanf("%d", &i);
        DecToOthers(i, 2);
        return 0;
}
void iniStack(stack *S)//初始化栈
{
        S->top = -1;
}
int Push(stack *S, int  x)//压栈
{
        if (S->top == 9)
        {
                printf("栈中的数据已经满了\n");
                return 0;
        }
        S->top++;
        S->A[S->top] = x;
        return 1;
}
int Pop(stack *S, int *x)//出栈
{
        if (EmptyStack(S))
        {
                printf("栈是空的");
                return 0;
        }
        else
        {
                x = S->A[S->top];
                S->top--;
                return 1;
        }
}
int EmptyStack(stack *S)//判栈空
{
        return(S->top == -1);
}
void DecToOthers(int n, int b)//进行进制间的转换
{
        char M[] = "abcdefg";
        stack Z;
        int x ,i;
        iniStack(&Z);
        while (n)
        {
                Push(&Z, n%b);
                if (n > 9)
                {
                        i = n - 9;
                        n = M[i - 1];
                }
                n = n/b;
        }
        while (EmptyStack(&Z))
        {
                Pop(&Z, &x);
                printf("%d", x);
        }
}
还有问题,我继续改改
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-15 20:11:01 | 显示全部楼层
请 不 要 重 复 发 帖
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-15 20:34:33 | 显示全部楼层
qiuyouzhi 发表于 2020-5-15 20:11
请 不 要 重 复 发 帖

可是不重复发帖,根本就没人理
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-15 20:35:53 | 显示全部楼层
本帖最后由 qiuyouzhi 于 2020-5-15 20:37 编辑
WFR 发表于 2020-5-15 20:34
可是不重复发帖,根本就没人理


没人理也不能重复发帖,但你可以换个论坛问问
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-15 20:39:12 | 显示全部楼层    本楼为最佳答案   
算了,帮你改了一下
原因是Push那里==写成=了
//本次作业目的:将十进制的数转化为二进制,八进制或十六进制
#include <stdio.h>
typedef struct
{
        int A[10];
        int top;
}stack;
void iniStack(stack *S);//初始化栈
int Push(stack *S, int  x);//压栈
int Pop(stack *S, int *x);//出栈
int EmptyStack(stack *S);//判栈空
void DecToOthers(int n, int b);//进行进制间的转换

int main()
{
        int i ,j;
        printf("请输入一个十进制的数字:");
        scanf("%d", &i);
        DecToOthers(i, 2);
        return 0;
}
void iniStack(stack *S)//初始化栈
{
        S->top = -1;
}
int Push(stack *S, int  x)//压栈
{
        if (S->top == 9)
        {
                printf("栈中的数据已经满了\n");
                return 0;
        }
        S->top++;
        S->A[S->top] = x;
        return 1;
}
int Pop(stack *S, int *x)//出栈
{
        if (EmptyStack(S))
        {
                printf("栈是空的");
                return 0;
        }
        else
        {
                x = S->A[S->top];
                S->top--;
                return 1;
        }
}
int EmptyStack(stack *S)//判栈空
{
        return(S->top == -1);
}
void DecToOthers(int n, int b)//进行进制间的转换
{
        char M[] = "abcdefg";
        stack Z;
        int x ,i;
        iniStack(&Z);
        while (n)
        {
                Push(&Z, n%b);
                if (n > 9)
                {
                        i = n - 9;
                        n = M[i - 1];
                }
                n = n/b;
        }
        while (EmptyStack(&Z))
        {
                Pop(&Z, &x);
                printf("%d", x);
        }
}
还有问题,我继续改改
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-15 20:48:10 | 显示全部楼层
qiuyouzhi 发表于 2020-5-15 20:39
算了,帮你改了一下
原因是Push那里==写成=了

大哥还有输出的地方有错误少个!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-15 21:03:24 | 显示全部楼层
WFR 发表于 2020-5-15 20:48
大哥还有输出的地方有错误少个!

怎么进行转化为十六进制的运算
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-14 02:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表