题目要求如下:
解决思路如下,通过输入10个数字,然后将其分成奇数组和偶数组,然后再进行排序,最后将排序后的结果输出即可。
下面是实现的代码:
#include <stdio.h>
#include <stdlib.h>
int even_compare(const void *p1,const void *p2){
int *a = (int *)p1;
int *b = (int *)p2;
return *a-*b;
}
int odd_compare(const void *p1,const void *p2){
int *a = (int *)p1;
int *b = (int *)p2;
return *b-*a;
}
int main(int argc, char const *argv[])
{
int num, exist = 0;
while(scanf("%d",&num)!=EOF){
int j=0, k=0;
int odd[10] = {0};
int even[10] = {0};
// 奇数组
if (num & 1)
{
odd[j] = num;
j++;
}else{
//偶数组
even[k] = num;
k++;
}
for (int t = 1; t < 10; ++t)
{
scanf("%d",&num);
if (num==EOF)
{
exist = 1;
break;
}else{
if (num & 1)
{
odd[j] = num;
j++;
}else{
even[k] = num;
k++;
}
if(j+k==10){
//输入10个整型后进行排序
qsort(odd, j, sizeof(int), odd_compare);
qsort(even, k, sizeof(int), even_compare);
for (int i = 0; i < j; ++i)
{
printf("%d ", odd[i]);
}
for (int i = 0; i < k; ++i)
{
printf("%d ", even[i]);
}
printf("\n");
j = 0;
k = 0;
}
}
}
if (exist>0)
{
break;
}
}
return 0;
}
最后是通过后的结果,由于使用for进行读取,因此占用的时候会更长,如果可以还是一次读取10个整型。