鱼C论坛

 找回密码
 立即注册
查看: 4926|回复: 3

[已解决]我想知道为什么我出栈的元素永远是1,实在没找到bug,学渣卑微求助大神

[复制链接]
发表于 2021-4-26 14:23:35 | 显示全部楼层 |阅读模式

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

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

x
以下为源代码,我是按照书里把用到的栈函数一个个打出来的~
#include <stdio.h>
using namespace std;
#define maxsize 100
typedef int elemtype;
int x;
typedef struct
{
        elemtype elem[maxsize];
        int top;
}Stack;
void InitStack(Stack *s)
{ s->top=0;
}
elemtype Push(Stack *s,elemtype x)
{
        if(s->top==maxsize)
        printf("Overflow");
        else
        s->elem[s->top++]=x;
}
elemtype Pop(Stack *s)
{if(s->top==0)
        return NULL;
        else
        {
                s->top--;
                return s->elem[s->top];
        }
}
elemtype StackEmpty(Stack *s)
{
        if(s->top>0)
        return 0;
        else
        return 1;
}
int main()
{
        Stack s;
        InitStack(&s);
        printf("请输入不为0的数,进栈\n");
        do {
        Push(&s,scanf("%d",&x));        
}

        while (x!=0);
    while(!StackEmpty(&s))
        printf("%d\t",Pop(&s));  
}
求大神指正!
最佳答案
2021-5-3 22:24:37
scanf 的返回值并不是输入进去的值,scanf函数是c语言当中非常重要的格式化输入函数

其函数原型为:int scanf(const char *format, ...);

其函数返回值:成功格式化解析的个数

其调用格式为:scanf("<格式化字符串>", <参量表>);
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-4-26 15:28:37 | 显示全部楼层
                        scanf("%d",&x);
        Push(&s, x);     
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-26 15:41:18 From FishC Mobile | 显示全部楼层
看不懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-3 22:24:37 | 显示全部楼层    本楼为最佳答案   
scanf 的返回值并不是输入进去的值,scanf函数是c语言当中非常重要的格式化输入函数

其函数原型为:int scanf(const char *format, ...);

其函数返回值:成功格式化解析的个数

其调用格式为:scanf("<格式化字符串>", <参量表>);
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-22 08:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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