| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 714 人关注过本帖
标题:C++一道练习题
只看楼主 加入收藏
teifion666
Rank: 1
等 级:新手上路
帖 子:4
专家分:5
注 册:2011-5-14
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:5 
C++一道练习题
   输入10个数,将10个整数按顺序排列输出,并且奇数在前,偶数在后。如果输入的10个数是:10 9 8 7 6 5 4 3 2 1 ,则输出:1 3 5 7 9 2 4 6 8 10
搜索更多相关主题的帖子: 练习题 
2011-05-25 22:07
Pirelo
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:118
专家分:550
注 册:2011-1-28
收藏
得分:4 
程序代码:
#include<cstring>
#include<iostream>
using namespace std;
void main()
{
    int array[10],temparray[10],temp;
    int *parray=array ;
    cout<<"please input 10 numbers:"<<endl;
    for(int i=0;i<10;i++)
    {
        cin>>array[i];
    }

    //将array按升序排序
    for(i=1;i<10;i++)
    {

        for(int j=0;j<9;j++)
        {
            if(array[j]>=array[j+1])
            {
                temp=array[j];
                array[j]=array[j+1];
                array[j+1]=temp;
            }
        }
    }

    //将排序后的array拷贝一份到temparray
    for( i=0;i<10;i++)
    {
        temparray[i]=array[i];
    }

    //将奇数元素放到数组array的前面一部分
    for( i=0;i<10;i++)
    {
        if(0!=(temparray[i]%2))
        {
        *parray=temparray[i];
        parray++;
        }
    }

    //将偶数元素放到数组array的后面一部分
    for( i=0;i<10;i++)
    {
        if(0==(temparray[i]%2))
        {
        *parray=temparray[i];
        parray++;
        }
    }

    //输出奇偶排序后的array
    for( i=0;i<10;i++)
    {
        cout<<"array["<<i<<"]="<<array[i]<<endl;
    }       
    system("pause");
}
尝试写了一段代码,基本能实现楼主的要求,但自我感觉算法的效率偏低,期待高手带来新的算法吧。
2011-05-25 23:49
format123
Rank: 2
等 级:论坛游民
帖 子:35
专家分:60
注 册:2010-11-26
收藏
得分:4 
程序代码:
#include <IOSTREAM>
using namespace std;
#include <algorithm>

int main()
{
    int num[10],temp[10],j=0;
    for(int i=0;i<10;i++)
        cin>>num[i];
    sort(num,num+10);
    for (i=0;i<10;i++)
    {
        if (num[i]%2==1)
        {
            temp[j++]=num[i];
        }
    }
    for (i=0;i<10;i++)
    {
        if (num[i]%2==0)
        {
            temp[j++]=num[i];
        }
    }
    for (i=0;i<10;i++)
    {
        cout<<temp[i]<<" ";
    }
}
用sort
2011-05-26 07:35
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:4 
#include <iostream>
#include <iterator>
#include <algorithm>
using namespace std;

inline static bool foo( int a, int b )
{
    if( (a&1) && !(b&1) ) // a奇b偶
       return true;
    if( !(a&1) && (b&1) ) // a偶b奇
       return false;

    return a<b;
}

int main()
{
    int buf[] = { 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 }; // 1 3 5 7 9 2 4 6 8 10

    // 输出原串
    const size_t len = sizeof(buf)/sizeof(buf[0]);
    copy( buf+0, buf+len, ostream_iterator<int>(cout," ") );
    cout << '\n';

    // 排序
    sort( buf+0, buf+len, foo );

    // 输出排序后的字符串
    copy( buf+0, buf+len, ostream_iterator<int>(cout," ") );
    cout << '\n';

    return 0;
}
2011-05-26 08:24
lucky563591
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:765
专家分:2103
注 册:2009-11-18
收藏
得分:4 
用一个筛选,将奇数和偶数分开,再用冒泡排序分别排序,最后合并
2011-05-26 08:54
lianjiecuowu
Rank: 3Rank: 3
来 自:安徽
等 级:论坛游侠
帖 子:152
专家分:107
注 册:2011-5-20
收藏
得分:4 
#include <iostream>
using namespace std;
int main()
{
    const int N=10;
    int data[N];
    int i,loop,temp;
    cout<<"please input 10 numbers:"<<endl;
    for(i=0;i<10;i++)
    cin>>data[i];
    for(i=0;i<=N-2;i++)
    {
       for(loop=N-2;loop>=i;loop--)
       {
           if(data[loop]>data[loop+1])
           {
              temp=data[loop+1];
              data[loop+1]=data[loop];
              data[loop]=temp;
            
           }
           
       }
    }
    for(i=0;i<N;i++)
    cout<<data[i]<<'\t'<<endl;
    for(i=0;i<N;i+=2)
    cout<<data[i]<<'\t';
    for(i=1;i<N;i+=2)
    cout<<data[i]<<'\t';
   
    system("pause");
    return 0;   
}

Sharp your mind!
2011-05-26 13:15
快速回复:C++一道练习题
数据加载中...
 
   



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

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