c语言编程,将数据复制到另一个数组中,先复制奇数再复制偶数
时间: 2023-06-02 10:07:28 浏览: 74
你好,根据您的问题,可以使用两个for循环来实现数据复制到另一个数组中,先复制奇数再复制偶数。具体的代码可以参考以下示例:
```c
#include <stdio.h>
int main()
{
int arr1[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int arr2[10] = {0};
int i, j = 0;
// 复制奇数
for (i = 0; i < 10; i++) {
if (arr1[i] % 2 != 0) {
arr2[j++] = arr1[i];
}
}
// 复制偶数
for (i = 0; i < 10; i++) {
if (arr1[i] % 2 == 0) {
arr2[j++] = arr1[i];
}
}
// 输出复制后的数组
for (i = 0; i < 10; i++) {
printf("%d ", arr2[i]);
}
printf("\n");
return 0;
}
```
运行结果为:
```
1 3 5 7 9 2 4 6 8 10
```
希望能解决您的问题。
相关问题
输入10个数,将10个整数按升序排列输出,并且奇数在前,偶数在后。 (编程提示:可利用2个数组变量,一个用来存放输入的整数,输入后,对这个数组进行排序,然后将数据复制到另一个数组中,先复制奇数再复制偶数)。 思考一下如果不让用辅助数组还能怎么做?用C语言
我明白了,您想让我帮您解决一道编程题。
以下是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;
}
```
用C语言编程使得.任意输入一整形数组,编程实现将奇数放到数组的前面,偶数放到数组的后面。
对于您的问题,我可以回答。可以使用C语言的双指针算法来实现将奇数放到数组的前面,偶数放到数组的后面。代码示例如下:
```c
#include <stdio.h>
void swap(int* a, int* b) {
int temp = *a;
*a = *b;
*b = temp;
}
void oddEvenSort(int nums[], int numsSize) {
int* left = nums;
int* right = nums + numsSize - 1;
while (left < right) {
while ((*left) % 2 == 1 && left < right) {
left++;
}
while ((*right) % 2 == 0 && left < right) {
right--;
}
swap(left, right);
}
}
int main() {
int nums[] = {1, 4, 2, 3, 5, 6};
int numsSize = 6;
oddEvenSort(nums, numsSize);
for (int i = 0; i < numsSize; i++) {
printf("%d ", nums[i]);
}
return 0;
}
```
上面的代码中,swap函数用于交换两个数的值,oddEvenSort函数中,left指针从数组前面往后面移动,找到第一个偶数。right指针从数组后面往前面移动,找到第一个奇数。然后交换两个数的值。重复这个过程直到left >= right,也就是奇数和偶数都被放到了对应的位置为止。在main函数中定义了一个测试数组,可以根据具体情况修改。