用C语言设计一个函数功能是对参数p传送首地址,n为元素个数的双精度型数组按降序排列
时间: 2024-02-25 14:54:34 浏览: 72
好的,以下是用C语言设计的该函数:
```c
void descending_order(double *p, int n) {
int i, j;
double temp;
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - 1 - i; j++) {
if (*(p + j) < *(p + j + 1)) {
temp = *(p + j);
*(p + j) = *(p + j + 1);
*(p + j + 1) = temp;
}
}
}
}
```
该函数使用了冒泡排序算法,从数组第一个元素开始,比较相邻的两个元素大小,如果前一个元素大于后一个元素,则交换它们的位置,直到将整个数组按降序排列。请注意,该函数没有返回值,因为它直接修改了传递给它的数组。要调用该函数,可以使用以下代码:
```c
double arr[5] = {5.6, 3.2, 8.9, 1.2, 4.5};
int n = sizeof(arr) / sizeof(double);
descending_order(arr, n);
```
此时,数组arr将按降序排列。希望这个函数能够满足您的需求。
相关问题
用C语言选择法设计一个函数功能是对参数p传送首地址,n为元素个数的双精度型数组按降序排列
好的,以下是用 C 语言实现的双精度型数组降序排序的函数:
```c
void selectionSort(double *p, int n) {
int i, j;
double temp;
for (i = 0; i < n - 1; i++) {
int maxIndex = i;
for (j = i + 1; j < n; j++) {
if (*(p + j) > *(p + maxIndex)) {
maxIndex = j;
}
}
if (maxIndex != i) {
temp = *(p + i);
*(p + i) = *(p + maxIndex);
*(p + maxIndex) = temp;
}
}
}
```
这里使用了选择排序算法,首先找到数组中最大的元素,然后将其与当前位置上的元素交换,直到整个数组排完序为止。其中,`p` 是指向双精度型数组的指针,`n` 是数组中元素的个数。
使用示例:
```c
#include <stdio.h>
void selectionSort(double *p, int n);
int main() {
double arr[] = {5.2, 3.8, 7.1, 1.6, 9.4};
int n = sizeof(arr) / sizeof(arr[0]);
printf("Before sorting:\n");
for (int i = 0; i < n; i++) {
printf("%.1f ", arr[i]);
}
printf("\n");
selectionSort(arr, n);
printf("After sorting:\n");
for (int i = 0; i < n; i++) {
printf("%.1f ", arr[i]);
}
printf("\n");
return 0;
}
```
输出结果:
```
Before sorting:
5.2 3.8 7.1 1.6 9.4
After sorting:
9.4 7.1 5.2 3.8 1.6
```
c语言设计子函数功能是对参数p传送的首地址,n为元素个数的双精度型数组按降序排序
下面是一个示例代码,实现了对双精度型数组按降序排序的功能:
```c
#include <stdio.h>
void sort_desc(double *p, int n);
int main()
{
double arr[] = {3.2, 1.5, 4.7, 2.8, 6.9};
int n = sizeof(arr) / sizeof(double);
sort_desc(arr, n);
for (int i = 0; i < n; i++) {
printf("%.2lf ", arr[i]);
}
return 0;
}
void sort_desc(double *p, int n)
{
for (int i = 0; i < n-1; i++) {
for (int j = i+1; j < n; j++) {
if (*(p+i) < *(p+j)) {
double temp = *(p+i);
*(p+i) = *(p+j);
*(p+j) = temp;
}
}
}
}
```
在主函数中,我们定义了一个双精度型数组 `arr`,并求出它的元素个数 `n`。然后调用 `sort_desc` 函数对该数组进行降序排列,并输出排序后的结果。
在 `sort_desc` 函数中,我们使用了双重循环来实现冒泡排序的算法,依次比较相邻的元素,如果前面的元素比后面的元素小,则进行交换。由于参数 `p` 是指向数组首元素的指针,因此在交换元素时需要使用指针的方式进行操作。
阅读全文