whyyouhitme_ 2018-03-22 08:37 采纳率: 57.1%
浏览 1337
已采纳

C语言程序设计现代方法K.N.KING第十章第一道编程题

修改书上的程序(片段):
#define STACK_SIZE 100
int contents[STACK_SIZE];
int top = 0;
void make_empty(void)
{
top = 0;
}
int is_empty(void)
{
return top==0;
}
int is_full(void)
{
return top==STACK_SIZE;
}
void push(int i)
{
if (is full()==STACK_SIZE)
stack_overflow();
else
contents[top++]=i;
}
int pop(void)
{
if (is_empty())
stack_underflow();
else
return contents [--top];
}

使得可以达到如下功能,要求用户输入一串圆括号或花括号,然后指出它们之间的嵌套是否正确:
Enter parenteses and/or braces:((){}{()})
parenteses and/or braces are nested properly
我对书上做了修改后如下,有三个警告,而且我觉得我的方法并不好。

#include
#define STACK_SIZE 100
char contents[STACK_SIZE];
int top = 0;
void make_empty(void)
{
top = 0;
}
int is_empty(void)
{
return top==0;
}
int is_full(void)
{
return top==STACK_SIZE;
}
void push(char i)
{
if (is_full()==STACK_SIZE)
stack_overflow();
else
contents[top++]=i;
}
char pop(void)
{
if (is_empty())
stack_underflow();
else
return contents [--top];
}

int main(void)
{
char ch;
int flag=0,flag1=0;
printf("Enter parenteses and/or braces:");
while(ch=getchar()!='\n'){
if(ch=='(' || ch=='{'){
void put(char ch);
}//压入ch进数组contents中
else if(ch==')' || ch=='}'){//如果输入是右括号的话,弹出栈顶以检测是否和输入的右括号配对
char pop(void);//弹出
if(contents[--top]=='('&&ch==')'||contents[--top]=='{'&&ch=='}')
flag=0;
else
flag++;
}
if(getchar()=='\n')
if(top==0)
flag1=0;
else
flag1++;
}
return 0;
}
警告如下:
D:\c\c\第十章程序结构\chapter10programming1.c(20) : warning C4013: 'stack_overflow' undefined; assuming extern returning int
D:\c\c\第十章程序结构\chapter10programming1.c(27) : warning C4013: 'stack_underflow' undefined; assuming extern returning int
D:\c\c\第十章程序结构\chapter10programming1.c(30) : warning C4715: 'pop' : not all control paths return a value

  • 写回答

3条回答 默认 最新

  • helpdoc 2018-03-23 03:00
    关注

    前两个警告就是没有定义函数实现,stack_overflow函数可以直接输出一句话提示栈满了并且exit(1)退出程序,stack_underflow可以输出一句提示空栈并且exit(1)退出程序。
    pop函数的警告是因为is_empty()控制块如果为true时没有return 语句,而pop函数是要求返回char类型值的。
    另外push函数is_full()函数返回的是0或者1所以不用和STACK_SIZE再次相等判断

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料