1. 案例一:C语言基础语法入门

1.1 数据类型

在C语言中,数据类型包括整型、浮点型、字符型等。以下是一个整型变量的定义和赋值示例:

#include <stdio.h>

int main() {
    int age = 25;
    printf("年龄:%d\n", age);
    return 0;
}

1.2 变量声明和初始化

变量的声明和初始化是C语言编程的基础。以下是一个变量的声明和初始化示例:

int num; // 声明一个整型变量
num = 10; // 初始化变量

2. 案例二:C语言运算符

C语言运算符包括算术运算符、逻辑运算符、位运算符等。以下是一个算术运算符的示例:

#include <stdio.h>

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

3. 案例三:C语言控制语句

控制语句包括条件语句(if、switch)、循环语句(for、while、do-while)等。以下是一个条件语句的示例:

#include <stdio.h>

int main() {
    int num = 10;
    if (num > 5) {
        printf("num 大于 5\n");
    } else {
        printf("num 小于等于 5\n");
    }
    return 0;
}

4. 案例四:C语言数组操作

数组是C语言中常用的数据结构之一。以下是一个数组的定义、初始化和遍历示例:

#include <stdio.h>

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

5. 案例五:C语言指针

指针是C语言中的核心概念之一。以下是一个指针的定义、赋值和访问示例:

#include <stdio.h>

int main() {
    int a = 10;
    int *ptr = &a; // 指针ptr指向变量a的地址
    printf("a 的值:%d\n", a);
    printf("*ptr 的值:%d\n", *ptr);
    return 0;
}

6. 案例六:C语言函数

函数是C语言程序模块化的基础。以下是一个函数的定义、声明和调用示例:

#include <stdio.h>

// 函数声明
void printHello();

int main() {
    // 调用函数
    printHello();
    return 0;
}

// 函数定义
void printHello() {
    printf("Hello, World!\n");
}

7. 案例七:C语言结构体

结构体是C语言中用于创建自定义数据类型的复杂数据结构。以下是一个结构体的定义、声明和初始化示例:

#include <stdio.h>

// 结构体定义
struct Student {
    char name[50];
    int age;
};

int main() {
    // 结构体声明
    struct Student stu;
    // 结构体初始化
    strcpy(stu.name, "张三");
    stu.age = 20;
    printf("学生姓名:%s,年龄:%d\n", stu.name, stu.age);
    return 0;
}

8. 案例八:C语言文件操作

文件操作是C语言中常见的功能之一。以下是一个文件打开、读取、关闭的示例:

#include <stdio.h>

int main() {
    FILE *fp;
    char buffer[100];
    // 打开文件
    fp = fopen("example.txt", "r");
    if (fp == NULL) {
        printf("文件打开失败\n");
        return -1;
    }
    // 读取文件内容
    while (fgets(buffer, sizeof(buffer), fp)) {
        printf("%s", buffer);
    }
    // 关闭文件
    fclose(fp);
    return 0;
}

9. 案例九:C语言动态内存分配

动态内存分配是C语言中管理内存的重要手段。以下是一个动态内存分配的示例:

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

int main() {
    int *ptr = (int *)malloc(sizeof(int) * 5);
    if (ptr == NULL) {
        printf("内存分配失败\n");
        return -1;
    }
    // 使用动态分配的内存
    for (int i = 0; i < 5; i++) {
        ptr[i] = i + 1;
    }
    // 释放动态分配的内存
    free(ptr);
    return 0;
}

10. 案例十:C语言网络编程

网络编程是C语言中较为高级的应用。以下是一个简单的TCP客户端示例:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>

int main() {
    int sock;
    struct sockaddr_in server_addr;
    char buffer[100];

    // 创建套接字
    sock = socket(AF_INET, SOCK_STREAM, 0);
    if (sock < 0) {
        printf("创建套接字失败\n");
        return -1;
    }

    // 设置服务器地址
    memset(&server_addr, 0, sizeof(server_addr));
    server_addr.sin_family = AF_INET;
    server_addr.sin_port = htons(8080);
    server_addr.sin_addr.s_addr = inet_addr("127.0.0.1");

    // 连接服务器
    if (connect(sock, (struct sockaddr *)&server_addr, sizeof(server_addr)) < 0) {
        printf("连接服务器失败\n");
        return -1;
    }

    // 发送数据
    strcpy(buffer, "Hello, server!");
    send(sock, buffer, strlen(buffer), 0);

    // 接收数据
    recv(sock, buffer, sizeof(buffer), 0);
    printf("从服务器接收到的数据:%s\n", buffer);

    // 关闭套接字
    close(sock);
    return 0;
}

11. 案例十一:C语言字符串处理

字符串处理是C语言中常见的功能之一。以下是一个字符串连接的示例:

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

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

    // 字符串连接
    strcpy(str3, str1);
    strcat(str3, str2);
    printf("连接后的字符串:%s\n", str3);

    return 0;
}

12. 案例十二:C语言时间处理

时间处理是C语言中常用的功能之一。以下是一个获取当前时间的示例:

#include <stdio.h>
#include <time.h>

int main() {
    time_t now;
    struct tm *tm_info;

    // 获取当前时间
    time(&now);
    tm_info = localtime(&now);

    // 打印时间
    printf("当前时间:%d-%d-%d %d:%d:%d\n", tm_info->tm_year + 1900, tm_info->tm_mon + 1, tm_info->tm_mday, tm_info->tm_hour, tm_info->tm_min, tm_info->tm_sec);

    return 0;
}

13. 案例十三:C语言图形编程

图形编程是C语言中较为高级的应用。以下是一个使用OpenGL绘制矩形的示例:

#include <GL/glut.h>

void display() {
    glClear(GL_COLOR_BUFFER_BIT);
    glBegin(GL_POLYGON);
    glVertex2f(-0.5f, -0.5f);
    glVertex2f(0.5f, -0.5f);
    glVertex2f(0.5f, 0.5f);
    glVertex2f(-0.5f, 0.5f);
    glEnd();
    glFlush();
}

int main(int argc, char **argv) {
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
    glutInitWindowSize(400, 400);
    glutInitWindowPosition(100, 100);
    glutCreateWindow("OpenGL Example");
    glClearColor(1.0, 1.0, 1.0, 1.0);
    glutDisplayFunc(display);
    glutMainLoop();
    return 0;
}

14. 案例十四:C语言加密算法

加密算法是C语言中常用的安全手段之一。以下是一个简单的凯撒密码加密算法的示例:

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

void caesarCipher(char *input, char *output, int shift) {
    int i;
    for (i = 0; input[i] != '\0'; i++) {
        if ((input[i] >= 'a' && input[i] <= 'z') || (input[i] >= 'A' && input[i] <= 'Z')) {
            output[i] = input[i] + shift;
            if ((input[i] >= 'a' && input[i] <= 'z' && output[i] > 'z') || (input[i] >= 'A' && input[i] <= 'Z' && output[i] > 'Z')) {
                output[i] -= 26;
            }
        } else {
            output[i] = input[i];
        }
    }
    output[i] = '\0';
}

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

    caesarCipher(input, output, 3);
    printf("加密后的字符串:%s\n", output);

    return 0;
}

15. 案例十五:C语言排序算法

排序算法是C语言中常见的算法之一。以下是一个冒泡排序算法的示例:

#include <stdio.h>

void bubbleSort(int *arr, int len) {
    int i, j, temp;
    for (i = 0; i < len - 1; i++) {
        for (j = 0; j < len - 1 - i; j++) {
            if (arr[j] > arr[j + 1]) {
                temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }
}

int main() {
    int arr[] = {5, 3, 8, 6, 2};
    int len = sizeof(arr) / sizeof(arr[0]);

    bubbleSort(arr, len);

    printf("排序后的数组:");
    for (int i = 0; i < len; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");

    return 0;
}

16. 案例十六:C语言查找算法

查找算法是C语言中常见的算法之一。以下是一个线性查找算法的示例:

#include <stdio.h>

int linearSearch(int *arr, int len, int target) {
    for (int i = 0; i < len; i++) {
        if (arr[i] == target) {
            return i;
        }
    }
    return -1;
}

int main() {
    int arr[] = {5, 3, 8, 6, 2};
    int len = sizeof(arr) / sizeof(arr[0]);
    int target = 6;

    int index = linearSearch(arr, len, target);
    if (index != -1) {
        printf("找到目标:%d\n", target);
    } else {
        printf("未找到目标:%d\n", target);
    }

    return 0;
}

17. 案例十七:C语言递归算法

递归算法是C语言中常见的算法之一。以下是一个计算阶乘的递归算法示例:

#include <stdio.h>

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

int main() {
    int n = 5;
    printf("%d 的阶乘:%lld\n", n, factorial(n));
    return 0;
}

18. 案例十八:C语言链表操作

链表是C语言中常用的数据结构之一。以下是一个单链表的创建、插入、删除和遍历示例:

#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));
    newNode->data = data;
    newNode->next = NULL;
    return newNode;
}

// 在链表末尾插入节点
void insertNode(Node **head, int data) {
    Node *newNode = createNode(data);
    if (*head == NULL) {
        *head = newNode;
    } else {
        Node *temp = *head;
        while (temp->next != NULL) {
            temp = temp->next;
        }
        temp->next = newNode;
    }
}

// 删除链表节点
void deleteNode(Node **head, int data) {
    Node *temp = *head, *prev = NULL;
    while (temp != NULL && temp->data != data) {
        prev = temp;
        temp = temp->next;
    }
    if (temp == NULL) {
        printf("未找到要删除的节点\n");
        return;
    }
    if (prev == NULL) {
        *head = temp->next;
    } else {
        prev->next = temp->next;
    }
    free(temp);
}

// 遍历链表
void traverseList(Node *head) {
    Node *temp = head;
    while (temp != NULL) {
        printf("%d ", temp->data);
        temp = temp->next;
    }
    printf("\n");
}

int main() {
    Node *head = NULL;
    insertNode(&head, 10);
    insertNode(&head, 20);
    insertNode(&head, 30);
    insertNode(&head, 40);

    printf("链表元素:");
    traverseList(head);

    deleteNode(&head, 20);

    printf("删除后的链表元素:");
    traverseList(head);

    return 0;
}

19. 案例十九:C语言栈操作

栈是一种后进先出(LIFO)的数据结构。以下是一个栈的创建、入栈、出栈和判空示例:

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

#define MAX_SIZE 100

// 定义栈结构
typedef struct Stack {
    int data[MAX_SIZE];
    int top;
} Stack;

// 创建栈
void createStack(Stack *s) {
    s->top = -1;
}

// 入栈
void push(Stack *s, int data) {
    if (s->top == MAX_SIZE - 1) {
        printf("栈已满\n");
        return;
    }
    s->data[++s->top] = data;
}

// 出栈
int pop(Stack *s) {
    if (s->top == -1) {
        printf("栈为空\n");
        return -1;
    }
    return s->data[s->top--];
}

// 判空
int isEmpty(Stack *s) {
    return s->top == -1;
}

int main() {
    Stack s;
    createStack(&s);

    push(&s, 10);
    push(&s, 20);
    push(&s, 30);

    printf("栈元素:");
    while (!isEmpty(&s)) {
        printf("%d ", pop(&s));
    }
    printf("\n");

    return 0;
}

20. 案例二十:C语言队列操作

队列是一种先进先出(FIFO)的数据结构。以下是一个队列的创建、入队、出队和判空示例:

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

#define MAX_SIZE 100

// 定义队列结构
typedef struct Queue {
    int data[MAX_SIZE];
    int front;
    int rear;
} Queue;

// 创建队列
void createQueue(Queue *q) {
    q->front = q->rear = -1;
}

// 入队
void enqueue(Queue *q, int data) {
    if ((q->rear + 1) % MAX_SIZE == q->front) {
        printf("队列已满\n");
        return;
    }
    if (q->rear == -1) {
        q->front = q->rear = 0;
    } else {
        q->rear = (q->rear + 1) % MAX_SIZE;
    }
    q->data[q->rear] = data;
}

// 出队
int dequeue(Queue *q) {
    if (q->rear == -1) {
        printf("队列已空\n");
        return -1;
    }
    if (q->rear == q->front) {
        q->front = q->rear = -1;
    } else {
        q->front = (q->front + 1) % MAX_SIZE;
    }
    return q->data[q->front];
}

// 判空
int isEmpty(Queue *q) {
    return q->rear == -1;
}

int main() {
    Queue q;
    createQueue(&q);

    enqueue(&q, 10);
    enqueue(&q, 20);
    enqueue(&q, 30);

    printf("队列元素:");
    while (!isEmpty(&q)) {
        printf("%d ", dequeue(&q));
    }
    printf("\n");

    return 0;
}

21. 案例二十一:C语言散列表

散列表(哈希表)是一种高效的查找和存储数据的数据结构。以下是一个简单的散列表的创建、插入、删除和查找示例: “`c #include #include

#define TABLE