沐沐Mnn
2019-04-28 12:00
采纳率: 72.7%
浏览 692

C++编程填空:正向与反向输出

描述

输入一个的序列,首先输出原序列,每个元素之间以"---"分开

再将序列的每个元素翻倍,并逆序输出原序列,每个元素之间以"***"分开。
#include <cstring>
#include <cstdlib>
#include <string>
#include <iostream>
#include <vector>
#include <iterator>
using namespace std;
class C1{
// 在此处补充你的代码
};

int main()
{
    vector<int> v;
    int p;
    int size;
    int k;
    cin >> k;
    while(k--){
        cin >> size;
        v.clear();
        for(int i = 0; i < size; ++i){
            cin >> p;
            v.push_back(p);
        }
        C1 o1 = C1(size,v);
        ostream_iterator<int> it(cout,"---");
        copy(*o1, (*o1)+size, it);
        cout<<endl;
        for(int i = 0; i < size; ++i){
            o1[i]*=2;
            cout<<o1[i]<<"***";
        }
        cout<<endl;
    }

}
输入
第一行是测试数据组数k。
对于每组测试数据,先输入
测试数据共有k组,每组首先输入序列长度n,接下来n个整数分别代表序列的n个数。
输出
对于每组测试数据输出两行,分别是以"---"分割的原序列,和以"***"分割的翻倍后的逆序序列。

样例输入

1
10
1 2 3 4 5 6 7 8 9 10

样例输出

1---2---3---4---5---6---7---8---9---10---
20***18***16***14***12***10***8***6***4***2***

http://cxsjsx.openjudge.cn/2018midexamcloze/6/

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • threenewbee 2019-04-28 13:51
    已采纳
    // Q759046.cpp : Defines the entry point for the console application.
    //
    
    #include "stdafx.h"
    
    
    #include <cstring>
    #include <cstdlib>
    #include <string>
    #include <iostream>
    #include <vector>
    #include <iterator>
    using namespace std;
    class C1{
    // 在此处补充你的代码
    public:
        C1(int size, vector<int> v)
        {
            _size = size;
            _v = v;
            _re = 1;
        }
    
        int & operator[](int i)
        {
            return _v[i];
        }
    
        const int* operator * ()
        {
            if (_re)
            {
                std::reverse(_v.begin(), _v.end()); 
                _re = 0;
            }
            return &_v[0];
        }
    
    private:
        int _re;
        int _size;
        vector<int> _v;
    };
    
    int main()
    {
        vector<int> v;
        int p;
        int size;
        int k;
        cin >> k;
        while(k--){
            cin >> size;
            v.clear();
            for(int i = 0; i < size; ++i){
                cin >> p;
                v.push_back(p);
            }
            C1 o1 = C1(size,v);
            ostream_iterator<int> it(cout,"---");
            copy(*o1, (*o1)+size, it);
            cout<<endl;
            for(int i = 0; i < size; ++i){
                o1[i]*=2;
                cout<<o1[i]<<"***";
            }
            cout<<endl;
        }
    
    }
    
    
    已采纳该答案
    打赏 评论

相关推荐 更多相似问题