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