复习一下,都荒废一年了。写两个很水的程序。
1.十进制转换为二进制:
#include <cstdio>
#include <stack>
using namespace std;
int main()
{
stack<int> S;
int DecNum=0;
scanf("%d",&DecNum);//输入一个十进制数
int r=1;
while(r!=0)
{
r=DecNum/2;
S.push(DecNum%2);
DecNum/=2;
}
while(S.empty()==0)
{
printf( "%d", S.top( ) );
S.pop();
}
return 0;
}
2. 括号匹配
判断括号是否匹配的方法:依次读入每个括号,
如果是左括号,则压入栈中;如果是
右括号,则
判断栈顶元素是否是与之匹配的左括号,如果是,则
弹出该左括号,如果
不是或者栈为空,则可以判定
括号不匹配。
#include <cstdio>
#include <stack>
using namespace std;
int main()
{
stack<int> S;
char str[100];
scanf("%s",str);//输入一系列括号
int sign=0;
for(int i=0;i<sizeof(str);i++)
{
if(str[i]=='(')
S.push(str[i]);
if(str[i]==')')
{
if(S.empty()==1)
{
printf("no");
sign=1;
break;
}
else if(S.top()=='(')
S.pop();
else
{
printf("no");
sign=1;
break;
}
}
}
if(sign==0)
{
if(S.empty()==1) printf("yes");
else printf("no");
}
return 0;
}
}