具有Stack且具有int和char的C程序

时间:2019-04-30 13:32:58

标签: c

我有一个家庭作业要做,问题是这样的: 从用户那里接收最多20个整数并将其推入堆栈(静态堆栈),方法是按键盘上的'o',堆栈以相反的顺序弹出数字。 提示(来自我的老师):从堆栈中逐个弹出数字。

我的问题是该程序在输入时用'o'进行反向打印。 如果我输入一个两位数的数字,它也会以相反的顺序打印他。例如:67 ---> 76。

我尝试了到目前为止所知道的一切,甚至向二年级学生寻求他们无法提供的帮助。所以我在这里检查我的代码出了什么问题。

我的主要人:

int i , x = 0 ,count = 0; 
    stack s1;
    stack_init(&s1);

    printf("Please enter numbers: \n");
    scanf_s("%c", &x);
    while(x != 'o' )
    {
        scanf_s("%c", &x);
        stack_push(&s1, x);
        count++;
    }
    for (i = 0; i < count; i++)
    {
        printf("%c", stack_pop(&s1));
    }

1 个答案:

答案 0 :(得分:3)

您的问题是操作顺序:您总是在读取输入后立即将其推入堆栈。之后,您才测试用户是否输入了'o'。反转循环中的操作顺序即可解决此问题:

for (;;) {
    // read input
    // test if input is "o" and exit loop
    // convert input to number and push onto stack.
}

此外,我建议从输入中读取字符串而不是字符。这样,用户可以正确输入多位数的数字。