这是本文档旧的修订版!
c语言程序设计基础实验
点击下载
以下是所有程序重新用指针实现的版本:
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) 访问,指针间接操作代替了下标。 • 字符串删除操作采用双指针法。 • 排序和循环右移直接用指针运算完成。
以上代码均可复制运行。
评论