进制转换目标效果:
进制转换功能代码:
//数制转换程序
void Conversion()
{
// TODO (#1#): 这里实现数制转换程序
printf("请输入十进制数:");
scanf("%d",&n);
while(n)
{
Push(s,n%8);
n/=8;
}
printf("\n该十进制对应的八进制数为:");
while(!StackEmpty(s))
{
Pop(s,x);
printf("%d",x);
}
printf("\n");
}
括号匹配目标效果:
括号匹配功能代码:
//检验括号匹配
void Match()
{
// TODO (#1#): 这里实现检验括号匹配的程序
printf("\n\n请输入括号表达式:");
char c_array[20];
int i=0;
scanf("%s",c_array);
int l=strlen(c_array); //求字符数组长度
while(i<l&&i>=0)
{
switch(c_array[i])
{
case '{':
case '[':
case '(':
Push(s,c_array[i]); //左括号入栈
break;
case '}':
Pop(s,x);
if(x!='{')
{
printf("\n匹配失败");
i=-2;
}
break;
case ']':
Pop(s,x);
if(x!='[')
{
printf("\n匹配失败");
i=-2;
}
break;
case ')':
Pop(s,x);
if(x!='(')
{
printf("\n匹配失败");
i=-2;
}
break;
}
i++;
}
if(i>0)
printf("\n匹配成功");
}
源码链接:
点击打开链接
注意:
1.这里没有贴具体对栈操作的代码,是因为代码和上一篇博文栈操作的代码一样。
2.加一个小插曲,这里的括号匹配是英文括号匹配,中文括号会有乱码等问题,别问我怎么知道的,一脸懵逼.jpg。
3.源码中两个功能一起运行的,所以括号匹配输入字符串使用了scanf,使用gets会出现问题(上边进制转换带来的问题),但是如果单独作为一个功能时,gets也能正确运行。