实例1:计算阶乘

阶乘是一个数学中的基础概念,用于表示一个正整数的阶乘。在C语言中,我们可以通过循环来计算阶乘。

#include <stdio.h>

unsigned long long factorial(int n) {
    unsigned long long fact = 1;
    for (int i = 2; i <= n; i++) {
        fact *= i;
    }
    return fact;
}

int main() {
    int number;
    printf("Enter a number: ");
    scanf("%d", &number);
    printf("Factorial of %d is %llu\n", number, factorial(number));
    return 0;
}

实例2:计算最大公约数

最大公约数(GCD)是数学中一个非常重要的概念。下面是一个用C语言实现的GCD算法。

#include <stdio.h>

int gcd(int a, int b) {
    while (b != 0) {
        int temp = b;
        b = a % b;
        a = temp;
    }
    return a;
}

int main() {
    int num1, num2;
    printf("Enter two numbers: ");
    scanf("%d %d", &num1, &num2);
    printf("GCD of %d and %d is %d\n", num1, num2, gcd(num1, num2));
    return 0;
}

实例3:冒泡排序

冒泡排序是一种简单的排序算法,下面是使用C语言实现的冒泡排序。

#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;
}

实例4:递归函数

递归函数是一种编程技巧,允许函数在执行过程中调用自身。以下是一个用C语言实现的递归函数,用于计算阶乘。

#include <stdio.h>

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

int main() {
    int number;
    printf("Enter a number: ");
    scanf("%d", &number);
    printf("Factorial of %d is %d\n", number, factorial(number));
    return 0;
}

实例5:字符串处理

字符串处理是C语言中的一个重要领域。以下是一个简单的示例,演示了如何使用C语言字符串函数。

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

int main() {
    char str1[] = "Hello, World!";
    char str2[100];

    printf("String 1: %s\n", str1);
    printf("Length of String 1: %ld\n", strlen(str1));
    strcpy(str2, str1);
    printf("String 2: %s\n", str2);

    return 0;
}

实例6:文件操作

C语言中的文件操作功能强大,可以处理文本文件和二进制文件。以下是一个简单的示例,演示了如何使用C语言读写文件。

#include <stdio.h>

int main() {
    FILE *fp;
    char filename[] = "example.txt";
    char buffer[100];

    fp = fopen(filename, "w");
    fprintf(fp, "This is a sample text file.\n");
    fclose(fp);

    fp = fopen(filename, "r");
    while (fgets(buffer, sizeof(buffer), fp)) {
        printf("%s", buffer);
    }
    fclose(fp);

    return 0;
}

实例7:指针和数组

指针和数组是C语言中最核心的概念之一。以下是一个使用指针和数组的示例,演示了如何访问和修改数组元素。

#include <stdio.h>

int main() {
    int arr[] = {1, 2, 3, 4, 5};
    int *ptr = arr;
    int size = sizeof(arr) / sizeof(arr[0]);

    printf("Array elements:\n");
    for (int i = 0; i < size; i++) {
        printf("%d ", *(ptr + i));
    }
    printf("\n");

    // Modify array element using pointer
    *(ptr + 2) = 10;
    printf("Modified array elements:\n");
    for (int i = 0; i < size; i++) {
        printf("%d ", *(ptr + i));
    }
    printf("\n");

    return 0;
}

实例8:结构体

结构体(struct)是C语言中用于组织数据的一种方式。以下是一个简单的示例,演示了如何定义和使用结构体。

#include <stdio.h>

struct student {
    char name[50];
    int age;
    float gpa;
};

int main() {
    struct student stu1, stu2;
    strcpy(stu1.name, "John");
    stu1.age = 20;
    stu1.gpa = 3.8;
    strcpy(stu2.name, "Jane");
    stu2.age = 21;
    stu2.gpa = 3.5;

    printf("Student 1: %s, %d, %.2f\n", stu1.name, stu1.age, stu1.gpa);
    printf("Student 2: %s, %d, %.2f\n", stu2.name, stu2.age, stu2.gpa);

    return 0;
}

实例9:动态内存分配

动态内存分配是C语言中的一个重要概念,它允许程序在运行时分配内存。以下是一个简单的示例,演示了如何使用mallocfree函数进行动态内存分配。

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

int main() {
    int *arr;
    int n, i;

    printf("Enter the size of the array: ");
    scanf("%d", &n);

    arr = (int *)malloc(n * sizeof(int));
    if (arr == NULL) {
        printf("Memory allocation failed\n");
        return 1;
    }

    printf("Enter the elements of the array:\n");
    for (i = 0; i < n; i++) {
        scanf("%d", &arr[i]);
    }

    printf("Array elements:\n");
    for (i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");

    free(arr);

    return 0;
}

实例10:结构体指针和数组

结构体指针和数组在C语言中非常实用,可以用来存储和管理复杂的数据。以下是一个简单的示例,演示了如何使用结构体指针和数组。

#include <stdio.h>

struct student {
    char name[50];
    int age;
    float gpa;
};

int main() {
    struct student students[3];
    struct student *ptr;

    strcpy(students[0].name, "John");
    students[0].age = 20;
    students[0].gpa = 3.8;
    strcpy(students[1].name, "Jane");
    students[1].age = 21;
    students[1].gpa = 3.5;
    strcpy(students[2].name, "Bob");
    students[2].age = 22;
    students[2].gpa = 3.9;

    ptr = students;
    for (int i = 0; i < 3; i++) {
        printf("Name: %s, Age: %d, GPA: %.2f\n", ptr[i].name, ptr[i].age, ptr[i].gpa);
    }

    return 0;
}

实例11:链表操作

链表是一种重要的数据结构,在C语言中可以用来实现动态数据结构。以下是一个简单的示例,演示了如何使用C语言实现单向链表的基本操作。

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

struct node {
    int data;
    struct node *next;
};

void insert(struct node **head, int data) {
    struct node *newNode = (struct node *)malloc(sizeof(struct node));
    newNode->data = data;
    newNode->next = *head;
    *head = newNode;
}

void printList(struct node *head) {
    while (head != NULL) {
        printf("%d ", head->data);
        head = head->next;
    }
    printf("\n");
}

int main() {
    struct node *head = NULL;

    insert(&head, 5);
    insert(&head, 3);
    insert(&head, 8);

    printf("Linked list: ");
    printList(head);

    return 0;
}

实例12:队列操作

队列是一种先进先出(FIFO)的数据结构。以下是一个简单的示例,演示了如何使用C语言实现队列的基本操作。

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

#define QUEUE_SIZE 5

int queue[QUEUE_SIZE];
int front = 0;
int rear = -1;

void enqueue(int data) {
    if ((rear + 1) % QUEUE_SIZE == front) {
        printf("Queue is full\n");
    } else {
        rear = (rear + 1) % QUEUE_SIZE;
        queue[rear] = data;
    }
}

int dequeue() {
    if (front == rear) {
        printf("Queue is empty\n");
        return -1;
    } else {
        int data = queue[front];
        front = (front + 1) % QUEUE_SIZE;
        return data;
    }
}

void printQueue() {
    printf("Queue elements: ");
    for (int i = front; i != rear; i = (i + 1) % QUEUE_SIZE) {
        printf("%d ", queue[i]);
    }
    printf("\n");
}

int main() {
    enqueue(10);
    enqueue(20);
    enqueue(30);
    printQueue();
    dequeue();
    printQueue();
    dequeue();
    dequeue();
    enqueue(40);
    enqueue(50);
    enqueue(60);
    printQueue();

    return 0;
}

实例13:栈操作

栈是一种后进先出(LIFO)的数据结构。以下是一个简单的示例,演示了如何使用C语言实现栈的基本操作。

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

#define STACK_SIZE 5

int stack[STACK_SIZE];
int top = -1;

void push(int data) {
    if (top == STACK_SIZE - 1) {
        printf("Stack is full\n");
    } else {
        top++;
        stack[top] = data;
    }
}

int pop() {
    if (top == -1) {
        printf("Stack is empty\n");
        return -1;
    } else {
        int data = stack[top];
        top--;
        return data;
    }
}

void printStack() {
    printf("Stack elements: ");
    for (int i = top; i >= 0; i--) {
        printf("%d ", stack[i]);
    }
    printf("\n");
}

int main() {
    push(10);
    push(20);
    push(30);
    printStack();
    pop();
    printStack();
    pop();
    pop();
    push(40);
    push(50);
    push(60);
    printStack();

    return 0;
}

实例14:排序算法(快速排序)

快速排序是一种高效的排序算法,以下是一个使用C语言实现的快速排序示例。

#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;
}

实例15:排序算法(归并排序)

归并排序是一种分治排序算法,以下是一个使用C语言实现的归并排序示例。

#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;
}

实例16:排序算法(选择排序)

选择排序是一种简单但效率较低的排序算法。以下是一个使用C语言实现的选择排序示例。

#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;
}

实例17:排序算法(插入排序)

插入排序是一种简单的排序算法,适用于小数据集。以下是一个使用C语言实现的插入排序示例。

#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[] = {12, 11, 13, 5, 6, 7};
    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;
}

实例18:排序算法(冒泡排序)

冒泡排序是一种简单的排序算法,但效率较低。以下是一个使用C语言实现的冒泡排序示例。

”`c #include

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: \