題目描述:
編寫一個C++程序, 建立整數(shù)向量V、整數(shù)隊列Q、整數(shù)棧S1、S2;輸入若干整數(shù), 0作為輸入結(jié)束; 將負(fù)整數(shù)依次保存在向量V中;將正整數(shù)中的素數(shù)保存在隊列Q中; 將正整數(shù)中的偶數(shù)保存在棧S1中; 將正整數(shù)中的奇數(shù)保存在棧S2中;最后依次分別將保存在V、Q、S1、S2容器中的整數(shù)輸出,以’\t’作為分隔; 每個容器中整數(shù)輸出后換行。
輸入描述:
輸入若干整數(shù), 0作為輸入結(jié)束;
輸出描述:
每個容器中整數(shù)輸出后換行。向量容器按順序輸出,隊列按出隊列次序輸出,棧按出棧次序輸出
輸入樣例:
2 5 8 -2 -4 10 -6 9 11 0
輸出樣例:
-2 -4 -6
2 5 11
10 8 2
11 9 5
——————————————————————————————————————
分析:
隊列,向量和棧的基本應(yīng)用
代碼:
#include <iostream>
#include <vector>
#include <queue>
#include <stack>
using namespace std;
bool prime(int n)
{
if (n < 2) return false;
for (int i=2;i<n/2;i++)
if ((n%i)==0) return false;
return true;
}
int main()
{
vector<int> V;
queue<int> Q;
stack<int> S1, S2;
int parameter;
cin >> parameter;
while ( parameter!=0 )
{
//負(fù)數(shù)
if (parameter < 0)
V.push_back(parameter);
//正數(shù)
else
{
//素數(shù)
if (prime(parameter))
Q.push(parameter);
((parameter%2) == 1) ? S2.push(parameter) : S1.push(parameter) ;
}
cin >> parameter;
}
for(int i =0;i < (int)V.size();i++)
cout << V[i] << "\t";
cout << endl;
while(!Q.empty())
{
cout << Q.front() << "\t";
Q.pop();
}
cout << endl;
while(!S1.empty())
{
cout << S1.top() << "\t";
S1.pop();
}
cout << endl;
while(!S2.empty())
{
cout << S2.top() << "\t";
S2.pop();
}
cout << endl;
return 0;
}