实例1:计算阶乘

在C语言中,计算阶乘是一个经典的编程问题。下面是一个计算阶乘的示例代码:

#include <stdio.h>

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

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

实例2:冒泡排序

冒泡排序是C语言中最基础的排序算法之一。以下是一个使用冒泡排序对数组进行排序的示例:

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

实例3:字符串反转

字符串反转是C语言编程中常见的操作。以下是一个使用指针实现字符串反转的示例:

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

void reverseString(char *str) {
    int len = strlen(str);
    for (int i = 0; i < len / 2; i++) {
        char temp = str[i];
        str[i] = str[len - i - 1];
        str[len - i - 1] = temp;
    }
}

int main() {
    char str[] = "Hello, World!";
    printf("Original string: %s\n", str);
    reverseString(str);
    printf("Reversed string: %s\n", str);
    return 0;
}

实例4:递归查找最大元素

递归是一种强大的编程技巧,以下是一个使用递归查找数组中最大元素的示例:

#include <stdio.h>

int findMax(int arr[], int n) {
    if (n == 1)
        return arr[0];
    return (arr[n - 1] > findMax(arr, n - 1)) ? arr[n - 1] : findMax(arr, n - 1);
}

int main() {
    int arr[] = {12, 35, 1, 10, 34, 1};
    int n = sizeof(arr) / sizeof(arr[0]);
    printf("Maximum element in the array is %d\n", findMax(arr, n));
    return 0;
}

实例5:结构体和联合体

结构体和联合体是C语言中用于组织相关数据的容器。以下是一个使用结构体的示例:

#include <stdio.h>

struct Student {
    char name[50];
    int age;
    float marks;
};

int main() {
    struct Student s1, s2;
    printf("Enter details for student 1:\n");
    printf("Name: ");
    scanf("%s", s1.name);
    printf("Age: ");
    scanf("%d", &s1.age);
    printf("Marks: ");
    scanf("%f", &s1.marks);

    printf("Enter details for student 2:\n");
    printf("Name: ");
    scanf("%s", s2.name);
    printf("Age: ");
    scanf("%d", &s2.age);
    printf("Marks: ");
    scanf("%f", &s2.marks);

    printf("Details of student 1:\n");
    printf("Name: %s\n", s1.name);
    printf("Age: %d\n", s1.age);
    printf("Marks: %.2f\n", s1.marks);

    printf("Details of student 2:\n");
    printf("Name: %s\n", s2.name);
    printf("Age: %d\n", s2.age);
    printf("Marks: %.2f\n", s2.marks);
    return 0;
}

实例6:指针和数组

指针是C语言中最强大的特性之一。以下是一个使用指针和数组操作的示例:

#include <stdio.h>

int sumArray(int *arr, int n) {
    int sum = 0;
    for (int i = 0; i < n; i++)
        sum += *(arr + i);
    return sum;
}

int main() {
    int arr[] = {1, 2, 3, 4, 5};
    int n = sizeof(arr) / sizeof(arr[0]);
    printf("Sum of array elements: %d\n", sumArray(arr, n));
    return 0;
}

实例7:文件操作

文件操作是C语言编程中的重要部分。以下是一个使用C语言创建和写入文件的示例:

#include <stdio.h>

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

实例8:动态内存分配

动态内存分配是C语言中一种强大的内存管理技术。以下是一个使用mallocfree函数进行动态内存分配的示例:

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

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

实例9:函数指针

函数指针是C语言中一种强大的特性,允许将函数作为参数传递。以下是一个使用函数指针的示例:

#include <stdio.h>

int add(int a, int b) {
    return a + b;
}

int subtract(int a, int b) {
    return a - b;
}

int main() {
    int (*operation)(int, int);
    operation = add;
    printf("Result: %d\n", operation(5, 3));
    operation = subtract;
    printf("Result: %d\n", operation(5, 3));
    return 0;
}

实例10:结构体指针

结构体指针是C语言中用于访问结构体成员的一种方式。以下是一个使用结构体指针的示例:

#include <stdio.h>

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

void printPerson(struct Person *p) {
    printf("Name: %s\n", p->name);
    printf("Age: %d\n", p->age);
}

int main() {
    struct Person p = {"John Doe", 30};
    printPerson(&p);
    return 0;
}

实例11:位操作

位操作是C语言中一种高效的处理方式。以下是一个使用位操作的示例:

#include <stdio.h>

int main() {
    int a = 5; // 101
    int b = 3; // 011
    printf("a & b = %d\n", a & b); // 001
    printf("a | b = %d\n", a | b); // 111
    printf("a ^ b = %d\n", a ^ b); // 110
    printf("a << 1 = %d\n", a << 1); // 102
    printf("a >> 1 = %d\n", a >> 1); // 10
    return 0;
}

实例12:宏定义

宏定义是C语言中一种用于创建简写代码的技术。以下是一个使用宏定义的示例:

#include <stdio.h>

#define MAX(a, b) ((a) > (b) ? (a) : (b))

int main() {
    int x = 10;
    int y = 20;
    printf("Max: %d\n", MAX(x, y));
    return 0;
}

实例13:条件编译

条件编译是C语言中一种用于控制代码块执行的技术。以下是一个使用条件编译的示例:

#include <stdio.h>

#ifdef DEBUG
#define DEBUG_PRINT printf
#else
#define DEBUG_PRINT
#endif

int main() {
    DEBUG_PRINT("This is a debug message\n");
    return 0;
}

实例14:预处理器指令

预处理器指令是C语言中一种用于处理源代码的技术。以下是一个使用预处理器指令的示例:

#include <stdio.h>

#define PI 3.14159

int main() {
    float radius = 5.0;
    float area = PI * radius * radius;
    printf("Area of circle: %.2f\n", area);
    return 0;
}

实例15:结构体数组

结构体数组是C语言中一种用于存储相关数据的技术。以下是一个使用结构体数组的示例:

#include <stdio.h>

struct Rectangle {
    int length;
    int width;
};

int main() {
    struct Rectangle rectangles[2];
    rectangles[0].length = 4;
    rectangles[0].width = 2;
    rectangles[1].length = 6;
    rectangles[1].width = 3;
    printf("Area of rectangle 1: %d\n", rectangles[0].length * rectangles[0].width);
    printf("Area of rectangle 2: %d\n", rectangles[1].length * rectangles[1].width);
    return 0;
}

实例16:结构体指针数组

结构体指针数组是C语言中一种用于存储结构体指针的技术。以下是一个使用结构体指针数组的示例:

#include <stdio.h>

struct Rectangle {
    int length;
    int width;
};

void printRectangle(struct Rectangle *rect) {
    printf("Length: %d, Width: %d\n", rect->length, rect->width);
}

int main() {
    struct Rectangle rectangles[2];
    rectangles[0].length = 4;
    rectangles[0].width = 2;
    rectangles[1].length = 6;
    rectangles[1].width = 3;
    struct Rectangle *rects[2] = {&rectangles[0], &rectangles[1]};
    for (int i = 0; i < 2; i++)
        printRectangle(rects[i]);
    return 0;
}

实例17:结构体和函数

结构体和函数可以结合使用,以处理复杂的数据结构。以下是一个使用结构体和函数的示例:

#include <stdio.h>

struct Rectangle {
    int length;
    int width;
};

int area(struct Rectangle rect) {
    return rect.length * rect.width;
}

int main() {
    struct Rectangle rect = {4, 2};
    printf("Area of rectangle: %d\n", area(rect));
    return 0;
}

实例18:指针和结构体

指针和结构体可以结合使用,以更灵活地访问和修改数据。以下是一个使用指针和结构体的示例:

#include <stdio.h>

struct Rectangle {
    int length;
    int width;
};

void setDimensions(struct Rectangle *rect, int length, int width) {
    rect->length = length;
    rect->width = width;
}

int main() {
    struct Rectangle rect;
    setDimensions(&rect, 4, 2);
    printf("Length: %d, Width: %d\n", rect.length, rect.width);
    return 0;
}

实例19:结构体和函数指针

结构体和函数指针可以结合使用,以实现更灵活的函数调用。以下是一个使用结构体和函数指针的示例:

#include <stdio.h>

struct Rectangle {
    int length;
    int width;
};

int area(struct Rectangle rect) {
    return rect.length * rect.width;
}

void printArea(struct Rectangle rect, int (*func)(struct Rectangle)) {
    printf("Area: %d\n", func(rect));
}

int main() {
    struct Rectangle rect = {4, 2};
    printArea(rect, area);
    return 0;
}

实例20:动态结构体数组

动态结构体数组是C语言中一种用于存储动态分配的结构体的技术。以下是一个使用动态结构体数组的示例:

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

struct Rectangle {
    int length;
    int width;
};

int main() {
    int n;
    printf("Enter number of rectangles: ");
    scanf("%d", &n);
    struct Rectangle *rectangles = (struct Rectangle *)malloc(n * sizeof(struct Rectangle));
    if (rectangles == NULL) {
        printf("Memory allocation failed!\n");
        return 1;
    }
    for (int i = 0; i < n; i++) {
        printf("Enter length and width for rectangle %d: ", i + 1);
        scanf("%d %d", &rectangles[i].length, &rectangles[i].width);
    }
    for (int i = 0; i < n; i++)
        printf("Area of rectangle %d: %d\n", i + 1, rectangles[i].length * rectangles[i].width);
    free(rectangles);
    return 0;
}

实例21:结构体和字符串

结构体可以与字符串结合使用,以存储和处理与字符串相关的数据。以下是一个使用结构体和字符串的示例:

#include <stdio.h>

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

int main() {
    struct Person person;
    printf("Enter name: ");
    scanf("%49s", person.name);
    printf("Enter age: ");
    scanf("%d", &person.age);
    printf("Name: %s, Age: %d\n", person.name, person.age);
    return 0;
}

实例22:结构体和动态字符串

结构体可以与动态字符串结合使用,以存储和处理动态分配的字符串。以下是一个使用结构体和动态字符串的示例:

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

struct Person {
    char *name;
    int age;
};

int main() {
    struct Person person;
    printf("Enter name: ");
    person.name = (char *)malloc(50 * sizeof(char));
    scanf("%49s", person.name);
    printf("Enter age: ");
    scanf("%d", &person.age);
    printf("Name: %s, Age: %d\n", person.name, person.age);
    free(person.name);
    return 0;
}

实例23:结构体和函数指针

结构体和函数指针可以结合使用,以实现更灵活的函数调用。以下是一个使用结构体和函数指针的示例:

#include <stdio.h>

struct Rectangle {
    int length;
    int width;
};

int area(struct Rectangle rect) {
    return rect.length * rect.width;
}

void printArea(struct Rectangle rect, int (*func)(struct Rectangle)) {
    printf("Area: %d\n", func(rect));
}

int main() {
    struct Rectangle rect = {4, 2};
    printArea(rect, area);
    return 0;
}

实例24:结构体和递归

结构体和递归可以结合使用,以处理复杂的数据结构。以下是一个使用结构体和递归的示例:

#include <stdio.h>

struct Rectangle {
    int length;
    int width;
};

int area(struct Rectangle rect) {
    if (rect.length == 1 && rect.width == 1)
        return 1;
    return area({rect.length - 1, rect.width}) + area({rect.length, rect.width - 1});
}

int main() {
    struct Rectangle rect = {4, 2};
    printf("Area of rectangle: %d\n", area(rect));
    return 0;
}

实例25:结构体和文件操作

结构体和文件操作可以结合使用,以存储和处理结构体数据。以下是一个使用结构体和文件操作的示例:

#include <stdio.h>

struct Rectangle {
    int length;
    int width;
};

int main() {
    struct Rectangle rect = {4, 2};
    FILE *file = fopen("rectangle.txt", "w");
    if (file == NULL) {
        printf("Error opening file!\n");
        return 1;
    }
    fprintf(file, "Length: %d, Width: %d\n", rect.length, rect.width);
    fclose(file);
    return 0;
}

实例26:结构体和动态内存分配

结构体和动态内存分配可以结合使用,以存储和处理动态分配的数据。以下是一个使用结构体和动态内存分配的示例:

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

struct Rectangle {
    int length;
    int width;
};

int main() {
    struct Rectangle *rect = (struct Rectangle *)malloc(sizeof(struct Rectangle));
    if (rect == NULL) {
        printf("Memory allocation failed!\n");
        return 1;
    }
    rect->length = 4;
    rect->width = 2;
    printf("Length: %d, Width: %d\n", rect->length, rect->width);
    free(rect);
    return 0;
}

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

结构体和指针数组可以结合使用,以存储和处理结构体指针。以下是一个使用结构体和指针数组的示例:

”`c #include

struct Rectangle {

int length;
int width;

};

void printRectangle(struct Rectangle *rect) {

printf("Length: %d, Width: %d\n", rect->length, rect->width);

}

int main() {

struct Rectangle rectangles[2];
rectangles[0].length = 4;
rectangles[0].width =