案例一:冒泡排序算法
冒泡排序是一种简单的排序算法,它重复地遍历待排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。
#include <stdio.h>
void bubbleSort(int arr[], int n) {
int i, j, temp;
for (i = 0; i < n-1; i++) {
for (j = 0; j < n-i-1; j++) {
if (arr[j] > arr[j+1]) {
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
int main() {
int arr[] = {64, 34, 25, 12, 22, 11, 90};
int n = sizeof(arr)/sizeof(arr[0]);
bubbleSort(arr, n);
printf("Sorted array: \n");
for (int i=0; i < n; i++)
printf("%d ", arr[i]);
printf("\n");
return 0;
}
技巧分享
- 冒泡排序的时间复杂度为O(n^2),适用于小规模数据的排序。
- 对于大数据量,可以使用快速排序、归并排序等更高效的算法。
案例二:C语言中的指针
指针是C语言中的一个重要概念,它允许程序访问和操作内存地址。
#include <stdio.h>
int main() {
int a = 10;
int *ptr = &a;
printf("Value of a: %d\n", a);
printf("Address of a: %p\n", (void *)&a);
printf("Value of ptr: %d\n", *ptr);
printf("Address of ptr: %p\n", (void *)ptr);
printf("Address of value pointed by ptr: %p\n", (void *)*ptr);
return 0;
}
技巧分享
- 指针可以用来动态分配内存,提高程序的灵活性。
- 在使用指针时,要注意避免指针悬挂等问题。
案例三:文件操作
文件操作是C语言编程中常见的任务,以下是一个简单的文件读取和写入的例子。
#include <stdio.h>
int main() {
FILE *fp;
char ch;
// 打开文件
fp = fopen("example.txt", "r");
if (fp == NULL) {
perror("Error opening file");
return -1;
}
// 读取文件
while ((ch = fgetc(fp)) != EOF) {
putchar(ch);
}
// 关闭文件
fclose(fp);
// 写入文件
fp = fopen("example.txt", "w");
if (fp == NULL) {
perror("Error opening file");
return -1;
}
fprintf(fp, "Hello, world!\n");
fclose(fp);
return 0;
}
技巧分享
- 使用
fopen函数打开文件,fclose函数关闭文件。 - 使用
fgetc函数读取文件内容,使用fprintf函数写入文件内容。
通过以上案例和技巧分享,希望读者能够更好地掌握C语言编程。在编程过程中,不断实践和总结是非常重要的。
