案例一:冒泡排序算法

冒泡排序是一种简单的排序算法,它重复地遍历待排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。

#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语言编程。在编程过程中,不断实践和总结是非常重要的。