总时间限制: 1000ms 内存限制: 65536kB
描述
输入十个整数,将十个整数按升序排列输出,并且奇数在前,偶数在后。
输入
输入十个整数
输出
按照奇偶排序好的十个整数
样例输入
10 9 8 7 6 5 4 3 2 1
样例输出
1 3 5 7 9 2 4 6 8 10
提示
先排序,再分别输出奇数、偶数
思路
- 创建一个变量类型(数组+数量统计)
- 将main数组中的数分类(奇数归奇数,偶数归偶数)
- 对两个数组(存奇数的数组和存偶数的数组)分别进行排序
- 将两个数组的内容合并到main数组去
答案
#include <stdio.h>
typedef struct {
int arr[10];
int count;
} array;
int main() {
int main[10];
array j, o;
for(int i = 0; i < 10; i++) {
scanf("%d", &main[i]);
}
j.count = 0;
o.count = 0;
for(int i = 0; i < 10; i++) {
if(main[i] % 2 == 0) {
j.arr[j.count++] = main[i];
} else {
o.arr[o.count++] = main[i];
}
}
int t;
for(int i = 0; i < j.count-1; i++) {
for(int k = i; k < j.count; k++) {
if(j.arr[i] > j.arr[k]) {
t = j.arr[i];
j.arr[i] = j.arr[k];
j.arr[k] = t;
}
}
}
for(int i = 0; i < o.count-1; i++) {
for(int k = i; k < o.count; k++) {
if(o.arr[i] > o.arr[k]) {
t = o.arr[i];
o.arr[i] = o.arr[k];
o.arr[k] = t;
}
}
}
for(int i = 0; i < o.count; i++) {
main[i] = o.arr[i];
}
int k = 0;
for(int i = o.count; i < j.count+o.count; i++) {
main[i] = j.arr[k++];
}
for(int i = 0; i < 10; i++) {
printf("%d ", main[i]);
}
}