鱼C论坛

 找回密码
 立即注册
查看: 1208|回复: 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那里==写成=了
  1. //本次作业目的:将十进制的数转化为二进制,八进制或十六进制
  2. #include <stdio.h>
  3. typedef struct
  4. {
  5.         int A[10];
  6.         int top;
  7. }stack;
  8. void iniStack(stack *S);//初始化栈
  9. int Push(stack *S, int  x);//压栈
  10. int Pop(stack *S, int *x);//出栈
  11. int EmptyStack(stack *S);//判栈空
  12. void DecToOthers(int n, int b);//进行进制间的转换

  13. int main()
  14. {
  15.         int i ,j;
  16.         printf("请输入一个十进制的数字:");
  17.         scanf("%d", &i);
  18.         DecToOthers(i, 2);
  19.         return 0;
  20. }
  21. void iniStack(stack *S)//初始化栈
  22. {
  23.         S->top = -1;
  24. }
  25. int Push(stack *S, int  x)//压栈
  26. {
  27.         if (S->top == 9)
  28.         {
  29.                 printf("栈中的数据已经满了\n");
  30.                 return 0;
  31.         }
  32.         S->top++;
  33.         S->A[S->top] = x;
  34.         return 1;
  35. }
  36. int Pop(stack *S, int *x)//出栈
  37. {
  38.         if (EmptyStack(S))
  39.         {
  40.                 printf("栈是空的");
  41.                 return 0;
  42.         }
  43.         else
  44.         {
  45.                 x = S->A[S->top];
  46.                 S->top--;
  47.                 return 1;
  48.         }
  49. }
  50. int EmptyStack(stack *S)//判栈空
  51. {
  52.         return(S->top == -1);
  53. }
  54. void DecToOthers(int n, int b)//进行进制间的转换
  55. {
  56.         char M[] = "abcdefg";
  57.         stack Z;
  58.         int x ,i;
  59.         iniStack(&Z);
  60.         while (n)
  61.         {
  62.                 Push(&Z, n%b);
  63.                 if (n > 9)
  64.                 {
  65.                         i = n - 9;
  66.                         n = M[i - 1];
  67.                 }
  68.                 n = n/b;
  69.         }
  70.         while (EmptyStack(&Z))
  71.         {
  72.                 Pop(&Z, &x);
  73.                 printf("%d", x);
  74.         }
  75. }
复制代码

还有问题,我继续改改
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-5-15 20:11:01 | 显示全部楼层
请 不 要 重 复 发 帖
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

可是不重复发帖,根本就没人理
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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


没人理也不能重复发帖,但你可以换个论坛问问
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

  13. int main()
  14. {
  15.         int i ,j;
  16.         printf("请输入一个十进制的数字:");
  17.         scanf("%d", &i);
  18.         DecToOthers(i, 2);
  19.         return 0;
  20. }
  21. void iniStack(stack *S)//初始化栈
  22. {
  23.         S->top = -1;
  24. }
  25. int Push(stack *S, int  x)//压栈
  26. {
  27.         if (S->top == 9)
  28.         {
  29.                 printf("栈中的数据已经满了\n");
  30.                 return 0;
  31.         }
  32.         S->top++;
  33.         S->A[S->top] = x;
  34.         return 1;
  35. }
  36. int Pop(stack *S, int *x)//出栈
  37. {
  38.         if (EmptyStack(S))
  39.         {
  40.                 printf("栈是空的");
  41.                 return 0;
  42.         }
  43.         else
  44.         {
  45.                 x = S->A[S->top];
  46.                 S->top--;
  47.                 return 1;
  48.         }
  49. }
  50. int EmptyStack(stack *S)//判栈空
  51. {
  52.         return(S->top == -1);
  53. }
  54. void DecToOthers(int n, int b)//进行进制间的转换
  55. {
  56.         char M[] = "abcdefg";
  57.         stack Z;
  58.         int x ,i;
  59.         iniStack(&Z);
  60.         while (n)
  61.         {
  62.                 Push(&Z, n%b);
  63.                 if (n > 9)
  64.                 {
  65.                         i = n - 9;
  66.                         n = M[i - 1];
  67.                 }
  68.                 n = n/b;
  69.         }
  70.         while (EmptyStack(&Z))
  71.         {
  72.                 Pop(&Z, &x);
  73.                 printf("%d", x);
  74.         }
  75. }
复制代码

还有问题,我继续改改
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

大哥还有输出的地方有错误少个!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

怎么进行转化为十六进制的运算
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-3 09:04

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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