问题:编写一个C++程序, 建立整数向量V、整数队列Q、整数栈S1、S2;输入若干整数, 0作为输入结束; 将负整数依次保存在向量V中;将正整数中的素数保存在队列Q中; 将正整数中的偶数保存在栈S1中; 将正整数中的奇数保存在栈S2中;最后依次分别将保存在V、Q、S1、S2容器中的整数输出,以’\t’作为分隔; 每个容器中整数输出后换行。
输入格式:
输入若干整数, 0作为输入结束。
输出格式:
每个容器中整数输出后换行。向量容器按顺序输出,队列按出队列次序输出,栈按出栈次序输出
输入样例:
2 5 8 -2 -4 10 -6 9 11 0
输出样例:
在这里给出相应的输出。例如:
-2 -4 -6
2 5 11
10 8 2
11 9 5
代码长度限制
100 KB
时间限制
400 ms
内存限制
400 MB
栈限制
8192 KB
代码:
#include <iostream>
#include <vector>
#include <queue>
#include <stack>
#include <cmath>
using namespace std;
bool isPrime(int num) {
if (num <= 1) return false;
if (num <= 3) return true;
if (num % 2 == 0 || num % 3 == 0) return false;
for (int i = 5; i * i <= num; i += 6) {
if (num % i == 0 || num % (i + 2) == 0)
return false;
}
return true;
}
int main() {
vector<int> V;
queue<int> Q;
stack<int> S1, S2;
int num;
// 输入若干整数,0作为输入结束
cout << " " << endl;
while (cin >> num && num != 0) {
if (num < 0) {
V.push_back(num); // 负数保存在向量V中
} else {
if (isPrime(num)) {
Q.push(num); // 素数保存在队列Q中
}
if (num % 2 == 0) {
S1.push(num); // 偶数保存在栈S1中
} else {
S2.push(num); // 奇数保存在栈S2中
}
}
}
// 输出向量V
for (size_t i = 0; i < V.size(); ++i) {
cout << V[i];
if (i < V.size() - 1) {
cout << "\t";
}
}
cout << endl;
// 输出队列Q
while (!Q.empty()) {
cout << Q.front();
Q.pop();
if (!Q.empty()) {
cout << "\t";
}
}
cout << endl;
// 输出栈S1
while (!S1.empty()) {
cout << S1.top();
S1.pop();
if (!S1.empty()) {
cout << "\t";
}
}
cout << endl;
// 输出栈S2
while (!S2.empty()) {
cout << S2.top();
S2.pop();
if (!S2.empty()) {
cout << "\t";
}
}
cout << endl;
return 0;
}
不知道为什么在PTA上会显示格式错误,想问问应该怎么改呀
