c++输入10个整数,完成一个函数使数据 重新排序以后输出(也按空格分隔),要求: 输出奇数在前偶数在后 函数接口定义: void sort_tarray ( int* a );
时间: 2023-06-11 17:10:30 浏览: 123
以下是实现该函数的代码:
```c
#include <stdio.h>
void sort_tarray(int *a) {
int i, j, temp;
for (i = 0; i < 10; i++) {
for (j = i + 1; j < 10; j++) {
if (*(a + i) % 2 == 0 && *(a + j) % 2 != 0) {
temp = *(a + i);
*(a + i) = *(a + j);
*(a + j) = temp;
}
}
}
for (i = 0; i < 10; i++) {
printf("%d ", *(a + i));
}
}
int main() {
int arr[10], i;
printf("请输入10个整数:\n");
for (i = 0; i < 10; i++) {
scanf("%d", &arr[i]);
}
sort_tarray(arr);
return 0;
}
```
函数的实现使用了冒泡排序的思想,将奇数向前移动,偶数向后移动,最终输出排好序的整数数组。在主函数中先读入了10个整数,然后调用 `sort_tarray` 函数进行排序,最后输出排好序的数组。
相关问题
输入10个整数,完成一个函数使数据 重新排序以后输出(也按空格分隔),要求: 输出奇数在前偶数在后 函数接口定义: void sort_tarray ( int* a );
下面是一个简单的实现,思路是先把奇数和偶数分别取出来,然后再合并起来:
```c++
void sort_tarray(int* a) {
int oddCount = 0; // 奇数个数
int evenCount = 0; // 偶数个数
int* oddArray = new int[10]; // 存放奇数的数组
int* evenArray = new int[10]; // 存放偶数的数组
// 分离奇数和偶数
for (int i = 0; i < 10; i++) {
if (a[i] % 2 == 0) {
evenArray[evenCount++] = a[i];
}
else {
oddArray[oddCount++] = a[i];
}
}
// 合并奇数和偶数
for (int i = 0; i < oddCount; i++) {
a[i] = oddArray[i];
}
for (int i = 0; i < evenCount; i++) {
a[oddCount + i] = evenArray[i];
}
delete[] oddArray;
delete[] evenArray;
}
```
这个函数会把传入的数组按照奇数和偶数分别排序,奇数在前偶数在后。你可以这样调用它:
```c++
int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
sort_tarray(a);
for (int i = 0; i < 10; i++) {
cout << a[i] << " ";
}
```
输出结果为:
```
1 3 5 7 9 2 4 6 8 10
```
给定10个整数的序列,要求对其重新排序。排序要求: 1.奇数在前,偶数在后; 2.奇数按从大到小排序; 3.偶数按从小到大排序。c++不用vector
在C++中,如果你想要对给定的10个整数序列满足上述条件进行排序,可以使用`sort`函数结合自定义比较函数的方式来实现。这里我们不会直接使用`vector`,而是手动创建一个数组并进行操作。以下是步骤:
首先,定义一个结构体来辅助排序,包含数值和一个标志位表示是否为奇数:
```cpp
struct Number {
int value;
bool isOdd;
};
```
然后,创建一个函数来进行比较,根据奇偶性和值的大小进行排序:
```cpp
bool compareNumbers(const Number &a, const Number &b) {
if (a.isOdd != b.isOdd) {
return a.isOdd; // 奇数排在前面
} else {
return a.value > b.value; // 偶数内部按照从大到小排序
}
}
```
接下来,在主程序中,假设你有一个包含10个整数的一维数组`int numbers[10]`,你可以先初始化所有的`isOdd`字段,然后使用`qsort`函数:
```cpp
Number arr[10];
// 初始化数组元素...
for (int i = 0; i < 10; i++) {
arr[i].value = numbers[i];
arr[i].isOdd = numbers[i] % 2; // 判断奇偶性
}
// 使用自定义比较函数进行排序
qsort(arr, 10, sizeof(Number), compareNumbers);
// 将排序后的结果打印出来
for (int i = 0; i < 10; i++) {
std::cout << arr[i].value << " ";
}
```
注意:`qsort`是一个C标准库函数,需要保证它在内存上连续可用的数据。如果你不确定输入数组是否已排序,记得提供一个已经排好序的数组作为基准。
阅读全文