解题思路:
对于自带排序的语言来说,这道题是很简单的,以c++的sort为例,cmp返回真,ab的位置保持不变,cmp返回假,ab调换顺序。
也就是说我们需要实现三个功能,1.所有的奇数在偶数前面 2.奇数从大到小排序 3.偶数从小到大排序
如果ab都是奇数的话使用return a>b实现从大到小,如果ab都是偶数return a<b实现从小到大,除此之外就是将奇数放在偶数的前边。
使用return a&1 1.a是奇数,返回1,a在前边保持不变 2.a是偶数,返回0,将a换到后边。
以上三种需求可以使用return (a&1?a:-a)>(b&1?b:-b);一条语句实现,大家可以感受一下。
还有就是输入的数量不定,所以使用了一个循环,用了一个小技巧。
参考代码:
#include <iostream> #include <algorithm> #define ll long long using namespace std; int cmp(int a,int b){ return (a&1?a:-a)>(b&1?b:-b); } int main() { ll i,n=10; ll p[n]; while(cin>>p[0]){ for(i=1;i<n;i++)cin>>p[i]; sort(p,p+n,cmp); for(i=0;i<n;i++)cout<<p[i]<<" "; cout<<endl; } return 0; }
0.0分
156 人评分
C语言训练-求s=a+aa+aaa+aaaa+aa...a的值 (C语言代码) 如果a<0,那就不是这个代码了,哈哈哈哈浏览:1306 |
C语言考试练习题_保留字母 (C语言代码)浏览:733 |
简单的a+b (C语言代码)浏览:765 |
剔除相关数 (C语言代码)浏览:1058 |
C语言训练-排序问题<1> (C语言代码)浏览:636 |
用筛法求之N内的素数。 (C语言代码)浏览:1386 |
C语言训练-大、小写问题 (C语言代码)浏览:649 |
WU-蓝桥杯算法提高VIP-企业奖金发放 (C++代码)浏览:1268 |
哥德巴赫曾猜测 (C语言代码)浏览:2563 |
C语言程序设计教程(第三版)课后习题9.8 (C语言代码)浏览:672 |