当前位置:编程学习 > C/C++ >>

九度OJ 题目1117:整数奇偶排序

********************************  
 *    日期:2013-2-5 
 *    作者:SJF0115  
 *    题号: 九度OJ 题目1117:整数奇偶排序 
 *    来源:http://ac.jobdu.com/problem.php?pid=1117 
 *    结果:AC  
 *    来源:2008年北京大学图形实验室计算机研究生机试真题 
 *    总结:注意只有奇数没有偶数的情况,只有偶数没有奇数的情况。可能没有偶数,那么输出奇数后不要有空格! 
**********************************/   
#include<stdio.h>   
#include<stdlib.h>   
#include<string.h>   
//偶数排序   
int cmp(const void *a,const void *b){  
    return *(int *)a - *(int *)b;  
}  
//奇数排序   
int cmp2(const void *a,const void *b){  
    return *(int *)b - *(int *)a;  
}  
int main()  
{  
    int n,i,evenCount,oddCount;  
    int number[10];  
    int even[10];  
    int odd[10];  
    //freopen("C:\\Users\\SJF\\Desktop\\acm.txt","r",stdin);    
    while(scanf("%d",&number[0])!=EOF)  
    {  
        evenCount = 0;  
        oddCount = 0;  
        if(number[0] % 2){  
            odd[oddCount++] = number[0];  
        }  
        else{  
            even[evenCount++] = number[0];  
        }  
        for(i = 1;i < 10;i++){  
            scanf("%d",&number[i]);  
            //奇数   
            if(number[i] % 2){  
                odd[oddCount++] = number[i];  
            }  
            //偶数   
            else{  
                even[evenCount++] = number[i];  
            }  
        }  
        //排序   
        qsort(even,evenCount,sizeof(even[0]),cmp);  
        qsort(odd,oddCount,sizeof(odd[0]),cmp2);  
        //1.先输出其中的奇数,并按从大到小排列;2.然后输出其中的偶数,并按从小到大排列。   
        //输出奇数   
        int flag = 0;  
        for(i = 0;i < oddCount;i++){  
            if(flag){  
                printf(" ");  
            }  
            printf("%d",odd[i]);  
            flag = 1;  
        }  
        //没有偶数只有奇数   
        if(evenCount == 0){  
            printf("\n");  
        }  
        //有偶数无奇数   
        else if(oddCount != 0){  
            printf(" ");  
        }  
        //输出偶数   
        for(i = 0;i < evenCount;i++){  
            if(i == evenCount-1){  
                printf("%d\n",even[i]);  
            }  
            else{  
                printf("%d ",even[i]);  
            }  
        }  
    }  
    return 0;  
}  
 
/********************************* 
 *    日期:2013-2-5
 *    作者:SJF0115 
 *    题号: 九度OJ 题目1117:整数奇偶排序
 *    来源:http://ac.jobdu.com/problem.php?pid=1117
 *    结果:AC 
 *    来源:2008年北京大学图形实验室计算机研究生机试真题
 *    总结:注意只有奇数没有偶数的情况,只有偶数没有奇数的情况。可能没有偶数,那么输出奇数后不要有空格!
**********************************/ 
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
//偶数排序
int cmp(const void *a,const void *b){
return *(int *)a - *(int *)b;
}
//奇数排序
int cmp2(const void *a,const void *b){
return *(int *)b - *(int *)a;
}
int main()
{
    int n,i,evenCount,oddCount;
int number[10];
int even[10];
int odd[10];
//freopen("C:\\Users\\SJF\\Desktop\\acm.txt","r",stdin); 
    while(scanf("%d",&number[0])!=EOF)
    {
evenCount = 0;
oddCount = 0;
if(number[0] % 2){
odd[oddCount++] = number[0];
}
else{
even[evenCount++] = number[0];
}
        for(i = 1;i < 10;i++){
scanf("%d",&number[i]);
//奇数
if(number[i] % 2){
odd[oddCount++] = number[i];
}
//偶数
else{
even[evenCount++] = number[i];
}
}
//排序
qsort(even,evenCount,sizeof(even[0]),cmp);
qsort(odd,oddCount,sizeof(odd[0]),cmp2);
//1.先输出其中的奇数,并按从大到小排列;2.然后输出其中的偶数,并按从小到大排列。
//输出奇数
int flag = 0;
for(i = 0;i < oddCount;i++){
if(flag){
printf(" ");
}
printf("%d",odd[i]);
flag = 1;
}
//没有偶数只有奇数
if(evenCount == 0){
printf("\n");
}
//有偶数无奇数
else if(oddCount != 0){
printf(" ");
}
//输出偶数
for(i = 0;i < evenCount;i++){
if(i == evenCount-1){
printf("%d\n",even[i]);
}
else{
p
补充:软件开发 , C++ ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,