描述:

输入10个整数,彼此以空格分隔
重新排序以后输出(也按空格分隔),要求:
1.先输出其中的奇数,并按从大到小排列;
2.然后输出其中的偶数,并按从小到大排列。输入任意排序的10个整数(0~100),彼此以空格分隔输出按照要求排序后输出,由空格分隔样例输入

  1. 4 7 3 13 11 12 0 47 34 98

样例输出

  1. 47 13 11 7 3 0 4 12 34 98

提示1. 测试数据可能有很多组,请使用while(cin>>a[0]>>a[1]>>...>>a[9])类似的做法来实现;

2. 输入数据随机,有可能相等。

思路:这题是有点难度,特别注意只有奇数没有偶数的情况,只有偶数没有奇数的情况。可能没有偶数,那么输出奇数后不要有空格!

代码如下:

  1. /*********************************
  2. * 日期:2013-2-5
  3. * 作者:SJF0115
  4. * 题号: 九度OJ 题目1117:整数奇偶排序
  5. * 来源:http://ac.jobdu.com/problem.php?pid=1117
  6. * 结果:AC
  7. * 来源:2008年北京大学图形实验室计算机研究生机试真题
  8. * 总结:注意只有奇数没有偶数的情况,只有偶数没有奇数的情况。可能没有偶数,那么输出奇数后不要有空格!
  9. **********************************/
  10. #include<stdio.h>
  11. #include<stdlib.h>
  12. #include<string.h>
  13. //偶数排序
  14. int cmp(const void *a,const void *b){
  15. return *(int *)a - *(int *)b;
  16. }
  17. //奇数排序
  18. int cmp2(const void *a,const void *b){
  19. return *(int *)b - *(int *)a;
  20. }
  21. int main()
  22. {
  23. int n,i,evenCount,oddCount;
  24. int number[];
  25. int even[];
  26. int odd[];
  27. //freopen("C:\\Users\\SJF\\Desktop\\acm.txt","r",stdin);
  28. while(scanf("%d",&number[])!=EOF)
  29. {
  30. evenCount = ;
  31. oddCount = ;
  32. if(number[] % ){
  33. odd[oddCount++] = number[];
  34. }
  35. else{
  36. even[evenCount++] = number[];
  37. }
  38. for(i = ;i < ;i++){
  39. scanf("%d",&number[i]);
  40. //奇数
  41. if(number[i] % ){
  42. odd[oddCount++] = number[i];
  43. }
  44. //偶数
  45. else{
  46. even[evenCount++] = number[i];
  47. }
  48. }
  49. //排序
  50. qsort(even,evenCount,sizeof(even[]),cmp);
  51. qsort(odd,oddCount,sizeof(odd[]),cmp2);
  52. //1.先输出其中的奇数,并按从大到小排列;2.然后输出其中的偶数,并按从小到大排列。
  53. //输出奇数
  54. int flag = ;
  55. for(i = ;i < oddCount;i++){
  56. if(flag){
  57. printf(" ");
  58. }
  59. printf("%d",odd[i]);
  60. flag = ;
  61. }
  62. //没有偶数只有奇数
  63. if(evenCount == ){
  64. printf("\n");
  65. }
  66. //有偶数无奇数
  67. else if(oddCount != ){
  68. printf(" ");
  69. }
  70. //输出偶数
  71. for(i = ;i < evenCount;i++){
  72. if(i == evenCount-){
  73. printf("%d\n",even[i]);
  74. }
  75. else{
  76. printf("%d ",even[i]);
  77. }
  78. }
  79. }
  80. return ;
  81. }

Openjudge-计算概论(A)-整数奇偶排序的更多相关文章

  1. OpenJudge计算概论-分离整数的各个数位

    /*================================================================= 分离整数的各个数位 总时间限制: 1000ms 内存限制: 65 ...

  2. openjudge计算概论-大整数加法

    /*=====================================================================1004:大整数加法总时间限制: 1000ms 内存限制: ...

  3. OpenJudge计算概论-整数奇偶排序

    /*===================================== 整数奇偶排序 总时间限制: 1000ms 内存限制: 65536kB 描述 输入10个整数,彼此以空格分隔 重新排序以后 ...

  4. OpenJudge计算概论-取石子游戏

    OpenJudge计算概论-取石子游戏[函数递归练习] /*====================================================================== ...

  5. P1021 整数奇偶排序

    整数奇偶排序 题目出处:<信息学奥赛一本通>第二章上机练习6,略有改编 题目描述 告诉你包含 \(n\) 个数的数组 \(a\) ,你需要把他们按照"奇数排前面,偶数排后面:奇数 ...

  6. OpenJudge计算概论-奇偶排序

    /*==============================================总时间限制: 1000ms 内存限制: 65536kB描述 输入十个整数,将十个整数按升序排列输出,并且 ...

  7. Openjudge计算概论——数组逆序重放【递归练习】

    /*===================================== 数组逆序重放 总时间限制:1000ms 内存限制:65536kB 描述 将一个数组中的值按逆序重新存放. 例如,原来的顺 ...

  8. OpenJudge计算概论-计算书费

    /*============================================== 计算书费 总时间限制: 1000ms 内存限制: 65536kB 描述 下面是一个图书的单价表: 计算 ...

  9. OpenJudge计算概论-最高的分数

    /*======================================================== 最高的分数 总时间限制: 1000ms 内存限制: 65536kB 描述 孙老师 ...

随机推荐

  1. ueditor的工具按钮配置

    定制工具栏图标 UEditor 工具栏上的按钮列表可以自定义配置,只需要通过修改配置项就可以实现需求 配置项修改说明 修改配置项的方法: 1. 方法一:修改 ueditor.config.js 里面的 ...

  2. Android设置窗体Activity背景透明

    背景透明 style.xml <item name="android:windowBackground">@color/transparent</item> ...

  3. 1、<img />标签

    alt:当图片不显示时的文字说明 title:鼠标悬停在图片上的出现的文字说明

  4. DataGrid 导出数据到 Excel

    Private Sub GridToExl_Click() On Error Resume Next If DataGrid1.Columns.Count = 0 Then MsgBox " ...

  5. Tiny6410之LED裸机驱动

    操作步骤: 第一步:查看开发板电路原理图 找到LED 的管脚所对应的寄存器 nLED_1 - GPK4 nLED_2 - GPK5 nLED_3 - GPK6 nLED_4 - GPK7 由原理图可知 ...

  6. 最受欢迎的iOS第三方SDK

    http://www.raywenderlich.com/forums/viewtopic.php?t=4496

  7. 高一的我曾对自己说"要放慢脚步去生活"!?

    看了高一的时候自己写的日记,瞬间被自己感动到了.以下是当时的几段感慨: 慢是一种放松.是生活的一种良好心态,喜欢这样放慢步伐地生活,那是一种享受! 但我们生活在一个快节奏的时代,我们总是被迫卷进那潮流 ...

  8. EBS FORM FOLDER 开发,单元格无法使用右键

    问题描述: 在使用folder开发FORM后,单元格无法使用右键,正常应该可以右键进行隐藏.显示.复制等操作. 通过对比发现是因ITEM属性中 弹出式菜单未设置导致. 解决方法: 设置弹出式菜单

  9. c++ inline关键字的理解

    1. inline是实现修饰符,而非声明修饰符,所以应该用于实现部分的修饰(你也可以放置inline在声明,但是没有必要) 2. 所有中类中定义的函数都默认声明为inline函数,所有我们不用显示地去 ...

  10. win10 Incredibuild 兼容

    电脑换了win10,所有的软件都需要重新安装. win10的体验还是很不错的.但是也有一堆的问题.原来的vs2010今天无法再使用分布式编译IncrediBuild. 现象是,虽然可以连上分布式编译的 ...