| 网站首页 | 业界新闻 | 小组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
ADSL如何秒变专线,公网IP盒子了解一下千里之行 始于足下
共有 913 人关注过本帖
标题:【求助】c++旗手问题
只看楼主 加入收藏
asdfaad
Rank: 1
来 自:重庆
等 级:新手上路
帖 子:25
专家分:0
注 册:2018-12-21
结帖率:57.14%
  问题点数:0  回复次数:4   
【求助】c++旗手问题
题目描述
导游常常都喜欢从所带的旅游团中选一个身高最高的游客,站在旅游团的前面拿旗帜,现在给定n个游客的身高(都是正整数),将身高最高的游客(如果最高的游客不唯一,那么选择最前面的那个)和第一个游客调换,再依次输出他们的身高。
输入
第一行n(1<=n<=10000)

第二行包含n个正整数,中间用空格隔开,表示n个游客的身高

输出
一行n个正整数,每两个数之间用空格隔开,表示调换后,各个位置上游客的身高
样例输入
6
160 155 170 175 172 164
样例输出
175 155 170 160 172 164
搜索更多相关主题的帖子: c++ 正整数 调换 输出 输入 
2019-02-10 20:42
Canvas
Rank: 2
等 级:论坛游民
威 望:1
帖 子:10
专家分:10
注 册:2019-2-13
  得分:0 
VS2017,若有不当请多指教<(^-^)>
程序代码:
#include "pch.h"
#include <iostream>
using namespace std;
int main()
{
    int num;//队伍人数
    cin >> num;
    if (num < 1 || num>10000)
    {
        cout << "Impossible number of tourist!";
        exit(1);
    }//检验队伍人数范围
    cout << "ok1" << endl;//1
    int *p = new int[num];//建立身高数组
    for (int i = 0; i < num; i++)
    {
        cin >> *(p + i);
    }
    cout << "ok2" << endl;//2
    int Highest = *p;
    int Highestnum = 0;
    for (int i = 0; i < num; i++)//寻找最高
    {
        bool IsHighest = true;//假定某人最高
        Highest = *(p + i);
        for (int j = 0; j < num; j++)
        {
            if (Highest < *(p + j))
            {
                IsHighest = false;
                break;
            }//如果身高小于任何一个人,不是最高
        }
        if (IsHighest)
        {
            Highestnum = i;
            break;
        }//如果不小于任何一个人,是最高
    }
    cout << Highestnum << endl;//3
    int temp;//交换第一个人和最高的人的顺序
    temp = *p; *p = *(p + Highestnum); *(p + Highestnum) = temp;
    for (int i = 0; i < num; i++)
        cout << *(p + i) << ' ';//输出
}
2019-02-15 11:25
Canvas
Rank: 2
等 级:论坛游民
威 望:1
帖 子:10
专家分:10
注 册:2019-2-13
  得分:0 
忘了delete p;了o( ̄┰ ̄*)ゞ
2019-02-15 11:27
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:313
帖 子:6509
专家分:37778
注 册:2011-1-18
  得分:0 
代码越啰嗦,耗费的开发时间越多,调试越烦,可能的错误越多

程序代码:
#include <iostream>
#include <iterator>
#include <algorithm>
#include <vector>
using namespace std;

int main( void )
{
    // 输入 n
    size_t n;
    cin >> n;

    // 输入 n 个身高
    std::vector<unsigned> heights( n );
    copy_n( istream_iterator<decltype(heights)::value_type>(cin), n, begin(heights) );

    // 找到第一个最高者位置,并与首位游客交换
    auto itor = max_element( begin(heights), end(heights) );
    iter_swap( itor, begin(heights) );

    // 输出所有游客身高
    copy( begin(heights), end(heights), ostream_iterator<decltype(heights)::value_type>(cout," ") );
}

收到的鲜花
  • Canvas 于 2019-02-20 20:49 送鲜花  1朵   附言:简练高级!
2019-02-15 12:32
zoom_zzZ
Rank: 1
等 级:新手上路
威 望:1
帖 子:4
专家分:0
注 册:2019-2-21
  得分:0 
回复 楼主 asdfaad
#include<iostream>
using namespace std;
int main()
{
    int n,i,max;
    cin>>n;
    int *persons=new int[n];
    for(i=0;i<n;i++)
    {
        cin>>persons[i];
    }
    max=persons[0];
    for(i=1;i<n;i++)
    {
        if(persons[i]>max)
        {
            max=persons[i];
        }
    }
    for(i=0;i<n;i++)
    {
        if(persons[i]==max)
        {
            persons[i]=persons[0];
            persons[0]=max;
        }
    }
    for(i=0;i<n;i++)
    {
        cout<<persons[i]<<" ";
    }
    return 0;
}
2019-02-21 17:26







关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023194 second(s), 10 queries.
Copyright©2004-2019, BCCN.NET, All Rights Reserved