用C语言 6.将n个数按输入时顺序的逆序排列,用函数实现。 ①在调用函数时用函数名作为函数实参。 ②函数实参改为用指向数组首元素的指针,形参不变。 ③分析以上二者的异同。
时间: 2023-06-06 12:08:22 浏览: 136
将数组逆序排列,C语言实现。
这个问题属于编程问题,我可以回答。首先,可以使用以下函数来实现将n个数按输入时顺序的逆序排列:
①在调用函数时用函数名作为函数实参:
void reverseArray(int arr[], int n) {
int i, temp;
for (i = 0; i < n / 2; i++) {
temp = arr[i];
arr[i] = arr[n - 1 - i];
arr[n - 1 - i] = temp;
}
}
调用时直接传入数组名和数组大小:
int main() {
int arr[] = {1, 2, 3, 4, 5};
int n = sizeof(arr) / sizeof(arr[0]);
// 调用函数
reverseArray(arr, n);
// 输出逆序后的数组
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
这个方法将数组名作为参数传递给函数,而不是指针。
②函数实参改为用指向数组首元素的指针,形参不变:
void reverseArray(int *arr, int n) {
int i, temp;
for (i = 0; i < n / 2; i++) {
temp = *(arr+i);
*(arr+i) = *(arr+n-1-i);
*(arr+n-1-i) = temp;
}
}
调用时将数组名转换为指针:
int main() {
int arr[] = {1, 2, 3, 4, 5};
int n = sizeof(arr) / sizeof(arr[0]);
// 调用函数,将数组名转换为指针
reverseArray(&arr[0], n);
// 输出逆序后的数组
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
这个方法使用指向数组首元素的指针作为参数传递给函数。
③以上二者的异同:
这两种方法的本质是相同的,都是将数组参数传递给一个函数来修改它的值。不同的是,第一种方法使用数组名作为参数传递,而第二种方法使用指向数组首元素的指针作为参数传递。第二种方法需要将数组名转换为指针类型,但在访问数组元素时更加灵活。
阅读全文