利用C++创建项目ex3p1,在main函数中定义和随机初始化一个(具有20个元 素/值域在-99到99的)局部整数数组,对数组中的数据进行排序。重新随机初 始化数组,对数组中的数据按绝对值大小进行排序
时间: 2023-05-30 10:06:46 浏览: 126
C++源程序(L10)1
以下是示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
#define ARRAY_SIZE 20
void print_array(int arr[], int size) {
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("\n");
}
int compare(const void* a, const void* b) {
return (*(int*)a - *(int*)b);
}
int compare_abs(const void* a, const void* b) {
int abs_a = abs(*(int*)a);
int abs_b = abs(*(int*)b);
return (abs_a - abs_b);
}
int main() {
int arr[ARRAY_SIZE];
// initialize array with random values
srand(time(NULL));
for (int i = 0; i < ARRAY_SIZE; i++) {
arr[i] = rand() % 199 - 99;
}
printf("Original array:\n");
print_array(arr, ARRAY_SIZE);
// sort array using qsort
qsort(arr, ARRAY_SIZE, sizeof(int), compare);
printf("Sorted array:\n");
print_array(arr, ARRAY_SIZE);
// re-randomize array
for (int i = 0; i < ARRAY_SIZE; i++) {
arr[i] = rand() % 199 - 99;
}
// sort array by absolute value using qsort
qsort(arr, ARRAY_SIZE, sizeof(int), compare_abs);
printf("Sorted array by absolute value:\n");
print_array(arr, ARRAY_SIZE);
return 0;
}
```
说明:
1. `print_array`函数用于输出数组中的元素。
2. `compare`函数用于比较两个整数的大小,用于升序排序。
3. `compare_abs`函数用于比较两个整数的绝对值大小,用于按绝对值大小升序排序。
4. `qsort`函数用于排序,第一个参数是待排序的数组,第二个参数是数组大小,第三个参数是每个元素的大小,第四个参数是比较函数的指针。
5. 在`main`函数中,首先随机初始化数组并输出原始数组,然后使用`qsort`函数对数组进行排序并输出排序后的数组,接着重新随机初始化数组,使用`qsort`函数按绝对值大小对数组进行排序并输出排序后的数组。
阅读全文