C语言作为一种历史悠久的编程语言,因其高效性和可移植性在众多领域都占据着重要地位。无论是系统编程、嵌入式开发还是性能要求极高的应用,C语言都是不可或缺的工具。以下将为你展示50个实用的C语言编程实例,帮助你快速提升编程技能。

实例1:C语言的变量声明与赋值

#include <stdio.h>

int main() {
    int age = 25;
    float height = 1.75f;
    char grade = 'A';
    printf("Age: %d, Height: %.2f, Grade: %c\n", age, height, grade);
    return 0;
}

实例2:使用printf函数格式化输出

#include <stdio.h>

int main() {
    int num = 12345;
    printf("The number in reverse order is: %d\n", num);
    return 0;
}

实例3:输入输出函数scanf和printf的使用

#include <stdio.h>

int main() {
    int num;
    printf("Enter an integer: ");
    scanf("%d", &num);
    printf("You entered: %d\n", num);
    return 0;
}

实例4:计算两个数的和、差、积、商

#include <stdio.h>

int main() {
    int a, b, sum, difference, product, quotient;
    printf("Enter two integers: ");
    scanf("%d %d", &a, &b);
    sum = a + b;
    difference = a - b;
    product = a * b;
    quotient = a / b;
    printf("Sum: %d, Difference: %d, Product: %d, Quotient: %d\n", sum, difference, product, quotient);
    return 0;
}

实例5:判断一个数是否为素数

#include <stdio.h>
#include <stdbool.h>

bool is_prime(int n) {
    if (n <= 1) return false;
    for (int i = 2; i * i <= n; i++) {
        if (n % i == 0) return false;
    }
    return true;
}

int main() {
    int num;
    printf("Enter a number: ");
    scanf("%d", &num);
    if (is_prime(num)) {
        printf("%d is a prime number.\n", num);
    } else {
        printf("%d is not a prime number.\n", num);
    }
    return 0;
}

实例6:冒泡排序算法

#include <stdio.h>

void bubble_sort(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]);
    bubble_sort(arr, n);
    printf("Sorted array: \n");
    for (int i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");
    return 0;
}

实例7:斐波那契数列

#include <stdio.h>

void fibonacci_series(int n) {
    int a = 0, b = 1;
    printf("Fibonacci Series: %d %d ", a, b);
    for (int i = 2; i < n; i++) {
        int next = a + b;
        printf("%d ", next);
        a = b;
        b = next;
    }
    printf("\n");
}

int main() {
    int n = 10;
    fibonacci_series(n);
    return 0;
}

实例8:字符串比较

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

int main() {
    char str1[100], str2[100];
    printf("Enter first string: ");
    scanf("%99s", str1);
    printf("Enter second string: ");
    scanf("%99s", str2);
    if (strcmp(str1, str2) == 0) {
        printf("Strings are equal.\n");
    } else {
        printf("Strings are not equal.\n");
    }
    return 0;
}

实例9:结构体与指针

#include <stdio.h>

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

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

实例10:文件操作

#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!");
    fclose(file);
    return 0;
}

实例11:动态内存分配

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

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

实例12:使用循环结构

#include <stdio.h>

int main() {
    int sum = 0;
    for (int i = 1; i <= 10; i++) {
        sum += i;
    }
    printf("Sum of 1 to 10 is: %d\n", sum);
    return 0;
}

实例13:使用递归函数计算阶乘

#include <stdio.h>

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

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

实例14:使用指针进行字符串拷贝

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

void copy_string(char *src, char *dest) {
    while (*src) {
        *dest = *src;
        src++;
        dest++;
    }
    *dest = '\0';
}

int main() {
    char src[100], dest[100];
    printf("Enter a string: ");
    scanf("%99s", src);
    copy_string(src, dest);
    printf("Copied string: %s\n", dest);
    return 0;
}

实例15:使用指针访问二维数组

#include <stdio.h>

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

实例16:使用结构体数组

#include <stdio.h>

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

int main() {
    struct Person persons[2] = {
        {"Alice", 25},
        {"Bob", 30}
    };
    for (int i = 0; i < 2; i++) {
        printf("Name: %s, Age: %d\n", persons[i].name, persons[i].age);
    }
    return 0;
}

实例17:使用动态内存分配创建二维数组

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

int main() {
    int rows = 2, cols = 3;
    int **arr = (int **)malloc(rows * sizeof(int *));
    for (int i = 0; i < rows; i++) {
        arr[i] = (int *)malloc(cols * sizeof(int));
        for (int j = 0; j < cols; j++) {
            arr[i][j] = i * cols + j;
        }
    }
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < cols; j++) {
            printf("arr[%d][%d] = %d\n", i, j, arr[i][j]);
        }
    }
    for (int i = 0; i < rows; i++) {
        free(arr[i]);
    }
    free(arr);
    return 0;
}

实例18:使用函数指针

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

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

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

实例19:使用结构体指针

#include <stdio.h>

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

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

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

实例20:使用位运算

#include <stdio.h>

int main() {
    int a = 5; // 0101
    int b = 3; // 0011
    printf("a & b: %d\n", a & b); // 0001
    printf("a | b: %d\n", a | b); // 0111
    printf("a ^ b: %d\n", a ^ b); // 0110
    printf("a << 1: %d\n", a << 1); // 1010
    printf("a >> 1: %d\n", a >> 1); // 0101
    return 0;
}

实例21:使用宏定义

#include <stdio.h>

#define MAX 100

int main() {
    int arr[MAX];
    printf("Size of arr: %d\n", sizeof(arr));
    return 0;
}

实例22:使用预处理器指令

#include <stdio.h>

#if defined(__APPLE__) && defined(__MACH__)
    #define OS_NAME "macOS"
#elif defined(_WIN32)
    #define OS_NAME "Windows"
#else
    #define OS_NAME "Linux"
#endif

int main() {
    printf("Operating System: %s\n", OS_NAME);
    return 0;
}

实例23:使用文件操作读取文本文件

#include <stdio.h>

int main() {
    FILE *file = fopen("example.txt", "r");
    if (file == NULL) {
        printf("Error opening file.\n");
        return 1;
    }
    char c;
    while ((c = fgetc(file)) != EOF) {
        printf("%c", c);
    }
    fclose(file);
    return 0;
}

实例24:使用文件操作写入文本文件

#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!");
    fclose(file);
    return 0;
}

实例25:使用字符串函数

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

int main() {
    char str1[100] = "Hello";
    char str2[100] = "World";
    printf("str1: %s, str2: %s\n", str1, str2);
    strcat(str1, str2);
    printf("str1 after concatenation: %s\n", str1);
    printf("Length of str1: %ld\n", strlen(str1));
    return 0;
}

实例26:使用结构体指针和函数

#include <stdio.h>

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

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

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

实例27:使用指针数组

#include <stdio.h>

int main() {
    char *names[] = {"Alice", "Bob", "Charlie"};
    for (int i = 0; i < 3; i++) {
        printf("%s\n", names[i]);
    }
    return 0;
}

实例28:使用结构体数组和函数

#include <stdio.h>

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

void print_person(struct Person persons[], int n) {
    for (int i = 0; i < n; i++) {
        printf("Name: %s, Age: %d\n", persons[i].name, persons[i].age);
    }
}

int main() {
    struct Person persons[] = {
        {"Alice", 25},
        {"Bob", 30},
        {"Charlie", 35}
    };
    int n = sizeof(persons) / sizeof(persons[0]);
    print_person(persons, n);
    return 0;
}

实例29:使用动态内存分配创建结构体数组

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

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

int main() {
    int n = 3;
    struct Person *persons = (struct Person *)malloc(n * sizeof(struct Person));
    for (int i = 0; i < n; i++) {
        persons[i].name = (char *)malloc(50 * sizeof(char));
        sprintf(persons[i].name, "Person %d", i + 1);
        persons[i].age = 20 + i;
    }
    for (int i = 0; i < n; i++) {
        printf("Name: %s, Age: %d\n", persons[i].name, persons[i].age);
        free(persons[i].name);
    }
    free(persons);
    return 0;
}

实例30:使用函数指针数组

#include <stdio.h>

void add(int a, int b) {
    printf("%d + %d = %d\n", a, b, a + b);
}

void subtract(int a, int b) {
    printf("%d - %d = %d\n", a, b, a - b);
}

void multiply(int a, int b) {
    printf("%d * %d = %d\n", a, b, a * b);
}

void divide(int a, int b) {
    if (b != 0) {
        printf("%d / %d = %d\n", a, b, a / b);
    } else {
        printf("Division by zero is not allowed.\n");
    }
}

int main() {
    void (*ops[])(int, int) = {add, subtract, multiply, divide};
    for (int i = 0; i < 4; i++) {
        ops[i](5, 3);
    }
    return 0;
}

实例31:使用指针和函数进行内存分配和释放

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

void *allocate_memory(size_t size) {
    return malloc(size);
}

void free_memory(void *ptr) {
    free(ptr);
}

int main() {
    int *arr = (int *)allocate_memory(10 * sizeof(int));
    for (int i = 0; i < 10; i++) {
        arr[i] = i + 1;
    }
    for (int i = 0; i < 10; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");
    free_memory(arr);
    return 0;
}

实例32:使用函数指针进行回调

#include <stdio.h>

void perform_operation(int a, int b, void (*op)(int, int)) {
    op(a, b);
}

void add(int a, int b) {
    printf("%d + %d = %d\n", a, b, a + b);
}

void subtract(int a, int b) {
    printf("%d - %d = %d\n", a, b, a - b);
}

int main() {
    perform_operation(5, 3, add);
    perform_operation(5, 3, subtract);
    return 0;
}

实例33:使用结构体和位字段

#include <stdio.h>

struct BitFields {
    unsigned int flag1 : 1;
    unsigned int flag2 : 1;
    unsigned int flag3 : 1;
    unsigned int flag4 : 1;
};

int main() {
    struct BitFields bitfields;
    bitfields.flag1 = 1;
    bitfields.flag2 = 1;
    bitfields.flag3 = 0;
    bitfields.flag4 = 1;
    printf("flag1: %d\n", bitfields.flag1);
    printf("flag2: %d\n", bitfields.flag2);
    printf("flag3: %d\n", bitfields.flag3);
    printf("flag4: %d\n", bitfields.flag4);
    return 0;
}

实例34:使用宏定义进行代码替换

”`c #include