试设计一个算法,建立一个学生成绩栈要求从键盘上输入法 N 个整数,按照下列要求分别进入不同栈,并分别输出每个栈的内容。
(1) 若输入的整数 x 小于 60 ,则进入第一个栈;
(2) 若输入的整数 x 大于等于 60 ,小于 100 ,则进入第二个栈;
(3) 若输入的整数 x 大于等于 100 ,则进入第三个栈;
测试用例1
6↵
34 67 78 90 99 100↵
期待输出1
60>x:34 ↵
60<=x<100:67 78 90 99 ↵
x>=100:100 ↵
#include <iostream>
#include <stack>
using namespace std;
void IntoStack(stack<int> &s, int num);
int main()
{
int N;
cin >> N;
stack<int> stack1;
stack<int> stack2;
stack<int> stack3;
for (int i=0; i<N; i++)
{
int tmp;
cin >> tmp;
if(tmp < 60)
{
IntoStack(stack1, tmp);
}
if(tmp >= 60 && tmp<100)
{
IntoStack(stack2, tmp);
}
if(tmp >= 100)
{
IntoStack(stack3, tmp);
}
}
cout<<"60>x:";
while(!stack1.empty())
{
cout<<stack1.top()<<" ";
stack1.pop();
}
cout<<endl;
cout<<"60<=x<100:";
while(!stack2.empty())
{
cout<<stack2.top()<<" ";
stack2.pop();
}
cout<<endl;
cout<<"x>=100:";
while(!stack3.empty())
{
cout<<stack3.top()<<" ";
stack3.pop();
}
cout<<endl;
return 0;
}
void IntoStack(stack<int> &s, int num)
{
stack<int> stmp;
while(!s.empty())
{
stmp.push(s.top());
s.pop();
}
s.push(num);
while(!stmp.empty())
{
s.push(stmp.top());
stmp.pop();
}
}