练习1-24 编写一个程序,查找C语言程序中的基本语法错误,如圆括号、方括号、花括号不配对等
来源:互联网 发布:java在线客服系统 编辑:程序博客网 时间:2024/04/28 15:23
错误程序:
#include <stdio.h>int checkbrackets(int c);main(){ int c,checkstate; while((c=getchar())!=EOF){ checkstate=checkbrackets(c); } if(checkstate==0){ printf("brackets is lost"); } else printf("right");}int checkbrackets(int c){ int d,cbal,checkstate; checkstate=1; if(c=='{'||c=='('||c=='['){ if(c=='('){ cbal=c+1; } else cbal=c+2; while((d=getchar())!=cbal && d!=EOF){ if(d=='{'||c=='('||c=='[') checkbrackets(d); } if(d!=cbal) checkstate=0; } return checkstate;}
测试:
input: {[[]]}()output: rightinput: {[}[}]output: right
递归时内部返回过0,但最外部返回的是1,致使出错。错误修正:
#include <stdio.h>void checkbrackets(int c);main(){ int c; while((c=getchar())!=EOF){ checkbrackets(c); }}void checkbrackets(int c){ int d,cbal; if(c=='{'||c=='('||c=='['){ if(c=='('){ cbal=c+1; } else cbal=c+2; while((d=getchar())!=cbal && d!=EOF){ putchar(c); /*测试语句*/ if(d=='{'||c=='('||c=='[') checkbrackets(d); } if(d!=cbal){ printf("brackets is lost\n"); } else{ putchar(cbal); putchar(d); /*测试语句*/ printf(" right\n"); } }}
测试:
input: {[}[)]output: }} right : ]] rightinput: {[}(])output: }} right : )) right
理解递归的好例子,本以为先输出 “]] right ” ,结果并不是(其实是的,错误导致)。正确修正:
#include <stdio.h>void checkbrackets(int c);main(){ int c; while((c=getchar())!=EOF){ checkbrackets(c); }}void checkbrackets(int c){ int d,cbal; if(c=='{'||c=='('||c=='['){ if(c=='('){ cbal=c+1; } else cbal=c+2; while((d=getchar())!=cbal && d!=EOF){ putchar(d); /*理解递归调用*/ if(d=='{'||d=='('||d=='[') /*纠正所在,简直令人崩溃*/ checkbrackets(d); } if(d!=cbal){ printf("brackets is lost\n"); } else{ //putchar(cbal); //putchar(d); /*测试语句*/ printf(" right\n"); } }}
答案所给程序存在一点bug,如以下输入不报错。
input: {[}]
0 0
- 练习1-24 编写一个程序,查找C语言程序中的基本语法错误,如圆括号、方括号、花括号不配对等
- 编写一个程序,查找C语言中的基本语法错误,如圆括号、方括号、花括号不配对等,正确处理引号与注释
- 查找C语言中的基本语法错误,如圆括号,左括号,花括号不匹配等
- 利用栈写一个程序, 检验文本中的圆括号、方括号、花括号是否正确嵌套.
- 查找C语言中基本语法错误,如小括号,中括号,大括号,单引号,双引号
- 假设一个数学算法中包括圆括号(),方括号[],花括号{}三种类型,编写表达式的括号是否配对
- 查找c语言程序中基本的语法错误
- 括号配对:假设一个数学算式中包括圆括号"()",方括号”[]"和花括号“{}”三种类型,编写一算法判断表达式的括号是否配对。
- 检验某符号(如圆括号,方括号,花括号等)是否都成对出现
- C程序设计语言练习1-23 编写一个删除C语言程序中所有的注释语句
- 假设表达式中包含三种括号 圆括号方括号大括号 设计一个算法用顺序栈判断表达式中的括号是否正确配对
- 用C语言编写一个包含链表的初始化、插入、删除、查找等基本操作的程序。
- C语言练习之程序编写
- C语言:折半查找的程序编写
- 编写一个删除c语言中的注释语句/* */的程序
- 编写C语言程序 输出一个菱形
- c语言中,如何用多个文件编写程序
- 如何用VisualStudio2013、VisualStudioTools命令行 编写C语言程序
- windows pycaffe编译
- 罕见的组播环路
- springmvc 带文件和数据的表单后台接收与分析
- 大图片的压缩处理
- caffe mean file:npy
- 练习1-24 编写一个程序,查找C语言程序中的基本语法错误,如圆括号、方括号、花括号不配对等
- Python 中的 map() reduce()
- caffe:图像数据 lmdb的写入和读出
- 时间序列分析
- 机器学习十大算法
- Python 中的 filter()
- 数据特征分析
- java学习道路上的一些经验之谈
- mysql自定义函数random_str,产生随机字符串