我为课堂编写了这个程序,我似乎无法完成工作。我做了很多...谢谢!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?....