用参数p传送的首地址实现m双精度型数组按降序排序
时间: 2024-01-21 12:19:44 浏览: 32
以下是一个实现m双精度型数组按降序排序的示例代码,其中使用了参数p传递的数组首地址:
```c
void sort(double *p, int m){
int i, j;
double temp;
for(i = 0; i < m - 1; i++){
for(j = i + 1; j < m; j++){
if(*(p+i) < *(p+j)){
temp = *(p+i);
*(p+i) = *(p+j);
*(p+j) = temp;
}
}
}
}
```
在这个示例代码中,我们通过指针变量p来访问传递进来的双精度型数组。通过两个嵌套的循环,我们可以对数组进行冒泡排序,实现按降序排列。
当我们调用这个函数时,只需要将数组的首地址传递给参数p即可:
```c
double arr[5] = {3.4, 1.2, 5.6, 2.8, 4.9};
sort(arr, 5);
```
在这个例子中,我们定义了一个包含5个元素的双精度型数组arr,并将它作为参数传递给了sort函数。函数会按照降序对数组进行排序,并将结果存储在原数组中。
相关问题
c语言对参数p传送的首地址,n为元素个数的双精度型数组按降序排序
以下是C语言代码实现:
```c
#include <stdio.h>
void sort(double *p, int n);
int main() {
double arr[] = {3.2, 1.8, 5.7, 2.1, 4.9};
int n = sizeof(arr) / sizeof(double);
sort(arr, n);
printf("降序排序后的数组:\n");
for (int i = 0; i < n; i++) {
printf("%.1lf ", arr[i]);
}
printf("\n");
return 0;
}
void sort(double *p, int n) {
double temp;
for (int i = 0; i < n - 1; i++) {
for (int j = i + 1; j < n; j++) {
if (*(p + i) < *(p + j)) {
temp = *(p + i);
*(p + i) = *(p + j);
*(p + j) = temp;
}
}
}
}
```
首先定义了一个 `sort` 函数,它接受一个双精度型数组的指针 `p` 和元素个数 `n`,用于对该数组进行降序排序。
在 `main` 函数中,首先定义了一个包含5个元素的双精度型数组,并计算出其元素个数。然后调用 `sort` 函数对该数组进行排序,并输出排序后的结果。
在 `sort` 函数中,使用了两层循环来实现排序,外层循环控制比较的轮数,内层循环用于比较相邻的元素大小并进行交换。在比较时,使用指针访问数组元素,以便对数组进行排序。
最后输出排序后的结果即可。
c语言函数功能是对参数p传送的首地址,n为元素个数的双精度型数组按降序排序
以下是一个示例C语言函数,可以实现对双精度型数组按降序排序的功能:
```c
void sort(double *p, int n) {
int i, j;
double temp;
for (i = 0; i < n-1; i++) {
for (j = i+1; j < n; j++) {
if (*(p+j) > *(p+i)) {
temp = *(p+i);
*(p+i) = *(p+j);
*(p+j) = temp;
}
}
}
}
```
该函数使用了冒泡排序算法,对参数p所指向的双精度型数组进行排序。函数中,n表示数组元素的个数,p表示数组的首地址。在排序过程中,每次比较相邻两个元素的大小,如果前一个元素比后一个元素小,则交换它们的位置。最终,数组中的元素按照降序排列。