引言
C语言作为一门历史悠久且应用广泛的编程语言,其简洁、高效的特点使其在系统编程、嵌入式开发等领域占据重要地位。为了帮助读者更好地掌握C语言,本文精选了50个经典代码实例,涵盖基础语法、数据结构、算法等多个方面,旨在通过实例解析,帮助读者深入理解C语言的精髓。
1. 变量和数据类型
1.1 变量的声明与初始化
int a = 10; // 声明并初始化整型变量a
float b = 3.14f; // 声明并初始化浮点型变量b
char c = 'A'; // 声明并初始化字符型变量c
1.2 数据类型转换
int a = (int)3.14f; // 将浮点数转换为整型
float b = 5.0; // 整型常量默认为float类型
2. 控制结构
2.1 条件语句
if (a > b) {
printf("a大于b\n");
} else {
printf("a不大于b\n");
}
2.2 循环结构
for (int i = 0; i < 10; i++) {
printf("%d\n", i);
}
3. 函数
3.1 函数定义与调用
void printMessage() {
printf("Hello, World!\n");
}
int main() {
printMessage();
return 0;
}
3.2 参数传递与返回值
int add(int a, int b) {
return a + b;
}
int main() {
int result = add(3, 4);
printf("结果: %d\n", result);
return 0;
}
4. 数组
4.1 一维数组
int arr[5] = {1, 2, 3, 4, 5};
4.2 二维数组
int arr[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
5. 字符串
5.1 字符串定义与初始化
char str1[] = "Hello";
char str2[10] = "World";
5.2 字符串操作
#include <string.h>
char *strcat(char *dest, const char *src) {
while (*dest) {
dest++;
}
while (*src) {
*dest++ = *src++;
}
*dest = '\0';
return dest;
}
int main() {
char str1[20] = "Hello";
char str2[] = "World";
strcat(str1, str2);
printf("%s\n", str1); // 输出: HelloWorld
return 0;
}
6. 数据结构
6.1 链表
struct Node {
int data;
struct Node *next;
};
void insertNode(struct Node **head, int data) {
struct Node *newNode = (struct Node *)malloc(sizeof(struct Node));
newNode->data = data;
newNode->next = *head;
*head = newNode;
}
int main() {
struct Node *head = NULL;
insertNode(&head, 1);
insertNode(&head, 2);
insertNode(&head, 3);
// ...
return 0;
}
6.2 栈
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100
int stack[MAX_SIZE];
int top = -1;
void push(int data) {
if (top < MAX_SIZE - 1) {
stack[++top] = data;
} else {
printf("栈已满\n");
}
}
int pop() {
if (top >= 0) {
return stack[top--];
} else {
printf("栈为空\n");
return -1;
}
}
int main() {
push(1);
push(2);
push(3);
// ...
return 0;
}
7. 算法
7.1 排序算法
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[] = {5, 2, 8, 4, 1};
int n = sizeof(arr) / sizeof(arr[0]);
bubbleSort(arr, n);
// ...
return 0;
}
7.2 查找算法
int linearSearch(int arr[], int n, int key) {
for (int i = 0; i < n; i++) {
if (arr[i] == key) {
return i;
}
}
return -1;
}
int main() {
int arr[] = {1, 3, 5, 7, 9};
int n = sizeof(arr) / sizeof(arr[0]);
int key = 5;
int index = linearSearch(arr, n, key);
// ...
return 0;
}
8. 文件操作
8.1 文件打开与关闭
#include <stdio.h>
int main() {
FILE *fp = fopen("example.txt", "r");
if (fp == NULL) {
printf("文件打开失败\n");
return 1;
}
// ...
fclose(fp);
return 0;
}
8.2 文件读写
#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;
}
9. 动态内存分配
9.1 内存分配与释放
#include <stdio.h>
#include <stdlib.h>
int main() {
int *arr = (int *)malloc(10 * sizeof(int));
if (arr == NULL) {
printf("内存分配失败\n");
return 1;
}
// ...
free(arr);
return 0;
}
10. 指针
10.1 指针与数组
int main() {
int arr[] = {1, 2, 3, 4, 5};
int *ptr = arr;
for (int i = 0; i < 5; i++) {
printf("%d\n", *(ptr + i));
}
return 0;
}
10.2 指针与函数
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
int main() {
int a = 10;
int b = 20;
swap(&a, &b);
// ...
return 0;
}
11. 预处理器
11.1 宏定义
#define PI 3.14159
int main() {
printf("PI的值: %f\n", PI);
return 0;
}
11.2 条件编译
#ifdef DEBUG
printf("调试模式\n");
#else
printf("发布模式\n");
#endif
12. 网络编程
12.1 套接字编程
#include <stdio.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <unistd.h>
int main() {
int sock = socket(AF_INET, SOCK_STREAM, 0);
struct sockaddr_in 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");
connect(sock, (struct sockaddr *)&server_addr, sizeof(server_addr));
// ...
close(sock);
return 0;
}
13. 图形编程
13.1 绘制图形
#include <graphics.h>
int main() {
initgraph(640, 480);
setcolor(RED);
circle(320, 240, 100);
// ...
closegraph();
return 0;
}
14. 嵌入式编程
14.1 单片机编程
#include <REGX51.H>
void main() {
P1 = 0xFF; // 设置P1口为高电平
// ...
}
15. 系统编程
15.1 进程管理
#include <sys/types.h>
#include <unistd.h>
int main() {
pid_t pid = fork();
if (pid == 0) {
// 子进程
printf("子进程\n");
} else {
// 父进程
printf("父进程\n");
}
// ...
return 0;
}
16. 网络安全
16.1 加密算法
#include <openssl/evp.h>
int main() {
EVP_CIPHER_CTX *ctx;
unsigned char *plaintext = "Hello, World!";
unsigned char ciphertext[1024];
int len;
int ciphertext_len;
ctx = EVP_CIPHER_CTX_new();
EVP_EncryptInit_ex(ctx, EVP_aes_256_cbc(), NULL, NULL, NULL);
EVP_EncryptUpdate(ctx, ciphertext, &len, plaintext, strlen((char *)plaintext));
ciphertext_len = len;
EVP_EncryptFinal_ex(ctx, ciphertext + len, &len);
ciphertext_len += len;
// ...
EVP_CIPHER_CTX_free(ctx);
return 0;
}
总结
本文精选了50个经典C语言代码实例,涵盖了C语言编程的各个方面。通过学习这些实例,读者可以更好地掌握C语言编程技巧,为今后的学习和工作打下坚实的基础。