青史无疆 发表于 2016-9-9 21:08

要找工作了,找一些基础题做做,随手记一下

题:输入若干(不超过1000个)非负整数数字,请先取出为奇数的数字按从大到小排序,再取出偶数从小到大进行排序。
解决代码:#include <iostream>
#include <stdlib.h>
#include <vector>
#include <algorithm>
using namespace std;

bool comp(const int &a,const int &b)
{
        return a>b;
}

int Init(int *data,string input)
{
        int index=0;
        int startpos=0,stoppos=0;
        int length;
       
        length = input.length();
       
        while(stoppos<input.length())
        {
                stoppos=input.find(" ",startpos);
                if(-1==stoppos)
                {
                        if(startpos<length)
                        {
                                *(data+index)=atoi(input.substr(startpos,stoppos-startpos).c_str());
                                ++index;
                        }
                        break;
                }
               
                if(startpos!=stoppos)
                {
                        *(data+index)=atoi(input.substr(startpos,stoppos-startpos).c_str());
                        ++index;
                }
                startpos=stoppos+1;
        }

        return index;
}

void Sort_Spec(int *data,int count)
{
        vector<int> value_j,value_o;
        for(int i=0;i<count;++i)
        {
                if(*(data+i)%2!=0)
                {
                        value_j.push_back(*(data+i));
                }
                else
                {
                        value_o.push_back(*(data+i));
                }
        }
        sort(value_o.begin(),value_o.end());
        sort(value_j.begin(),value_j.end(),comp);
       
        vector<int>::iterator it_j,it_o;
        int index=0;
        for(it_j=value_j.begin();it_j!=value_j.end();it_j++)
        {
                *(data+index)=*it_j;
                index++;
        }
        for(it_o=value_o.begin();it_o!=value_o.end();it_o++)
        {
                *(data+index)=*it_o;
                index++;
        }
}

int main()
{
        string input;
        getline(cin,input);
       
        int data;
       
        int count=Init(data,input);
       
        Sort_Spec(data,count);
       
       
        for(int i=0;i<count;++i)
        {
                cout << data << " ";
        }
       
        return 0;
}

Greenle 发表于 2016-9-9 21:12

{:301_985:}{:301_985:}完全没看懂

初音ミク 发表于 2016-9-10 00:28

魔术使nqy 发表于 2016-9-9 21:58
楼主我想问一下要成为一个程序员要什么条件啊?会C或者C++就可以了吗?还需要学其他哪方面的知识啊???? ...

{:301_1008:}不一定是C/C++    只要能够熟练使用编程语言你就成为名副其实的码农辣注:编程语言有很多例如javaC# VCVB   C++swiftobjective-c 等。。。。{:301_1008:}

天地虚武 发表于 2016-9-9 21:11

完全看不懂

KaQqi 发表于 2016-9-9 21:19

就一道题?c++的程序..不明白楼主要干什么

青史无疆 发表于 2016-9-9 21:29

cqr2287 发表于 2016-9-9 21:19
就一道题?c++的程序..不明白楼主要干什么

就是单纯的记录下{:1_936:}

KaQqi 发表于 2016-9-9 21:31

青史无疆 发表于 2016-9-9 21:29
就是单纯的记录下

哦哦,期待楼主更多的记录

青史无疆 发表于 2016-9-9 21:34

cqr2287 发表于 2016-9-9 21:19
就一道题?c++的程序..不明白楼主要干什么

感觉获取不定数量的数并处理,对新手有一定帮助

魔术使nqy 发表于 2016-9-9 21:55

正在学C语言,这个效果目前我还做不到,如果一开始知道要输入数字的数量还可以用C写{:301_1007:}

魔术使nqy 发表于 2016-9-9 21:58

楼主我想问一下要成为一个程序员要什么条件啊?会C或者C++就可以了吗?还需要学其他哪方面的知识啊????

青史无疆 发表于 2016-9-9 22:02

魔术使nqy 发表于 2016-9-9 21:58
楼主我想问一下要成为一个程序员要什么条件啊?会C或者C++就可以了吗?还需要学其他哪方面的知识啊???? ...

我也还是新手,刚开始找工作{:1_936:},投了个华为,感觉没望了.......
页: [1] 2 3
查看完整版本: 要找工作了,找一些基础题做做,随手记一下