| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 347 人关注过本帖
标题:学生党 是一个新学者 编的一个求次大值 次小值的程序 运行时总是出错
只看楼主 加入收藏
小沈SC
Rank: 1
等 级:新手上路
帖 子:2
专家分:1
注 册:2013-12-13
收藏
 问题点数:0 回复次数:1 
学生党 是一个新学者 编的一个求次大值 次小值的程序 运行时总是出错
#include<iostream>
using namespace std;

int input(int*max,int*min,int n)
{  int i,x,pmax,pmin;
   cout<<"输入整数的个数:"<<endl;
   cin>>n;
   cout<<"输入"<<n<<"个整数:";
   cin>>x;
   for(i=1,pmax=pmin=x;i<n;i++)
   {  cin>>x;
      if(x>pmax)
      *max=pmax;
      pmax=x;
      if(x<pmin)
      *min=pmin;
      pmin=x;  
   }
   return *max;
}


int main(void)
{ int max,min;
      max=input(&max,&min,10);
  cout<<"十个数的次大值="<<max<<endl
      <<"十个数的次小值="<<min<<endl;
      return 0;
}

[ 本帖最后由 小沈SC 于 2013-12-18 11:22 编辑 ]
搜索更多相关主题的帖子: include return include return 
2013-12-18 10:39
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9008
专家分:53957
注 册:2011-1-18
收藏
得分:0 
程序代码:
#include <iostream>
#include <vector>
#include <utility>
#include <cassert>
using namespace std;

void max_min_2nd( const int buf[], size_t n, int& max2nd, int& min2nd )
{
    assert( n >= 2 );

    // 先求前两个数的 最大值,次大值,最小值,次小值
    int max1st_ = std::max( buf[0], buf[1] );
    int max2nd_ = std::min( buf[0], buf[1] );
    int min1st_ = max2nd_;
    int min2nd_ = max1st_;

    for( size_t i=2; i<n; ++i )
    {
        if( buf[i] > max1st_ )
        {
            max2nd_ = max1st_;
            max1st_ = buf[i];
        }
        else if( buf[i] > max2nd_ )
        {
            max2nd_ = buf[i];
        }

        if( buf[i] < min1st_ )
        {
            min2nd_ = min1st_;
            min1st_ = buf[i];
        }
        else if( buf[i] < min2nd_ )
        {
            min2nd_ = buf[i];
        }
    }

    max2nd = max2nd_;
    min2nd = min2nd_;
}

int main(void)
{
    vector<int> buf;
    cout << "输入整数的个数: ";
    size_t n;
    cin >> n;
    buf.resize( n );
    cout << "输入"<<n<<"个整数: ";
    for( size_t i=0; i<n; ++i )
        cin >> buf[i];

    int max2nd, min2nd;
    max_min_2nd( &buf[0], n, max2nd, min2nd );
    cout << "次大值 = " << max2nd << '\n'
         << "次小值 = " << min2nd << endl;

    return 0;
}
2013-12-18 12:09
快速回复:学生党 是一个新学者 编的一个求次大值 次小值的程序 运行时总是出 ...
数据加载中...
 
   



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

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