实例一:变量声明与初始化
在C语言中,变量的声明和初始化是基础中的基础。以下是一个变量声明的例子:
int num = 10; // 声明并初始化一个整型变量num
这里,我们声明了一个名为num的整型变量,并将其初始化为10。这样做的好处是,在程序中使用num之前,我们已经知道了它的值。
实例二:数据类型转换
在C语言中,数据类型转换是处理不同数据类型变量时的常见操作。以下是一个数据类型转换的例子:
double result = 10.5; // 声明一个双精度浮点型变量result
int value = (int)result; // 将result转换为整型,并赋值给value
在这个例子中,我们将一个双精度浮点型变量result转换为整型,并将转换后的值赋给整型变量value。
实例三:条件语句
条件语句是C语言中用于判断和执行不同操作的关键结构。以下是一个条件语句的例子:
int x = 5;
if (x > 0) {
printf("x是正数\n");
} else {
printf("x不是正数\n");
}
在这个例子中,我们检查变量x是否大于0。如果是,我们输出“x是正数”;如果不是,我们输出“x不是正数”。
实例四:循环语句
循环语句用于重复执行一段代码,直到满足特定条件。以下是一个for循环的例子:
for (int i = 0; i < 10; i++) {
printf("循环中的数字:%d\n", i);
}
在这个例子中,我们使用for循环来打印从0到9的数字。
实例五:函数定义与调用
函数是C语言中实现代码复用的关键。以下是一个函数定义和调用的例子:
#include <stdio.h>
void printMessage() {
printf("这是一个函数\n");
}
int main() {
printMessage(); // 调用函数
return 0;
}
在这个例子中,我们定义了一个名为printMessage的函数,并在main函数中调用它。
实例六:指针与数组
指针和数组是C语言中的高级特性,可以用于处理更复杂的编程任务。以下是一个指针和数组的例子:
int numbers[5] = {1, 2, 3, 4, 5};
int *ptr = numbers; // 指针ptr指向数组numbers的第一个元素
printf("数组的第一个元素:%d\n", *ptr); // 输出数组第一个元素的值
在这个例子中,我们声明了一个整型数组numbers,并使用指针ptr来访问数组中的元素。
实例七:结构体
结构体允许我们将不同类型的数据组合在一起。以下是一个结构体的例子:
#include <stdio.h>
typedef struct {
int id;
char name[50];
float score;
} Student;
int main() {
Student student1;
student1.id = 1;
strcpy(student1.name, "张三");
student1.score = 90.5;
printf("学生ID:%d\n", student1.id);
printf("学生姓名:%s\n", student1.name);
printf("学生分数:%f\n", student1.score);
return 0;
}
在这个例子中,我们定义了一个名为Student的结构体,包含id、name和score三个成员。然后,我们创建了一个Student类型的变量student1,并初始化了它的成员。
实例八:文件操作
文件操作是C语言中处理数据存储和读取的关键技术。以下是一个文件操作的例子:
#include <stdio.h>
int main() {
FILE *file = fopen("example.txt", "w"); // 打开文件进行写入
if (file == NULL) {
printf("打开文件失败\n");
return 1;
}
fprintf(file, "这是一个示例文件\n"); // 写入数据到文件
fclose(file); // 关闭文件
file = fopen("example.txt", "r"); // 打开文件进行读取
if (file == NULL) {
printf("打开文件失败\n");
return 1;
}
char buffer[100];
while (fgets(buffer, sizeof(buffer), file)) { // 读取文件数据
printf("%s", buffer);
}
fclose(file); // 关闭文件
return 0;
}
在这个例子中,我们使用fopen函数打开一个名为example.txt的文件,并进行写入和读取操作。
实例九:动态内存分配
动态内存分配是C语言中处理不确定大小数据的关键技术。以下是一个动态内存分配的例子:
#include <stdio.h>
#include <stdlib.h>
int main() {
int *array = (int *)malloc(5 * sizeof(int)); // 动态分配一个整型数组
if (array == NULL) {
printf("内存分配失败\n");
return 1;
}
for (int i = 0; i < 5; i++) {
array[i] = i * 2; // 初始化数组
}
for (int i = 0; i < 5; i++) {
printf("数组元素:%d\n", array[i]);
}
free(array); // 释放动态分配的内存
return 0;
}
在这个例子中,我们使用malloc函数动态分配了一个整型数组,并对其进行了初始化和释放。
实例十:字符串操作
字符串操作是C语言中处理文本数据的关键技术。以下是一个字符串操作的例子:
#include <stdio.h>
#include <string.h>
int main() {
char str1[100] = "Hello, ";
char str2[] = "World!";
char str3[100];
strcpy(str3, str1); // 复制字符串
strcat(str3, str2); // 连接字符串
printf("合并后的字符串:%s\n", str3);
char *ptr = strchr(str3, 'o'); // 查找字符串中第一个'o'字符的位置
printf("找到'o'的位置:%ld\n", ptr - str3);
return 0;
}
在这个例子中,我们使用strcpy和strcat函数复制和连接字符串,并使用strchr函数查找字符串中特定字符的位置。
实例十一:结构体指针与数组
结构体指针与数组可以用于处理更复杂的数据结构。以下是一个结构体指针与数组的例子:
#include <stdio.h>
typedef struct {
int id;
char name[50];
} Student;
int main() {
Student students[3] = {
{1, "张三"},
{2, "李四"},
{3, "王五"}
};
Student *ptr = &students[0]; // 结构体指针指向数组第一个元素
for (int i = 0; i < 3; i++) {
printf("学生ID:%d, 学生姓名:%s\n", ptr->id, ptr->name);
ptr++; // 指针指向下一个结构体
}
return 0;
}
在这个例子中,我们声明了一个Student类型的数组students,并使用结构体指针ptr来访问数组中的元素。
实例十二:函数指针
函数指针是C语言中的一种高级特性,可以用于处理函数调用。以下是一个函数指针的例子:
#include <stdio.h>
int add(int a, int b) {
return a + b;
}
int main() {
int (*funcPtr)(int, int) = add; // 声明一个函数指针,指向add函数
int result = funcPtr(3, 4); // 使用函数指针调用add函数
printf("结果:%d\n", result);
return 0;
}
在这个例子中,我们声明了一个函数指针funcPtr,指向名为add的函数。然后,我们使用函数指针调用add函数,并输出结果。
实例十三:宏定义
宏定义是C语言中的一种预处理器指令,可以用于定义和替换文本。以下是一个宏定义的例子:
#include <stdio.h>
#define MAX(a, b) ((a) > (b) ? (a) : (b)) // 定义一个比较两个数的宏
int main() {
int max = MAX(5, 10); // 使用宏比较两个数
printf("最大值:%d\n", max);
return 0;
}
在这个例子中,我们定义了一个比较两个数的宏MAX。然后,我们使用宏比较两个数,并输出结果。
实例十四:结构体与函数
结构体与函数可以用于处理更复杂的数据结构。以下是一个结构体与函数的例子:
#include <stdio.h>
typedef struct {
int id;
char name[50];
} Student;
void printStudent(Student student) {
printf("学生ID:%d, 学生姓名:%s\n", student.id, student.name);
}
int main() {
Student student = {1, "张三"};
printStudent(student);
return 0;
}
在这个例子中,我们定义了一个Student结构体和一个名为printStudent的函数,用于打印学生的信息。
实例十五:指针与函数
指针与函数可以用于处理更复杂的编程任务。以下是一个指针与函数的例子:
#include <stdio.h>
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
int main() {
int x = 10;
int y = 20;
printf("交换前的值:%d, %d\n", x, y);
swap(&x, &y);
printf("交换后的值:%d, %d\n", x, y);
return 0;
}
在这个例子中,我们定义了一个名为swap的函数,用于交换两个整型变量的值。然后,我们使用指针调用swap函数,并输出结果。
实例十六:链表操作
链表是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);
newNode->next = *head;
*head = newNode;
}
void printList(Node *head) {
Node *current = head;
while (current != NULL) {
printf("%d ", current->data);
current = current->next;
}
printf("\n");
}
int main() {
Node *head = NULL;
insertNode(&head, 3);
insertNode(&head, 2);
insertNode(&head, 1);
printList(head);
return 0;
}
在这个例子中,我们定义了一个链表节点结构体Node,并实现了创建节点、插入节点和打印链表的函数。然后,我们创建了一个链表并打印了它的内容。
实例十七:递归函数
递归函数是C语言中处理复杂问题的有效方法。以下是一个递归函数的例子:
#include <stdio.h>
int factorial(int n) {
if (n == 0) {
return 1;
} else {
return n * factorial(n - 1);
}
}
int main() {
int result = factorial(5);
printf("5的阶乘:%d\n", result);
return 0;
}
在这个例子中,我们定义了一个名为factorial的递归函数,用于计算一个整数的阶乘。然后,我们使用该函数计算5的阶乘,并输出结果。
实例十八:文件随机访问
文件随机访问是C语言中处理大型文件的关键技术。以下是一个文件随机访问的例子:
#include <stdio.h>
#include <stdlib.h>
int main() {
FILE *file = fopen("example.txt", "rb+"); // 以二进制读写模式打开文件
if (file == NULL) {
printf("打开文件失败\n");
return 1;
}
fseek(file, 0, SEEK_END); // 定位到文件末尾
long fileSize = ftell(file);
fseek(file, 0, SEEK_SET); // 定位到文件开头
char *buffer = (char *)malloc(fileSize);
fread(buffer, sizeof(char), fileSize, file); // 读取文件内容
// ... 处理文件内容 ...
free(buffer);
fclose(file); // 关闭文件
return 0;
}
在这个例子中,我们使用fopen、fseek、ftell、fread和fclose函数以二进制读写模式打开、定位、读取和关闭一个文件。
实例十九:多线程编程
多线程编程是C语言中提高程序性能的关键技术。以下是一个多线程编程的例子:
#include <stdio.h>
#include <pthread.h>
void *threadFunction(void *arg) {
printf("线程函数执行\n");
return NULL;
}
int main() {
pthread_t threadId;
if (pthread_create(&threadId, NULL, threadFunction, NULL) != 0) {
printf("创建线程失败\n");
return 1;
}
pthread_join(threadId, NULL); // 等待线程结束
return 0;
}
在这个例子中,我们使用pthread_create和pthread_join函数创建和等待一个线程。
实例二十:网络编程
网络编程是C语言中处理网络通信的关键技术。以下是一个网络编程的例子:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <unistd.h>
#define PORT 8080
int main() {
int server_fd, new_socket;
struct sockaddr_in address;
int opt = 1;
int addrlen = sizeof(address);
// 创建套接字
if ((server_fd = socket(AF_INET, SOCK_STREAM, 0)) == 0) {
printf("创建套接字失败\n");
return 1;
}
// 设置套接字选项
if (setsockopt(server_fd, SOL_SOCKET, SO_REUSEADDR | SO_REUSEPORT, &opt, sizeof(opt))) {
printf("设置套接字选项失败\n");
return 1;
}
address.sin_family = AF_INET;
address.sin_addr.s_addr = INADDR_ANY;
address.sin_port = htons(PORT);
// 绑定套接字
if (bind(server_fd, (struct sockaddr *)&address, sizeof(address)) < 0) {
printf("绑定套接字失败\n");
return 1;
}
// 监听套接字
if (listen(server_fd, 3) < 0) {
printf("监听套接字失败\n");
return 1;
}
// 接受连接
if ((new_socket = accept(server_fd, (struct sockaddr *)&address, (socklen_t*)&addrlen)) < 0) {
printf("接受连接失败\n");
return 1;
}
// ... 读取和发送数据 ...
close(new_socket);
close(server_fd);
return 0;
}
在这个例子中,我们使用socket、setsockopt、bind、listen和accept函数创建一个TCP服务器,并接受客户端连接。
实例二十一:图形编程
图形编程是C语言中处理图形界面和图像处理的关键技术。以下是一个图形编程的例子:
#include <graphics.h>
int main() {
int gd = DETECT, gm;
initgraph(&gd, &gm, "C:\\Turboc3\\BGI");
// ... 绘制图形和图像 ...
closegraph();
return 0;
}
在这个例子中,我们使用initgraph函数初始化图形界面,并使用图形库函数绘制图形和图像。
实例二十二:数据库编程
数据库编程是C语言中处理数据存储和检索的关键技术。以下是一个数据库编程的例子:
#include <stdio.h>
#include <sqlite3.h>
int main() {
sqlite3 *db;
char *err_msg = 0;
if (sqlite3_open("example.db", &db) != SQLITE_OK) {
fprintf(stderr, "无法打开数据库:%s\n", sqlite3_errmsg(db));
return 1;
}
// ... 创建和执行SQL语句 ...
sqlite3_close(db);
return 0;
}
在这个例子中,我们使用sqlite3_open函数打开一个SQLite数据库文件,并执行SQL语句。
实例二十三:加密算法
加密算法是C语言中处理数据安全的关键技术。以下是一个加密算法的例子:
#include <stdio.h>
void encrypt(char *input, char *output, int key) {
for (int i = 0; input[i] != '\0'; i++) {
output[i] = input[i] + key;
}
output[strlen(input)] = '\0';
}
int main() {
char input[] = "Hello, World!";
char output[100];
encrypt(input, output, 3); // 加密输入字符串
printf("加密后的字符串:%s\n", output);
return 0;
}
在这个例子中,我们定义了一个名为encrypt的函数,用于将输入字符串中的每个字符加密。
实例二十四:排序算法
排序算法是C语言中处理数据排序的关键技术。以下是一个排序算法的例子:
”`c
#include
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
