1. C语言基础

1.1 数据类型与变量

在C语言中,数据类型决定了变量的存储方式和占用内存的大小。常见的几种数据类型包括整型(int)、浮点型(float)、字符型(char)等。

实例

#include <stdio.h>

int main() {
    int a = 10;
    float b = 3.14;
    char c = 'A';
    printf("整型:%d\n", a);
    printf("浮点型:%f\n", b);
    printf("字符型:%c\n", c);
    return 0;
}

1.2 运算符

C语言中的运算符包括算术运算符、关系运算符、逻辑运算符等。

实例

#include <stdio.h>

int main() {
    int a = 5, b = 3;
    printf("加法:%d\n", a + b);
    printf("减法:%d\n", a - b);
    printf("乘法:%d\n", a * b);
    printf("除法:%d\n", a / b);
    printf("余数:%d\n", a % b);
    return 0;
}

2. 控制结构

2.1 条件语句

条件语句用于根据条件判断执行不同的代码块。

实例

#include <stdio.h>

int main() {
    int a = 10;
    if (a > 0) {
        printf("a大于0\n");
    } else {
        printf("a不大于0\n");
    }
    return 0;
}

2.2 循环结构

循环结构用于重复执行某段代码。

实例

#include <stdio.h>

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

3. 函数

3.1 函数定义与调用

函数是C语言中实现代码复用的关键。

实例

#include <stdio.h>

void printMessage() {
    printf("Hello, World!\n");
}

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

4. 数组

4.1 一维数组

一维数组用于存储一组具有相同数据类型的元素。

实例

#include <stdio.h>

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

5. 指针

5.1 指针定义与使用

指针是C语言中用于存储变量地址的数据类型。

实例

#include <stdio.h>

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

6. 结构体

6.1 结构体定义与使用

结构体用于将不同类型的数据组合在一起。

实例

#include <stdio.h>

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

int main() {
    struct Student stu1;
    strcpy(stu1.name, "张三");
    stu1.age = 20;
    stu1.score = 90.5;
    printf("学生姓名:%s\n", stu1.name);
    printf("学生年龄:%d\n", stu1.age);
    printf("学生成绩:%f\n", stu1.score);
    return 0;
}

7. 文件操作

7.1 文件读写

文件操作是C语言中处理数据的一种方式。

实例

#include <stdio.h>

int main() {
    FILE *fp = fopen("example.txt", "w");
    if (fp == NULL) {
        printf("打开文件失败\n");
        return 1;
    }
    fprintf(fp, "Hello, World!\n");
    fclose(fp);
    return 0;
}

8. 动态内存分配

8.1 动态内存分配与释放

动态内存分配用于在程序运行时分配内存。

实例

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

int main() {
    int *arr = (int*)malloc(5 * sizeof(int));
    if (arr == NULL) {
        printf("内存分配失败\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. 链表

9.1 链表定义与操作

链表是一种常见的数据结构,用于存储具有相同数据类型的元素。

实例

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

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

int main() {
    struct Node *head = (struct Node*)malloc(sizeof(struct Node));
    head->data = 1;
    head->next = NULL;
    struct Node *current = head;
    for (int i = 2; i <= 5; i++) {
        struct Node *newNode = (struct Node*)malloc(sizeof(struct Node));
        newNode->data = i;
        newNode->next = NULL;
        current->next = newNode;
        current = newNode;
    }
    current = head;
    while (current != NULL) {
        printf("%d ", current->data);
        current = current->next;
    }
    printf("\n");
    return 0;
}

10. 栈与队列

10.1 栈与队列定义与操作

栈和队列是两种常见的数据结构,用于存储具有特定顺序的元素。

实例

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

#define MAX_SIZE 10

typedef struct {
    int data[MAX_SIZE];
    int top;
} Stack;

int main() {
    Stack stack;
    stack.top = -1;
    for (int i = 0; i < 5; i++) {
        if (stack.top < MAX_SIZE - 1) {
            stack.data[++stack.top] = i;
        }
    }
    for (int i = 0; i < 5; i++) {
        printf("%d ", stack.data[stack.top--]);
    }
    printf("\n");
    return 0;
}

11. 字符串处理

11.1 字符串操作函数

C语言中提供了丰富的字符串操作函数。

实例

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

int main() {
    char str1[100] = "Hello, World!";
    char str2[100] = "Hello";
    printf("str1:%s\n", str1);
    printf("str2:%s\n", str2);
    printf("str1长度:%ld\n", strlen(str1));
    printf("str1与str2比较:%d\n", strcmp(str1, str2));
    printf("str1连接str2:%s\n", strcat(str1, str2));
    printf("str1查找str2:%ld\n", strchr(str1, 'W'));
    return 0;
}

12. 网络编程

12.1 网络编程基础

网络编程是C语言中一个重要的应用领域。

实例

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

int main() {
    int sockfd;
    struct sockaddr_in servaddr;
    sockfd = socket(AF_INET, SOCK_STREAM, 0);
    memset(&servaddr, 0, sizeof(servaddr));
    servaddr.sin_family = AF_INET;
    servaddr.sin_port = htons(8080);
    servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
    bind(sockfd, (struct sockaddr*)&servaddr, sizeof(servaddr));
    listen(sockfd, 10);
    return 0;
}

13. 图形编程

13.1 图形编程基础

图形编程是C语言中一个有趣的领域。

实例

#include <stdio.h>
#include <GL/glut.h>

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

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

14. 算法与数据结构

14.1 排序算法

排序算法是算法与数据结构中的基础。

实例

#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("排序后的数组:\n");
    for (int i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");
    return 0;
}

15. 多线程编程

15.1 多线程基础

多线程编程是C语言中提高程序性能的一种方式。

实例

#include <stdio.h>
#include <pthread.h>

void *threadFunction(void *arg) {
    printf("线程 %ld 正在运行\n", pthread_self());
    return NULL;
}

int main() {
    pthread_t tid1, tid2;
    pthread_create(&tid1, NULL, threadFunction, NULL);
    pthread_create(&tid2, NULL, threadFunction, NULL);
    pthread_join(tid1, NULL);
    pthread_join(tid2, NULL);
    return 0;
}

16. C++编程

16.1 C++基础

C++是C语言的扩展,具有面向对象编程的特性。

实例

#include <iostream>

using namespace std;

class Rectangle {
public:
    float length;
    float width;

    Rectangle(float l, float w) {
        length = l;
        width = w;
    }

    float area() {
        return length * width;
    }
};

int main() {
    Rectangle rect(10.0, 5.0);
    cout << "矩形面积:" << rect.area() << endl;
    return 0;
}

17. Java编程

17.1 Java基础

Java是一种跨平台的编程语言。

实例

public class Main {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}

18. Python编程

18.1 Python基础

Python是一种易学易用的编程语言。

实例

print("Hello, World!")

19. JavaScript编程

19.1 JavaScript基础

JavaScript是一种用于网页开发的编程语言。

实例

console.log("Hello, World!");

20. 数据库编程

20.1 数据库基础

数据库是存储和管理数据的系统。

实例

CREATE TABLE students (
    id INT PRIMARY KEY,
    name VARCHAR(50),
    age INT
);

INSERT INTO students (id, name, age) VALUES (1, '张三', 20);
INSERT INTO students (id, name, age) VALUES (2, '李四', 21);
INSERT INTO students (id, name, age) VALUES (3, '王五', 22);

SELECT * FROM students;

21. 算法与数据结构进阶

21.1 树与图

树和图是两种重要的数据结构,用于表示复杂的关系。

实例

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

typedef struct Node {
    int data;
    struct Node *left;
    struct Node *right;
} Node;

Node* createNode(int data) {
    Node *newNode = (Node*)malloc(sizeof(Node));
    newNode->data = data;
    newNode->left = NULL;
    newNode->right = NULL;
    return newNode;
}

void insertNode(Node *root, int data) {
    if (root == NULL) {
        root = createNode(data);
    } else if (data < root->data) {
        insertNode(root->left, data);
    } else {
        insertNode(root->right, data);
    }
}

void inorderTraversal(Node *root) {
    if (root != NULL) {
        inorderTraversal(root->left);
        printf("%d ", root->data);
        inorderTraversal(root->right);
    }
}

int main() {
    Node *root = NULL;
    insertNode(root, 50);
    insertNode(root, 30);
    insertNode(root, 20);
    insertNode(root, 40);
    insertNode(root, 70);
    insertNode(root, 60);
    insertNode(root, 80);
    printf("中序遍历:");
    inorderTraversal(root);
    printf("\n");
    return 0;
}

22. 网络编程进阶

22.1 网络编程进阶

网络编程进阶包括Socket编程、网络协议等。

实例

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

int main() {
    int sockfd, connfd;
    struct sockaddr_in servaddr, cliaddr;
    socklen_t len;
    sockfd = socket(AF_INET, SOCK_STREAM, 0);
    memset(&servaddr, 0, sizeof(servaddr));
    servaddr.sin_family = AF_INET;
    servaddr.sin_port = htons(8080);
    servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
    bind(sockfd, (struct sockaddr*)&servaddr, sizeof(servaddr));
    listen(sockfd, 10);
    len = sizeof(cliaddr);
    connfd = accept(sockfd, (struct sockaddr*)&cliaddr, &len);
    char buffer[1024];
    read(connfd, buffer, sizeof(buffer));
    printf("接收到的数据:%s\n", buffer);
    write(connfd, "Hello, Client!", 17);
    close(connfd);
    close(sockfd);
    return 0;
}

23. 算法与数据结构进阶

23.1 算法与数据结构进阶

算法与数据结构进阶包括动态规划、贪心算法等。

实例

#include <stdio.h>

int maxSubArraySum(int arr[], int n) {
    int maxSum = arr[0];
    int currSum = arr[0];
    for (int i = 1; i < n; i++) {
        currSum = (arr[i] > currSum + arr[i]) ? arr[i] : currSum + arr[i];
        maxSum = (maxSum > currSum) ? maxSum : currSum;
    }
    return maxSum;
}

int main() {
    int arr[] = {-2, 1, -3, 4, -1, 2, 1, -5, 4};
    int n = sizeof(arr) / sizeof(arr[0]);
    printf("最大子数组和:%d\n", maxSubArraySum(arr, n));
    return 0;
}

24. 并发编程

24.1 并发编程基础

并发编程是提高程序性能的一种方式。

实例

#include <stdio.h>
#include <pthread.h>

void *threadFunction(void *arg) {
    printf("线程 %ld 正在运行\n", pthread_self());
    return NULL;
}

int main() {
    pthread_t tid1, tid2;
    pthread_create(&tid1, NULL, threadFunction, NULL);
    pthread_create(&tid2, NULL, threadFunction, NULL);
    pthread_join(tid1, NULL);
    pthread_join(tid2, NULL);
    return 0;
}

25. 网络编程进阶

25.1 网络编程进阶

网络编程进阶包括WebSocket、HTTP/2等。

实例

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

int main() {
    int sockfd, connfd;
    struct sockaddr_in servaddr, cliaddr;
    socklen_t len;
    sockfd = socket(AF_INET, SOCK_STREAM, 0);
    memset(&servaddr, 0, sizeof(servaddr));
    servaddr.sin_family = AF_INET;
    servaddr.sin_port = htons(8080);
    servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
    bind(sockfd, (struct sockaddr*)&servaddr, sizeof(servaddr));
    listen(sockfd, 10);
    len = sizeof(cliaddr);
    connfd = accept(sockfd, (struct sockaddr*)&cliaddr, &len);
    char buffer[1024];
    read(connfd, buffer, sizeof(buffer));
    printf("接收到的数据:%s\n", buffer);
    write(connfd, "Hello, Client!", 17);
    close(connfd);
    close(sockfd);
    return 0;
}

26. 算法与数据结构进阶

26.1 算法与数据结构进阶