用c语言定义长度为3的整型数组,采用函数调用实现按照从大到小的顺序排序。在主函数中输出排序前和排序后的数组。按以下四种方法实现: (1)实参、形参为数组名; (2)实参为数组名,形参为指针变量; (3)实参为指针变量,形参为数组名; (4)实参为指针变量,形参为指针变量。
时间: 2024-03-20 07:43:21 浏览: 65
好的,下面是四种方法的示例代码:
(1)实参、形参为数组名
```c
#include <stdio.h>
void sort1(int arr[]) {
if (arr[0] < arr[1]) {
int temp = arr[0];
arr[0] = arr[1];
arr[1] = temp;
}
if (arr[0] < arr[2]) {
int temp = arr[0];
arr[0] = arr[2];
arr[2] = temp;
}
if (arr[1] < arr[2]) {
int temp = arr[1];
arr[1] = arr[2];
arr[2] = temp;
}
}
int main() {
int arr[3] = {3, 2, 1};
printf("排序前: %d %d %d\n", arr[0], arr[1], arr[2]);
sort1(arr);
printf("排序后: %d %d %d\n", arr[0], arr[1], arr[2]);
return 0;
}
```
(2)实参为数组名,形参为指针变量
```c
#include <stdio.h>
void sort2(int* arr) {
if (arr[0] < arr[1]) {
int temp = arr[0];
arr[0] = arr[1];
arr[1] = temp;
}
if (arr[0] < arr[2]) {
int temp = arr[0];
arr[0] = arr[2];
arr[2] = temp;
}
if (arr[1] < arr[2]) {
int temp = arr[1];
arr[1] = arr[2];
arr[2] = temp;
}
}
int main() {
int arr[3] = {3, 2, 1};
printf("排序前: %d %d %d\n", arr[0], arr[1], arr[2]);
sort2(arr);
printf("排序后: %d %d %d\n", arr[0], arr[1], arr[2]);
return 0;
}
```
(3)实参为指针变量,形参为数组名
```c
#include <stdio.h>
void sort3(int arr[3]) {
if (arr[0] < arr[1]) {
int temp = arr[0];
arr[0] = arr[1];
arr[1] = temp;
}
if (arr[0] < arr[2]) {
int temp = arr[0];
arr[0] = arr[2];
arr[2] = temp;
}
if (arr[1] < arr[2]) {
int temp = arr[1];
arr[1] = arr[2];
arr[2] = temp;
}
}
int main() {
int arr[3] = {3, 2, 1};
printf("排序前: %d %d %d\n", arr[0], arr[1], arr[2]);
sort3(arr);
printf("排序后: %d %d %d\n", arr[0], arr[1], arr[2]);
return 0;
}
```
(4)实参为指针变量,形参为指针变量
```c
#include <stdio.h>
void sort4(int* a, int* b, int* c) {
if (*a < *b) {
int temp = *a;
*a = *b;
*b = temp;
}
if (*a < *c) {
int temp = *a;
*a = *c;
*c = temp;
}
if (*b < *c) {
int temp = *b;
*b = *c;
*c = temp;
}
}
int main() {
int a = 3, b = 2, c = 1;
printf("排序前: %d %d %d\n", a, b, c);
sort4(&a, &b, &c);
printf("排序后: %d %d %d\n", a, b, c);
return 0;
}
```
这四种方法都可以实现将数组按从大到小的顺序进行排序,只是形参和实参的类型不同。其中第一种方法和第二种方法比较常见,建议使用其中的一种。
阅读全文