开发环境: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();
}