在编程的世界里,C语言以其简洁、高效和强大的功能,成为了许多初学者和专业人士的首选语言。今天,我们就来一起探索C语言的魅力,通过50个精心挑选的编程实例,帮助你轻松入门,不再迷路。

实例1:打印“Hello, World!”

#include <stdio.h>

int main() {
    printf("Hello, World!\n");
    return 0;
}

这个简单的例子展示了C语言的基本结构,包括头文件包含、主函数和打印语句。

实例2:变量和赋值

#include <stdio.h>

int main() {
    int age = 25;
    printf("I am %d years old.\n", age);
    return 0;
}

在这个例子中,我们学习了如何声明和初始化变量。

实例3:数据类型

#include <stdio.h>

int main() {
    int num = 10;
    float fnum = 3.14f;
    char letter = 'A';
    printf("Integer: %d, Float: %f, Character: %c\n", num, fnum, letter);
    return 0;
}

这里我们介绍了C语言中的基本数据类型。

实例4:运算符

#include <stdio.h>

int main() {
    int a = 5, b = 3;
    printf("Addition: %d\n", a + b);
    printf("Subtraction: %d\n", a - b);
    printf("Multiplication: %d\n", a * b);
    printf("Division: %d\n", a / b);
    return 0;
}

这个例子展示了C语言中的基本运算符。

实例5:控制结构 - if语句

#include <stdio.h>

int main() {
    int number = 10;
    if (number > 0) {
        printf("The number is positive.\n");
    }
    return 0;
}

在这个例子中,我们学习了如何使用if语句进行条件判断。

实例6:循环 - for循环

#include <stdio.h>

int main() {
    for (int i = 1; i <= 5; i++) {
        printf("Count %d\n", i);
    }
    return 0;
}

这个例子展示了如何使用for循环来重复执行代码块。

实例7:循环 - while循环

#include <stdio.h>

int main() {
    int i = 1;
    while (i <= 5) {
        printf("Count %d\n", i);
        i++;
    }
    return 0;
}

这里我们学习了while循环的用法。

实例8:数组

#include <stdio.h>

int main() {
    int numbers[5] = {1, 2, 3, 4, 5};
    for (int i = 0; i < 5; i++) {
        printf("Array element %d: %d\n", i, numbers[i]);
    }
    return 0;
}

这个例子介绍了如何声明和使用数组。

实例9:指针

#include <stdio.h>

int main() {
    int num = 10;
    int *ptr = &num;
    printf("Value of num: %d\n", num);
    printf("Value of ptr: %p\n", (void *)ptr);
    printf("Value of *ptr: %d\n", *ptr);
    return 0;
}

这里我们探讨了指针的概念和用法。

实例10:函数

#include <stdio.h>

void greet() {
    printf("Hello, Function!\n");
}

int main() {
    greet();
    return 0;
}

这个例子展示了如何定义和使用函数。

实例11:结构体

#include <stdio.h>

typedef struct {
    char name[50];
    int age;
} Person;

int main() {
    Person person = {"Alice", 25};
    printf("Name: %s, Age: %d\n", person.name, person.age);
    return 0;
}

在这个例子中,我们学习了如何定义和使用结构体。

实例12:文件操作 - 写入文件

#include <stdio.h>

int main() {
    FILE *file = fopen("example.txt", "w");
    if (file == NULL) {
        printf("Error opening file.\n");
        return 1;
    }
    fprintf(file, "This is a test.\n");
    fclose(file);
    return 0;
}

这个例子展示了如何将数据写入文件。

实例13:文件操作 - 读取文件

#include <stdio.h>

int main() {
    FILE *file = fopen("example.txt", "r");
    if (file == NULL) {
        printf("Error opening file.\n");
        return 1;
    }
    char buffer[100];
    while (fgets(buffer, sizeof(buffer), file)) {
        printf("%s", buffer);
    }
    fclose(file);
    return 0;
}

这里我们学习了如何从文件中读取数据。

实例14:动态内存分配

#include <stdio.h>
#include <stdlib.h>

int main() {
    int *numbers = (int *)malloc(5 * sizeof(int));
    if (numbers == NULL) {
        printf("Memory allocation failed.\n");
        return 1;
    }
    for (int i = 0; i < 5; i++) {
        numbers[i] = i;
    }
    for (int i = 0; i < 5; i++) {
        printf("%d ", numbers[i]);
    }
    printf("\n");
    free(numbers);
    return 0;
}

这个例子展示了如何动态分配和释放内存。

实例15:指针和数组

#include <stdio.h>

int main() {
    int numbers[5] = {1, 2, 3, 4, 5};
    for (int *ptr = numbers; ptr < numbers + 5; ptr++) {
        printf("%d ", *ptr);
    }
    printf("\n");
    return 0;
}

这里我们学习了如何使用指针来访问数组元素。

实例16:函数指针

#include <stdio.h>

void printNumber(int num) {
    printf("Number: %d\n", num);
}

int main() {
    void (*funcPtr)(int) = printNumber;
    funcPtr(10);
    return 0;
}

这个例子展示了如何使用函数指针。

实例17:结构体指针

#include <stdio.h>

typedef struct {
    char name[50];
    int age;
} Person;

int main() {
    Person person = {"Bob", 30};
    Person *ptr = &person;
    printf("Name: %s, Age: %d\n", ptr->name, ptr->age);
    return 0;
}

这里我们学习了如何使用结构体指针。

实例18:链表 - 创建链表

#include <stdio.h>
#include <stdlib.h>

typedef struct Node {
    int data;
    struct Node *next;
} Node;

Node *createNode(int data) {
    Node *newNode = (Node *)malloc(sizeof(Node));
    if (newNode == NULL) {
        printf("Memory allocation failed.\n");
        return NULL;
    }
    newNode->data = data;
    newNode->next = NULL;
    return newNode;
}

int main() {
    Node *head = createNode(1);
    head->next = createNode(2);
    head->next->next = createNode(3);
    return 0;
}

这个例子展示了如何创建一个简单的链表。

实例19:链表 - 插入节点

#include <stdio.h>
#include <stdlib.h>

typedef struct Node {
    int data;
    struct Node *next;
} Node;

Node *createNode(int data) {
    Node *newNode = (Node *)malloc(sizeof(Node));
    if (newNode == NULL) {
        printf("Memory allocation failed.\n");
        return NULL;
    }
    newNode->data = data;
    newNode->next = NULL;
    return newNode;
}

void insertNode(Node **head, int data) {
    Node *newNode = createNode(data);
    newNode->next = *head;
    *head = newNode;
}

int main() {
    Node *head = NULL;
    insertNode(&head, 4);
    insertNode(&head, 3);
    insertNode(&head, 2);
    insertNode(&head, 1);
    return 0;
}

这里我们学习了如何在链表中插入节点。

实例20:链表 - 删除节点

#include <stdio.h>
#include <stdlib.h>

typedef struct Node {
    int data;
    struct Node *next;
} Node;

Node *createNode(int data) {
    Node *newNode = (Node *)malloc(sizeof(Node));
    if (newNode == NULL) {
        printf("Memory allocation failed.\n");
        return NULL;
    }
    newNode->data = data;
    newNode->next = NULL;
    return newNode;
}

void insertNode(Node **head, int data) {
    Node *newNode = createNode(data);
    newNode->next = *head;
    *head = newNode;
}

void deleteNode(Node **head, int data) {
    Node *temp = *head, *prev = NULL;
    if (temp != NULL && temp->data == data) {
        *head = temp->next;
        free(temp);
        return;
    }
    while (temp != NULL && temp->data != data) {
        prev = temp;
        temp = temp->next;
    }
    if (temp == NULL) return;
    prev->next = temp->next;
    free(temp);
}

int main() {
    Node *head = NULL;
    insertNode(&head, 4);
    insertNode(&head, 3);
    insertNode(&head, 2);
    insertNode(&head, 1);
    deleteNode(&head, 3);
    return 0;
}

这个例子展示了如何在链表中删除节点。

实例21:递归

#include <stdio.h>

int factorial(int n) {
    if (n == 0)
        return 1;
    return n * factorial(n - 1);
}

int main() {
    int number = 5;
    printf("Factorial of %d is %d\n", number, factorial(number));
    return 0;
}

这里我们学习了递归的概念和用法。

实例22:排序算法 - 冒泡排序

#include <stdio.h>

void bubbleSort(int arr[], int n) {
    for (int i = 0; i < n - 1; i++) {
        for (int j = 0; j < n - i - 1; j++) {
            if (arr[j] > arr[j + 1]) {
                int 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;
}

这个例子展示了冒泡排序算法。

实例23:排序算法 - 选择排序

#include <stdio.h>

void selectionSort(int arr[], int n) {
    int i, j, min_idx;
    for (i = 0; i < n - 1; i++) {
        min_idx = i;
        for (j = i + 1; j < n; j++)
            if (arr[j] < arr[min_idx])
                min_idx = j;
        int temp = arr[min_idx];
        arr[min_idx] = arr[i];
        arr[i] = temp;
    }
}

int main() {
    int arr[] = {64, 34, 25, 12, 22, 11, 90};
    int n = sizeof(arr) / sizeof(arr[0]);
    selectionSort(arr, n);
    printf("Sorted array: \n");
    for (int i = 0; i < n; i++)
        printf("%d ", arr[i]);
    printf("\n");
    return 0;
}

这里我们学习了选择排序算法。

实例24:排序算法 - 插入排序

#include <stdio.h>

void insertionSort(int arr[], int n) {
    int i, key, j;
    for (i = 1; i < n; i++) {
        key = arr[i];
        j = i - 1;
        while (j >= 0 && arr[j] > key) {
            arr[j + 1] = arr[j];
            j = j - 1;
        }
        arr[j + 1] = key;
    }
}

int main() {
    int arr[] = {64, 34, 25, 12, 22, 11, 90};
    int n = sizeof(arr) / sizeof(arr[0]);
    insertionSort(arr, n);
    printf("Sorted array: \n");
    for (int i = 0; i < n; i++)
        printf("%d ", arr[i]);
    printf("\n");
    return 0;
}

这个例子展示了插入排序算法。

实例25:排序算法 - 快速排序

#include <stdio.h>

void swap(int *a, int *b) {
    int t = *a;
    *a = *b;
    *b = t;
}

int partition(int arr[], int low, int high) {
    int pivot = arr[high];
    int i = (low - 1);
    for (int j = low; j <= high - 1; j++) {
        if (arr[j] < pivot) {
            i++;
            swap(&arr[i], &arr[j]);
        }
    }
    swap(&arr[i + 1], &arr[high]);
    return (i + 1);
}

void quickSort(int arr[], int low, int high) {
    if (low < high) {
        int pi = partition(arr, low, high);
        quickSort(arr, low, pi - 1);
        quickSort(arr, pi + 1, high);
    }
}

int main() {
    int arr[] = {64, 34, 25, 12, 22, 11, 90};
    int n = sizeof(arr) / sizeof(arr[0]);
    quickSort(arr, 0, n - 1);
    printf("Sorted array: \n");
    for (int i = 0; i < n; i++)
        printf("%d ", arr[i]);
    printf("\n");
    return 0;
}

这里我们学习了快速排序算法。

实例26:排序算法 - 归并排序

#include <stdio.h>

void merge(int arr[], int l, int m, int r) {
    int i, j, k;
    int n1 = m - l + 1;
    int n2 = r - m;
    int L[n1], R[n2];
    for (i = 0; i < n1; i++)
        L[i] = arr[l + i];
    for (j = 0; j < n2; j++)
        R[j] = arr[m + 1 + j];
    i = 0;
    j = 0;
    k = l;
    while (i < n1 && j < n2) {
        if (L[i] <= R[j]) {
            arr[k] = L[i];
            i++;
        } else {
            arr[k] = R[j];
            j++;
        }
        k++;
    }
    while (i < n1) {
        arr[k] = L[i];
        i++;
        k++;
    }
    while (j < n2) {
        arr[k] = R[j];
        j++;
        k++;
    }
}

void mergeSort(int arr[], int l, int r) {
    if (l < r) {
        int m = l + (r - l) / 2;
        mergeSort(arr, l, m);
        mergeSort(arr, m + 1, r);
        merge(arr, l, m, r);
    }
}

int main() {
    int arr[] = {12, 11, 13, 5, 6, 7};
    int arr_size = sizeof(arr) / sizeof(arr[0]);
    mergeSort(arr, 0, arr_size - 1);
    printf("\nSorted array is \n");
    for (int i = 0; i < arr_size; i++)
        printf("%d ", arr[i]);
    printf("\n");
    return 0;
}

这个例子展示了归并排序算法。

实例27:字符串处理 - 字符串长度

#include <stdio.h>
#include <string.h>

int main() {
    char str[] = "Hello, World!";
    printf("Length of string: %ld\n", strlen(str));
    return 0;
}

这个例子展示了如何计算字符串的长度。

实例28:字符串处理 - 字符串拷贝

#include <stdio.h>
#include <string.h>

int main() {
    char src[] = "Hello, World!";
    char dest[100];
    strcpy(dest, src);
    printf("Copied string: %s\n", dest);
    return 0;
}

这里我们学习了如何拷贝字符串。

实例29:字符串处理 - 字符串连接

#include <stdio.h>
#include <string.h>

int main() {
    char str1[] = "Hello, ";
    char str2[] = "World!";
    char result[100];
    strcat(result, str1);
    strcat(result, str2);
    printf("Concatenated string: %s\n", result);
    return 0;
}

这个例子展示了如何连接字符串。

实例30:字符串处理 - 字符串比较

”`c #include #include

int main() {

char str1[] = "Hello";
char str2[] = "World";
int result = strcmp(str1, str2);
if (result == 0)
    printf("Strings are equal