aa

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
aa [2024/11/25 18:31] – [工作页] doge24190aa [2025/04/15 01:32] (当前版本) doge24190
行 7: 行 7:
 点击下载 点击下载
  
-以下是所有程序重新用指针实现的版本: +{{tag>存档}}
- +
-1. 交换数组 a 和数组 b 的对应元素 +
- +
-#include <stdio.h> +
- +
-void swap(int *a, int *b, int n) { +
-    for (int i = 0; i < n; i++) { +
-        int temp = *(a + i); +
-        *(a + i) = *(b + i); +
-        *(b + i) = temp; +
-    } +
-+
- +
-int main() { +
-    int a[] = {1, 2, 3}; +
-    int b[] = {4, 5, 6}; +
-    int n = sizeof(a) / sizeof(a[0]); +
- +
-    swap(a, b, n); +
- +
-    printf("Array a: "); +
-    for (int i = 0; i < n; i++) printf("%d ", *(a + i)); +
-    printf("\nArray b: "); +
-    for (int i = 0; i < n; i++) printf("%d ", *(b + i)); +
- +
-    return 0; +
-+
- +
-2. 求整型数组中的最大值 +
- +
-#include <stdio.h> +
- +
-int findMax(int *arr, int n) { +
-    int max = *arr;  // 首元素 +
-    for (int i = 1; i < n; i++) { +
-        if (*(arr + i) > max) max = *(arr + i); +
-    } +
-    return max; +
-+
- +
-int main() { +
-    int arr[] = {3, 5, 7, 2, 8}; +
-    int n = sizeof(arr) / sizeof(arr[0]); +
- +
-    printf("Maximum value: %d\n", findMax(arr, n)); +
- +
-    return 0; +
-+
- +
-3. 删除字符串中所有字符 ‘k’ +
- +
-#include <stdio.h> +
- +
-void removeChar(char *str, char ch) { +
-    char *p1 = str, *p2 = str; +
-    while (*p1 != '\0') { +
-        if (*p1 != ch) { +
-            *p2 = *p1; +
-            p2++; +
-        } +
-        p1++; +
-    } +
-    *p2 = '\0';  // 结束符 +
-+
- +
-int main() { +
-    char str[] = "bookkeeper"; +
- +
-    removeChar(str, 'k'); +
- +
-    printf("Modified string: %s\n", str); +
- +
-    return 0; +
-+
- +
-4. 用指针方法完成选择排序 +
- +
-#include <stdio.h> +
- +
-void selectionSort(int *arr, int n) { +
-    for (int i = 0; i < n - 1; i++) { +
-        int *min = arr + i; +
-        for (int *j = arr + i + 1; j < arr + n; j++) { +
-            if (*j < *min) { +
-                min = j; +
-            } +
-        } +
-        int temp = *(arr + i); +
-        *(arr + i) = *min; +
-        *min = temp; +
-    } +
-+
- +
-int main() { +
-    int arr[] = {64, 25, 12, 22, 11}; +
-    int n = sizeof(arr) / sizeof(arr[0]); +
- +
-    selectionSort(arr, n); +
- +
-    printf("Sorted array: "); +
-    for (int i = 0; i < n; i++) printf("%d ", *(arr + i)); +
- +
-    return 0; +
-+
- +
-5. 实现整型数组元素循环右移 m 位 +
- +
-#include <stdio.h> +
- +
-void rotateRight(int *arr, int n, int m) { +
-    m = m % n; +
-    for (int i = 0; i < m; i++) { +
-        int last = *(arr + n - 1); +
-        for (int *j = arr + n - 1; j > arr; j--) { +
-            *j = *(j - 1); +
-        } +
-        *arr = last; +
-    } +
-+
- +
-int main() { +
-    int arr[] = {1, 2, 3, 4, 5}+
-    int n = sizeof(arr) / sizeof(arr[0]); +
-    int m = 2; +
- +
-    rotateRight(arr, n, m); +
- +
-    printf("Rotated array: "); +
-    for (int i = 0; i < n; i++) printf("%d ", *(arr + i)); +
- +
-    return 0; +
-} +
- +
-程序说明 +
- +
- • 每个程序都通过指针操作数据结构。 +
- • 数组元素通过 *(arr + index) 访问,指针间接操作代替了下标。 +
- • 字符串删除操作采用双指针法。 +
- • 排序和循环右移直接用指针运算完成。 +
- +
-以上代码均可复制运行。+
  • aa.1732530667.txt.gz
  • 最后更改: 2024/11/25 18:31
  • doge24190