C语言利用指针作为函数形参,实习10个整数交换
时间: 2024-09-11 12:19:12 浏览: 69
在C语言中,利用指针作为函数的形参,可以实现在函数内部对实际参数进行修改,从而达到交换整数的目的。以下是一个简单的例子,展示了如何通过指针交换10个整数:
```c
#include <stdio.h>
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
void swapArray(int *arr, int size) {
for (int i = 0; i < size / 2; i++) {
swap(&arr[i], &arr[size - i - 1]);
}
}
int main() {
int numbers[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
swapArray(numbers, 10);
// 打印交换后的数组
for (int i = 0; i < 10; i++) {
printf("%d ", numbers[i]);
}
return 0;
}
```
在这个例子中,`swap` 函数通过指针参数交换两个整数的值。`swapArray` 函数则遍历数组,利用 `swap` 函数交换数组两端的元素,从而实现整个数组元素的倒序排列。注意,这种方法实际上是将数组元素两两交换,数组长度应该是偶数,否则最后一个元素将不会被交换。
相关问题
利用C语言指针作为函数的形参实现10个整数从小到大排序。
在C语言中,可以利用指针作为函数的形参,并结合数组传递来实现对一组整数的排序。这里我们展示一个简单的冒泡排序算法的例子,它接受一个指向整数数组首元素的指针以及数组长度:
```c
#include <stdio.h>
// 排序函数,传入一个整数指针和数组长度
void sort(int* arr, int n) {
for (int i = 0; i < n - 1; i++) { // 遍历数组直到倒数第二个元素
for (int j = 0; j < n - 1 - i; j++) { // 每次内循环都将最大的元素“沉”下去
if (*arr[j] > *arr[j + 1]) {
// 如果前一个元素比后一个大,交换它们
int temp = *arr[j];
*arr[j] = *arr[j + 1];
*arr[j + 1] = temp;
}
}
}
}
// 测试函数
int main() {
int numbers[10] = {5, 3, 9, 1, 7, 2, 8, 6, 4, 10}; // 待排序的10个整数
int size = sizeof(numbers) / sizeof(numbers[0]); // 计算数组长度
printf("Before sorting:\n");
for (int i = 0; i < size; i++) {
printf("%d ", numbers[i]);
}
sort(numbers, size); // 调用排序函数
printf("\nAfter sorting in ascending order:\n");
for (int i = 0; i < size; i++) {
printf("%d ", numbers[i]);
}
return 0;
}
```
c语言利用指针作为函数的形参,实现10个整数由小到大排序。
在 C 语言中,通过指针作为函数的形参,可以实现对数组元素的直接操作,进而完成排序。这里我们可以使用经典的冒泡排序算法,它是一种简单直观的排序方法。假设我们有一个名为 `sort` 的函数,接收一个指向整数数组的指针以及数组长度:
```c
#include <stdio.h>
// 冒泡排序函数,接受一个指针和数组长度作为参数
void sort(int* arr, int n) {
for (int i = 0; i < n - 1; i++) { // 遍历所有元素
for (int j = 0; j < n - 1 - i; j++) { // 每次遍历内部递减比较范围
if (*(arr + j) > *(arr + j + 1)) { // 如果当前元素大于下一个
int temp = *arr + j; // 交换它们的位置
*arr + j = *arr + j + 1;
*arr + j + 1 = temp; // 更新指针位置
}
}
}
}
// 测试函数
int main() {
int numbers[10] = {5, 2, 9, 1, 7, 4, 6, 8, 3, 0}; // 待排序的10个整数
int length = sizeof(numbers) / sizeof(numbers[0]);
printf("Before sorting:\n");
for (int i = 0; i < length; i++) {
printf("%d ", numbers[i]);
}
sort(&numbers, length); // 使用指针调用排序函数
printf("\nAfter sorting in ascending order:\n");
for (int i = 0; i < length; i++) {
printf("%d ", numbers[i]);
}
return 0;
}
```
在这个例子中,`sort` 函数通过修改数组的元素值来实现升序排列。运行 `main` 函数后,可以看到输入的10个整数已经按照从小到大的顺序排列。
阅读全文