输入10个整数,完成一个函数使数据 重新排序以后输出(也按空格分隔),要求: 输出奇数在前偶数在后 函数接口定义: void sort_tarray ( int* a );
时间: 2023-06-13 20:02:51 浏览: 145
下面是一个简单的实现,思路是先把奇数和偶数分别取出来,然后再合并起来:
```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
```
阅读全文