输入10个数,将10个整数按升序排列输出,并且奇数在前,偶数在后。 (编程提示:可利用2个数组变量,一个用来存放输入的整数,输入后,对这个数组进行排序,然后将数据复制到另一个数组中,先复制奇数再复制偶数)。 思考一下如果不让用辅助数组还能怎么做?用C语言
时间: 2023-06-08 13:09:18 浏览: 141
我明白了,您想让我帮您解决一道编程题。
以下是C语言代码,在输入10个整数后对数组进行排序,然后按照题目要求输出奇数和偶数:
```
#include <stdio.h>
int main() {
int nums[10], odd[10], even[10];
int i, j, odd_count = 0, even_count = 0;
printf("请输入10个整数:\n");
for (i = 0; i < 10; i++) {
scanf("%d", &nums[i]);
}
for (i = 0; i < 10 - 1; i++) {
for (j = 0; j < 10 - 1 - i; j++) {
if (nums[j] > nums[j+1]) {
int tmp = nums[j];
nums[j] = nums[j+1];
nums[j+1] = tmp;
}
}
}
for (i = 0; i < 10; i++) {
if (nums[i] % 2 == 1) {
odd[odd_count++] = nums[i];
} else {
even[even_count++] = nums[i];
}
}
printf("奇数:");
for (i = 0; i < odd_count; i++) {
printf("%d ", odd[i]);
}
printf("\n偶数:");
for (i = 0; i < even_count; i++) {
printf("%d ", even[i]);
}
return 0;
}
```
如果不允许使用辅助数组,则可以使用类似于冒泡排序的方法,将奇数往前移动,将偶数往后移动,直到全部排序完毕。
```
#include <stdio.h>
int main() {
int nums[10];
int i, j;
printf("请输入10个整数:\n");
for (i = 0; i < 10; i++) {
scanf("%d", &nums[i]);
}
for (i = 0; i < 10 - 1; i++) {
for (j = 0; j < 10 - 1 - i; j++) {
if ((nums[j] % 2 == 0 && nums[j+1] % 2 == 1) || (nums[j] % 2 == nums[j+1] % 2 && nums[j] > nums[j+1])) {
int tmp = nums[j];
nums[j] = nums[j+1];
nums[j+1] = tmp;
}
}
}
printf("排序后的结果:\n");
for (i = 0; i < 10; i++) {
printf("%d ", nums[i]);
}
return 0;
}
```
阅读全文