c++输入n及n个整数,按奇数升序,偶数降序排列输出

如题所述

以下是我实现的一种方式,里面有大量的注释,有不懂之处欢迎提问,望采纳。

#include <iostream>
using namespace std;
#define Ascending true//升序
#define Decending false//降序
/**
 * 交换a和b的值
 */
void swap(int &a,int &b)//&表示引用作为参数,也可以使用指针的形式,但不能直接传形参的方式,否则无法交换
{
    int temp = a;
    a=b;
    b=temp;
}
/**
 * [sort 排序,根据type决定是升序还是降序]
 * @param ary  [传进来要排序的数组]
 * @param len  [排序数目]
 * @param type [排序类型,升序或降序]
 */
void sort(int *ary,int len,bool type)
{
    //每个数同后面的所有数都比较一次,将最值放到最前面,下次从下一个开始比较
    for(int i=0;i<len;i++)
    {
        for(int j=i+1;j<len;j++)
        {
            if(type == Ascending)//升序,小的在前面
            {
                if(ary[i] > ary[j])
                    swap(ary[i],ary[j]);
            }
            else//降序,大的在前面
            {
                if(ary[i] < ary[j])
                    swap(ary[i],ary[j]);
            }
                
        }
        cout << ary[i] << " ";//一轮比较下来获得最值,输出,也可以在外面对已经排序好的数组进行打印输出
    }
}
int main()
{
    int N = 0;
    cout << "请输入总数:";
    cin >> N;
    int *arry_odd = new int[N];//存放奇数
    int *arry_even = new int[N];//存放偶数
    int odd_count = 0;//奇数计数
    int even_count = 0;//偶数计数
    int temp_num = 0; //临时存放从键盘获取的值,判断奇偶之后存到相应数组
    if(arry_odd != NULL && arry_even != NULL)
    {
        for(int i=0;i<N;i++)
        {
            cout << "请输入第 " << i << " 个数:";
            cin >> temp_num;
            if(temp_num % 2 == 0)//偶数
            {
                arry_even[even_count] = temp_num;
                even_count++;
            }
            else //奇数
            {
                arry_odd[odd_count] = temp_num;
                odd_count++;
            }
        }
        cout << "奇数:"<<endl;
        sort(arry_odd,odd_count,Ascending);//奇数升序传参Ascending类型
        cout << endl;
        cout << "偶数:"<<endl;
        sort(arry_even,even_count,Decending);//偶数降序传参Decending类型
        cout << endl;
        delete[] arry_odd;//回收动态分配的内存
        delete[] arry_even;//回收动态分配的内存
    }
    return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-05-05
元宵夜,元春回娘家待了一会儿,要宝玉和众姐妹献诗。宝玉和黛玉两小无猜,情意绵绵。书童茗烟将《西厢记》等书偷进园给宝玉,宝玉和黛玉一同欣赏。宝玉庶弟贾环嫉妒宝玉,抄写经书时装失手弄倒蜡烛烫伤宝玉,王夫人大骂赵姨娘。赵姨娘又深恨凤姐,便请马道婆施魔法,让凤姐、宝玉中邪。癞和尚、跛道人擦拭通灵玉、救好二人。
相似回答