朋友的某公司笔试题,很简单,但是仓促之下居然出了不少BUG. 修正后的版本如下:
问题:
输入若干(不超过1000个)非负整数数字,请先取出为奇数的数字按从大到小排序,再取出偶数从小到大进行排序。
代码思路:
将输入的奇数偶数分别存储,分别排序。
实现:
//
// main.cpp
// Huawei
//
// Created by adam on 6/16/15.
// Copyright (c) 2015 WhiteKnight. All rights reserved.
//
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
void print(int i);
int main()
{
int tmp,i=0;
vector<int> odd,even;
//接收输入数据,最多1000个数据。
cout<<"Ready, Input Negative Value to Finish"<<endl;
while(cin>>tmp && i<1000 && tmp>=0)
{
if(1==tmp%2)
{
odd.push_back(tmp);
}
else
{
even.push_back(tmp);
}
i++;
}
//对奇数和偶数分别调用stl进行排序
sort(odd.begin(),odd.end(),greater<int>());
sort(even.begin(),even.end());
//输出结果
for_each(odd.begin(),odd.end(),print);
for_each(even.begin(),even.end(),print);
return 0;
}
void print(int i)
{
cout<<i<<" ";
};
完整代码请见:
https://github.com/ColdZoo/yolo-bear
项目名称Huawei