开发环境:Microsoft Visual C++ 6.0
解题思路:通过对输入的字符判断,进行检测所得到的括号种类,和其匹配程度。通过得到的字符做预判,在显示到屏幕上,避免异常出现,后两题由于时间问题并没有找到合适的解决方法。
主要算法:通过c来得到键盘输入的字符,进行判断是否合法,i的值来判断是否是相邻括号,t来记录相邻括号的个数,count来记录当前的嵌套数,k来记录最大的嵌套数,n来记录括号的对数。
核心代码:
- while( 1 )
- {
- c = getch();
- if ( c == '(' )
- {
- i = 1;
- count++;
- printf("(");
- }
- else if ( count > 0 && c == ')' )
- {
- printf(")");
- t += i;
- i = 0;
- k=k > count?k:count;
- count--;
- n++;
- }
- else if ( c == '\r'|| c=='\n' )
- goto end;
- }
总结:由于时间问题并未将后面两题写完,时间如果充裕应该可以完成。
压缩包下载: 括号嵌套程序
----------------------------------------以下是源码------------------------------------
- #include "stdio.h"
- void main()
- {
- int count = 0, k = 1,n = 0,t = 0,i = 0;
- char c;
- printf("请输入括号:");
- while( 1 )
- {
- c = getch();
- if ( c == '(' )
- {
- i = 1;
- count++;
- printf("(");
- }
- else if ( count > 0 && c == ')' )
- {
- printf(")");
- t += i;
- i = 0;
- k=k > count?k:count;
- count--;
- n++;
- }
- else if ( c == '\r'|| c=='\n' )
- goto end;
- }
- end: printf("\n括号对数%d,深度%d,直接相邻%d\n",n,k,t);
- getch();
- }