******************************** * 日期: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{ printf("%d ",even[i]); } } } return 0; }