实例1:变量与数据类型
在C语言中,变量是用来存储数据的。首先,我们需要了解数据类型。这里有几种基本的数据类型:
int a; // 整型变量
float b; // 单精度浮点型变量
char c; // 字符型变量
实例2:输入输出
C语言中,我们通常使用printf和scanf函数来进行输入输出。
#include <stdio.h>
int main() {
int num;
printf("请输入一个数字:");
scanf("%d", &num);
printf("你输入的数字是:%d\n", num);
return 0;
}
实例3:运算符
C语言中的运算符包括算术运算符、关系运算符、逻辑运算符等。
#include <stdio.h>
int main() {
int a = 10, b = 5;
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;
}
实例4:条件语句
条件语句用于根据条件判断执行不同的代码块。
#include <stdio.h>
int main() {
int num = 10;
if (num > 0) {
printf("num 是正数\n");
} else if (num < 0) {
printf("num 是负数\n");
} else {
printf("num 是0\n");
}
return 0;
}
实例5:循环语句
循环语句用于重复执行一段代码。
#include <stdio.h>
int main() {
int i;
for (i = 1; i <= 5; i++) {
printf("i 的值是:%d\n", i);
}
return 0;
}
实例6:函数
函数是C语言中的基本组成部分,用于封装代码。
#include <stdio.h>
void sayHello() {
printf("Hello, World!\n");
}
int main() {
sayHello();
return 0;
}
实例7:指针
指针是C语言中的高级特性,用于访问内存地址。
#include <stdio.h>
int main() {
int a = 10;
int *ptr = &a;
printf("a 的值是:%d\n", a);
printf("ptr 指向的值是:%d\n", *ptr);
return 0;
}
实例8:结构体
结构体用于组织相关联的数据。
#include <stdio.h>
typedef struct {
int id;
char name[50];
} Student;
int main() {
Student stu;
stu.id = 1;
strcpy(stu.name, "张三");
printf("学生ID:%d\n", stu.id);
printf("学生姓名:%s\n", stu.name);
return 0;
}
实例9:数组和字符串
数组和字符串是C语言中的常见数据结构。
#include <stdio.h>
#include <string.h>
int main() {
int arr[5] = {1, 2, 3, 4, 5};
printf("数组元素:");
for (int i = 0; i < 5; i++) {
printf("%d ", arr[i]);
}
printf("\n");
char str[20] = "Hello";
printf("字符串:%s\n", str);
return 0;
}
实例10:文件操作
C语言中,我们可以使用文件操作函数来处理文件。
#include <stdio.h>
int main() {
FILE *fp = fopen("example.txt", "w");
if (fp == NULL) {
printf("文件打开失败\n");
return 1;
}
fprintf(fp, "这是一个示例文件\n");
fclose(fp);
return 0;
}
实例11:动态内存分配
动态内存分配可以让我们在程序运行时分配内存。
#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 + 1;
}
for (int i = 0; i < 5; i++) {
printf("arr[%d] = %d\n", i, arr[i]);
}
free(arr);
return 0;
}
实例12:递归函数
递归函数是C语言中的高级特性,用于解决某些问题。
#include <stdio.h>
int factorial(int n) {
if (n <= 1) {
return 1;
} else {
return n * factorial(n - 1);
}
}
int main() {
int n = 5;
printf("5的阶乘是:%d\n", factorial(n));
return 0;
}
实例13:链表
链表是C语言中的常见数据结构,用于存储元素序列。
#include <stdio.h>
#include <stdlib.h>
typedef struct Node {
int data;
struct Node *next;
} Node;
void insert(Node **head, int data) {
Node *newNode = (Node *)malloc(sizeof(Node));
newNode->data = data;
newNode->next = *head;
*head = newNode;
}
void printList(Node *head) {
while (head != NULL) {
printf("%d ", head->data);
head = head->next;
}
printf("\n");
}
int main() {
Node *head = NULL;
insert(&head, 10);
insert(&head, 20);
insert(&head, 30);
printList(head);
return 0;
}
实例14:队列
队列是一种先进先出(FIFO)的数据结构。
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 10
typedef struct {
int items[MAX_SIZE];
int front;
int rear;
} Queue;
void initialize(Queue *q) {
q->front = q->rear = -1;
}
int isEmpty(Queue *q) {
return q->front == -1;
}
int isFull(Queue *q) {
return (q->rear + 1) % MAX_SIZE == q->front;
}
void enqueue(Queue *q, int data) {
if (isFull(q)) {
printf("队列已满\n");
return;
}
if (isEmpty(q)) {
q->front = q->rear = 0;
} else {
q->rear = (q->rear + 1) % MAX_SIZE;
}
q->items[q->rear] = data;
}
int dequeue(Queue *q) {
if (isEmpty(q)) {
printf("队列为空\n");
return -1;
}
int data = q->items[q->front];
if (q->front == q->rear) {
q->front = q->rear = -1;
} else {
q->front = (q->front + 1) % MAX_SIZE;
}
return data;
}
int main() {
Queue q;
initialize(&q);
enqueue(&q, 10);
enqueue(&q, 20);
enqueue(&q, 30);
printf("队列元素:");
while (!isEmpty(&q)) {
printf("%d ", dequeue(&q));
}
printf("\n");
return 0;
}
实例15:栈
栈是一种后进先出(LIFO)的数据结构。
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 10
typedef struct {
int items[MAX_SIZE];
int top;
} Stack;
void initialize(Stack *s) {
s->top = -1;
}
int isEmpty(Stack *s) {
return s->top == -1;
}
int isFull(Stack *s) {
return s->top == MAX_SIZE - 1;
}
void push(Stack *s, int data) {
if (isFull(s)) {
printf("栈已满\n");
return;
}
s->items[++s->top] = data;
}
int pop(Stack *s) {
if (isEmpty(s)) {
printf("栈为空\n");
return -1;
}
return s->items[s->top--];
}
int main() {
Stack s;
initialize(&s);
push(&s, 10);
push(&s, 20);
push(&s, 30);
printf("栈元素:");
while (!isEmpty(&s)) {
printf("%d ", pop(&s));
}
printf("\n");
return 0;
}
实例16:排序算法
排序算法是C语言中的常见应用。
#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[] = {5, 2, 8, 4, 1};
int n = sizeof(arr) / sizeof(arr[0]);
bubbleSort(arr, n);
printf("排序后的数组:");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
实例17:查找算法
查找算法用于在数据结构中查找特定元素。
#include <stdio.h>
int linearSearch(int arr[], int n, int x) {
for (int i = 0; i < n; i++) {
if (arr[i] == x) {
return i;
}
}
return -1;
}
int binarySearch(int arr[], int l, int r, int x) {
if (r >= l) {
int mid = l + (r - l) / 2;
if (arr[mid] == x) {
return mid;
}
if (arr[mid] > x) {
return binarySearch(arr, l, mid - 1, x);
}
return binarySearch(arr, mid + 1, r, x);
}
return -1;
}
int main() {
int arr[] = {2, 3, 4, 10, 40};
int n = sizeof(arr) / sizeof(arr[0]);
int x = 10;
int result = linearSearch(arr, n, x);
if (result != -1) {
printf("元素在数组中的索引:%d\n", result);
} else {
printf("元素不在数组中\n");
}
result = binarySearch(arr, 0, n - 1, x);
if (result != -1) {
printf("元素在数组中的索引:%d\n", result);
} else {
printf("元素不在数组中\n");
}
return 0;
}
实例18:字符串处理
字符串处理是C语言中的常见应用。
#include <stdio.h>
#include <string.h>
int main() {
char str1[100] = "Hello";
char str2[100] = "World";
char str3[100];
strcpy(str3, str1); // 复制字符串
strcat(str3, str2); // 连接字符串
printf("连接后的字符串:%s\n", str3);
printf("字符串长度:%d\n", strlen(str3));
return 0;
}
实例19:文件读写
文件读写是C语言中的常见应用。
#include <stdio.h>
int main() {
FILE *fp = fopen("example.txt", "r");
if (fp == NULL) {
printf("文件打开失败\n");
return 1;
}
char buffer[100];
while (fgets(buffer, sizeof(buffer), fp)) {
printf("%s", buffer);
}
fclose(fp);
return 0;
}
实例20:多线程
多线程是C语言中的高级特性,用于提高程序性能。
#include <stdio.h>
#include <pthread.h>
void *threadFunction(void *arg) {
printf("线程 %ld 正在运行\n", pthread_self());
return NULL;
}
int main() {
pthread_t tid;
if (pthread_create(&tid, NULL, threadFunction, NULL) != 0) {
printf("创建线程失败\n");
return 1;
}
pthread_join(tid, NULL);
return 0;
}
实例21:信号处理
信号处理是C语言中的高级特性,用于处理程序运行时接收到的信号。
#include <stdio.h>
#include <signal.h>
void signalHandler(int signum) {
printf("接收到信号:%d\n", signum);
}
int main() {
signal(SIGINT, signalHandler);
while (1) {
printf("程序正在运行...\n");
sleep(1);
}
return 0;
}
实例22:进程控制
进程控制是C语言中的高级特性,用于创建和管理进程。
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/wait.h>
int main() {
pid_t pid = fork();
if (pid == 0) {
// 子进程
printf("子进程 PID:%d\n", getpid());
} else {
// 父进程
printf("父进程 PID:%d\n", getpid());
printf("子进程 PID:%d\n", pid);
}
return 0;
}
实例23:管道
管道是C语言中的高级特性,用于在进程间传递数据。
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
int main() {
int pipefd[2];
if (pipe(pipefd) == -1) {
perror("pipe");
return 1;
}
pid_t pid = fork();
if (pid == 0) {
// 子进程
close(pipefd[0]); // 关闭读端
char *message = "Hello, World!";
write(pipefd[1], message, strlen(message) + 1);
close(pipefd[1]); // 关闭写端
} else {
// 父进程
close(pipefd[1]); // 关闭写端
char buffer[100];
read(pipefd[0], buffer, sizeof(buffer));
printf("从管道中读取的数据:%s\n", buffer);
close(pipefd[0]); // 关闭读端
}
return 0;
}
实例24:网络编程
网络编程是C语言中的高级特性,用于实现网络通信。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>
int main() {
int sockfd;
struct sockaddr_in servaddr;
sockfd = socket(AF_INET, SOCK_STREAM, 0);
bzero(&servaddr, 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);
int connfd = accept(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr));
char buffer[1024];
read(connfd, buffer, sizeof(buffer));
printf("从客户端接收到的数据:%s\n", buffer);
write(connfd, "Hello, client!", strlen("Hello, client!") + 1);
close(connfd);
close(sockfd);
return 0;
}
实例25:数据库编程
数据库编程是C语言中的高级特性,用于实现数据存储和查询。
#include <stdio.h>
#include <stdlib.h>
#include <mysql/mysql.h>
int main() {
MYSQL *conn;
MYSQL_RES *res;
MYSQL_ROW row;
conn = mysql_init(NULL);
if (!mysql_real_connect(conn, "localhost", "root", "password", "testdb", 0, NULL, 0)) {
printf("连接数据库失败:%s\n", mysql_error(conn));
return 1;
}
mysql_query(conn, "CREATE TABLE IF NOT EXISTS students (id INT, name VARCHAR(50))");
mysql_query(conn, "INSERT INTO students (id, name) VALUES (1, '张三'), (2, '李四'), (3, '王五')");
res = mysql_use_result(conn);
while ((row = mysql_fetch_row(res)) != NULL) {
printf("ID:%d, 姓名:%s\n", atoi(row[0]), row[1]);
}
mysql_free_result(res);
mysql_close(conn);
return 0;
}
实例26:图形界面编程
图形界面编程是C语言中的高级特性,用于创建图形用户界面。
”`c
#include
void display() {
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_TRIANGLES);
glVertex2f(-0.5, -0.5);
glVertex2f(0.5, -0.5);
glVertex2f(0, 0.5);
glEnd();
glFlush();
}
int main(int argc, char **argv) {
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(400, 400);
glutInitWindowPosition(100, 100);
glutCreateWindow("图形界面编程");
glClearColor(1.0,
