C-对此表示困惑



我为课堂编写了这个程序,我似乎无法完成工作。我做了很多...谢谢!PS我是新手的新手

#include <stdio.h>
#define STACK_SIZE 10
#define TRUE 1
#define FALSE 0
#define MAXNUM 5
/***************
prototypes
***************/
void make_empty(int *top);
int is_full(int *top);
int push(int content[], int maxnum, int newnum, int *top);
int pop(int contents[], int maxmun, int *top);
void printStack(int contents[], int maxnum, int *top);
int is_empty(int *top);
int search(const int content[], int maxnum, int num);
// main function
int main(void)
{
    int popNum = 0;
    int foundIndex = -1;
    int i;
    int contents[STACK_SIZE] = { 0 };
    int top = 0;
    int input = 0;

    while (! == 0)
    {
        printf("/n/nPick a number from 1 to 5, type the number then press enter: ");
        switch (input)
        {
        case 1:
            push(contents, MAXNUM, popNum, &top);
            break;
        case 2:
            if (pop(contents, MAXNUM, &top) <= 0)
                printf("Error popping stack n");
            break;
        case 3:
            make_empty(&top);
            break;
        case 4:
            printStack(contents, MAXNUM, &top);
        }//End Loop Switch
    }
} // end main()
/******************************************
**
** make_empty function **
**
******************************************/
void make_empty(int *top)
{
    *top = 0;
}
/******************************************
**
** is_empty function **
**
******************************************/
int is_empty(int *top)
{
    if (*top == 0)
        return TRUE;
    else
        return FALSE;
}
/******************************************
**
** is_full function **
**
******************************************/
int is_full(int *top)
{
    static int nCalls = 0; // static variable
    nCalls++;
    if (*top == STACK_SIZE)
        return TRUE;
    else
        return FALSE;
}
/******************************************
**
** push function **
**
******************************************/
int push(int content[], int maxnum, int newnum, int *top)
{
    int nCalls = 0;
    nCalls++;
    if (is_full(top))
        return FALSE;
    else
        content[(*top)++] = newnum;
}
/******************************************
**
** pop function **
**
******************************************/
int pop(int contents[], int maxmun, int *top)
{
    if (is_empty(top))
        return FALSE;
    else
        return contents[--(*top)];
}
/*******************************
**
** printStack fuction **
**
******************************/
void printStack(int contents[], int maxnum, int *top)
{
    int i;
    if (!is_empty(top))
    {
        for (i = 0; i < *top; i++)
            printf("Number %d = %dn", i, contents[i]);
    }
    else
        printf("Stack is empty");
}
/*******************************
**
** search function **
**
******************************/
int search(const int content[], int maxnum, int num)
{
    int fIndex = -1;
    for (int i = 0; i < maxnum; i++)
    {
        if (content[i] == num)
        {
            fIndex = i;
            break;
        }
    }
    return (fIndex);
}
/*


*/

问题1 >> while (! == 0)

如果要无条件地循环,请使用while (1),然后在switch案例中,添加默认情况(或编号)案例以保存break语句以进行循环。

问题2 >> switch (input)

似乎是为了索取用户输入的计划,但是您没有为此进行编码。在基于输入值的切换之前,您需要从用户获取值并将存储在input变量中。使用scanf()功能。阅读MAN页面以获取详细信息。

while loop都是错误的...您正在使用开关案例进行输入...和 input = 0总是。..您不是在执行SCANF来获取输入值...如果 input do not Change?....

相关内容

  • 没有找到相关文章