nihbf 2024-04-29 00:28 采纳率: 8.3%
浏览 2

C++编程:代码修改询问

问题:编写一个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上会显示格式错误,想问问应该怎么改呀

  • 写回答

8条回答 默认 最新

  • 关注

    可能的几个原因:
    1.你的代码中,在while读取前,多了一行 cout << " " << endl;,这一行删掉后试试是否能通过。

    img

    2.题目中没有说明向量、队列、栈为空时是否需要输出空行,如果按照方法1修改后仍然不通过,就在输出每个容器前先判断一下是否为空,如果为空就不输出换行。

    猜测很大概率是因为1的原因!!!

    如果还不行,把题目链接发我一下,我测试一下。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 4月29日