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

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;
        }
    
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 公交车和无人机协同运输
  • ¥15 stm32代码移植没反应
  • ¥15 matlab基于pde算法图像修复,为什么只能对示例图像有效
  • ¥100 连续两帧图像高速减法
  • ¥15 组策略中的计算机配置策略无法下发
  • ¥15 如何绘制动力学系统的相图
  • ¥15 对接wps接口实现获取元数据
  • ¥20 给自己本科IT专业毕业的妹m找个实习工作
  • ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
  • ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)