我为课程编写了这个程序,我似乎无法让while循环工作..我不知道我错在哪里,这可能是一个小错误,我知道我做了很多...谢谢! PS我对这些东西很陌生,所以如果它很小的话,对我来说很容易:P
#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 = %d\n", 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);
}
/*
*/
答案 0 :(得分:1)
第1期&gt;&gt; while (! == 0)
如果要无条件循环,请使用while (1)
和switch
内部情况,添加一个默认(或编号)大小写,以保持循环的break
语句。< / p>
第2期&gt;&gt; switch (input)
您似乎计划要求用户输入,但您没有为此编码。在基于输入值切换之前,您需要从用户获取值并存储到input
变量中。利用scanf()
功能。有关详细信息,请阅读man page。
答案 1 :(得分:0)
这个while循环是完全错误的......你正在使用switch case进行输入...... 输入 = 0总是......你没有做scanf到获取输入值...如果 输入 没有改变,将如何调用其他函数?....