实例1:变量与数据类型
在C语言中,正确理解和使用变量和数据类型是基础。以下是一个实例,展示了如何声明和使用不同类型的变量。
#include <stdio.h>
int main() {
int age = 25;
float salary = 5000.50;
char grade = 'A';
printf("Age: %d\n", age);
printf("Salary: %.2f\n", salary);
printf("Grade: %c\n", grade);
return 0;
}
实例2:运算符
C语言中的运算符包括算术运算符、关系运算符和逻辑运算符。以下是一个使用运算符的实例。
#include <stdio.h>
int main() {
int a = 10, b = 5;
printf("Sum: %d\n", a + b);
printf("Difference: %d\n", a - b);
printf("Product: %d\n", a * b);
printf("Quotient: %d\n", a / b);
printf("Modulus: %d\n", a % b);
return 0;
}
实例3:控制结构
使用if和switch语句可以控制程序的流程。以下是一个使用if语句的实例。
#include <stdio.h>
int main() {
int number = 10;
if (number > 0) {
printf("Number is positive.\n");
} else if (number < 0) {
printf("Number is negative.\n");
} else {
printf("Number is zero.\n");
}
return 0;
}
实例4:循环结构
for、while和do-while循环是C语言中处理重复任务的关键。以下是一个使用for循环的实例。
#include <stdio.h>
int main() {
for (int i = 1; i <= 5; i++) {
printf("Count: %d\n", i);
}
return 0;
}
实例5:函数
函数是C语言中代码重用的关键。以下是一个简单的函数实例,用于计算两个数的和。
#include <stdio.h>
int add(int x, int y) {
return x + y;
}
int main() {
int result = add(10, 5);
printf("Result: %d\n", result);
return 0;
}
实例6:指针
指针是C语言中的高级特性,用于处理内存地址。以下是一个使用指针的实例。
#include <stdio.h>
int main() {
int a = 10;
int *ptr = &a;
printf("Value of a: %d\n", a);
printf("Address of a: %p\n", (void *)&a);
printf("Value pointed by ptr: %d\n", *ptr);
return 0;
}
实例7:结构体
结构体用于组合不同类型的数据。以下是一个简单的结构体实例,用于表示一个学生的信息。
#include <stdio.h>
typedef struct {
char name[50];
int age;
float gpa;
} Student;
int main() {
Student s1;
strcpy(s1.name, "John Doe");
s1.age = 20;
s1.gpa = 3.5;
printf("Name: %s\n", s1.name);
printf("Age: %d\n", s1.age);
printf("GPA: %.2f\n", s1.gpa);
return 0;
}
实例8:数组和字符串
数组是存储相同类型数据的一系列元素。以下是一个使用数组的实例。
#include <stdio.h>
#include <string.h>
int main() {
char str[] = "Hello, World!";
printf("String: %s\n", str);
printf("Length of string: %lu\n", strlen(str));
return 0;
}
实例9:文件操作
C语言提供了丰富的文件操作函数。以下是一个简单的文件读取实例。
#include <stdio.h>
int main() {
FILE *file = fopen("example.txt", "r");
if (file == NULL) {
printf("Error opening file.\n");
return 1;
}
char buffer[100];
while (fgets(buffer, sizeof(buffer), file)) {
printf("%s", buffer);
}
fclose(file);
return 0;
}
实例10:动态内存分配
动态内存分配允许程序在运行时分配内存。以下是一个使用malloc和free的实例。
#include <stdio.h>
#include <stdlib.h>
int main() {
int *ptr = (int *)malloc(5 * sizeof(int));
if (ptr == NULL) {
printf("Memory allocation failed.\n");
return 1;
}
for (int i = 0; i < 5; i++) {
ptr[i] = i;
}
for (int i = 0; i < 5; i++) {
printf("%d ", ptr[i]);
}
free(ptr);
return 0;
}
实例11:结构体指针和数组
结构体指针和数组可以用于处理复杂的数据结构。以下是一个实例,展示了如何使用结构体指针和数组。
#include <stdio.h>
typedef struct {
char name[50];
int age;
} Person;
int main() {
Person people[] = {
{"Alice", 25},
{"Bob", 30},
{"Charlie", 35}
};
Person *ptr = people;
for (int i = 0; i < 3; i++) {
printf("Name: %s, Age: %d\n", ptr[i].name, ptr[i].age);
}
return 0;
}
实例12:函数指针
函数指针允许将函数作为参数传递。以下是一个使用函数指针的实例。
#include <stdio.h>
int add(int x, int y) {
return x + y;
}
int subtract(int x, int y) {
return x - y;
}
int main() {
int (*operation)(int, int);
operation = add;
printf("Result: %d\n", operation(10, 5));
operation = subtract;
printf("Result: %d\n", operation(10, 5));
return 0;
}
实例13:宏定义
宏定义是C语言中的预处理器指令,用于创建文本替换。以下是一个宏定义的实例。
#include <stdio.h>
#define PI 3.14159
int main() {
printf("Value of PI: %.5f\n", PI);
return 0;
}
实例14:预处理指令
预处理指令是C语言中的特殊指令,用于在编译前处理源代码。以下是一个预处理指令的实例。
#include <stdio.h>
#if defined(__linux__)
#define OS "Linux"
#elif defined(__windows__)
#define OS "Windows"
#else
#define OS "Unknown"
#endif
int main() {
printf("Operating System: %s\n", OS);
return 0;
}
实例15:位操作
位操作是C语言中的高级特性,用于直接操作位。以下是一个位操作的实例。
#include <stdio.h>
int main() {
int a = 5; // 0101
int b = 3; // 0011
printf("Bitwise AND: %d\n", a & b); // 0001
printf("Bitwise OR: %d\n", a | b); // 0111
printf("Bitwise XOR: %d\n", a ^ b); // 0110
printf("Bitwise NOT: %d\n", ~a); // 1110
return 0;
}
实例16:指针算术
指针算术允许通过指针进行算术运算。以下是一个指针算术的实例。
#include <stdio.h>
int main() {
int array[] = {1, 2, 3, 4, 5};
int *ptr = array;
for (int i = 0; i < 5; i++) {
printf("Value at %p: %d\n", (void *)(ptr + i), *(ptr + i));
}
return 0;
}
实例17:内存对齐
内存对齐是C语言中的高级特性,用于优化内存访问。以下是一个内存对齐的实例。
#include <stdio.h>
typedef struct {
int a;
float b;
} AlignStruct;
int main() {
printf("Size of AlignStruct: %zu\n", sizeof(AlignStruct));
return 0;
}
实例18:联合体
联合体是C语言中的高级特性,用于存储不同类型的数据在同一内存位置。以下是一个联合体的实例。
#include <stdio.h>
typedef union {
int i;
float f;
} UnionType;
int main() {
UnionType u;
u.i = 10;
printf("Value of u.i: %d\n", u.i);
u.f = 3.14;
printf("Value of u.f: %.2f\n", u.f);
return 0;
}
实例19:枚举
枚举是C语言中的高级特性,用于定义一组命名的整型常量。以下是一个枚举的实例。
#include <stdio.h>
typedef enum {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
} Weekday;
int main() {
Weekday today = FRIDAY;
printf("Today is: %d\n", today);
return 0;
}
实例20:位域
位域是C语言中的高级特性,用于存储多个位字段。以下是一个位域的实例。
#include <stdio.h>
typedef struct {
unsigned int a : 5;
unsigned int b : 3;
unsigned int c : 5;
unsigned int d : 5;
} BitField;
int main() {
BitField bf;
bf.a = 10;
bf.b = 2;
bf.c = 15;
bf.d = 3;
printf("BitField a: %u\n", bf.a);
printf("BitField b: %u\n", bf.b);
printf("BitField c: %u\n", bf.c);
printf("BitField d: %u\n", bf.d);
return 0;
}
实例21:宏函数
宏函数是C语言中的预处理器指令,用于创建文本替换。以下是一个宏函数的实例。
#include <stdio.h>
#define MAX(a, b) ((a) > (b) ? (a) : (b))
int main() {
int x = 10, y = 20;
printf("Max: %d\n", MAX(x, y));
return 0;
}
实例22:递归函数
递归函数是C语言中的高级特性,用于在函数内部调用自身。以下是一个递归函数的实例,用于计算阶乘。
#include <stdio.h>
int factorial(int n) {
if (n <= 1) {
return 1;
}
return n * factorial(n - 1);
}
int main() {
int n = 5;
printf("Factorial of %d: %d\n", n, factorial(n));
return 0;
}
实例23:链表
链表是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, 1);
insert(&head, 2);
insert(&head, 3);
printList(head);
return 0;
}
实例24:栈
栈是C语言中的高级数据结构,用于后进先出(LIFO)的数据访问。以下是一个栈的实例。
#include <stdio.h>
#include <stdlib.h>
typedef struct Stack {
int top;
int capacity;
int *array;
} Stack;
void initStack(Stack *stack, int capacity) {
stack->capacity = capacity;
stack->top = -1;
stack->array = (int *)malloc(stack->capacity * sizeof(int));
}
void push(Stack *stack, int data) {
if (stack->top == stack->capacity - 1) {
printf("Stack is full.\n");
return;
}
stack->array[++stack->top] = data;
}
int pop(Stack *stack) {
if (stack->top == -1) {
printf("Stack is empty.\n");
return -1;
}
return stack->array[stack->top--];
}
int main() {
Stack stack;
initStack(&stack, 5);
push(&stack, 1);
push(&stack, 2);
push(&stack, 3);
printf("Popped: %d\n", pop(&stack));
printf("Popped: %d\n", pop(&stack));
printf("Popped: %d\n", pop(&stack));
return 0;
}
实例25:队列
队列是C语言中的高级数据结构,用于先进先出(FIFO)的数据访问。以下是一个队列的实例。
#include <stdio.h>
#include <stdlib.h>
typedef struct Queue {
int front;
int rear;
int capacity;
int *array;
} Queue;
void initQueue(Queue *queue, int capacity) {
queue->capacity = capacity;
queue->front = queue->rear = -1;
queue->array = (int *)malloc(queue->capacity * sizeof(int));
}
int isEmpty(Queue *queue) {
return queue->front == -1;
}
int isFull(Queue *queue) {
return (queue->rear + 1) % queue->capacity == queue->front;
}
void enqueue(Queue *queue, int data) {
if (isFull(queue)) {
printf("Queue is full.\n");
return;
}
if (isEmpty(queue)) {
queue->front = queue->rear = 0;
} else {
queue->rear = (queue->rear + 1) % queue->capacity;
}
queue->array[queue->rear] = data;
}
int dequeue(Queue *queue) {
if (isEmpty(queue)) {
printf("Queue is empty.\n");
return -1;
}
int data = queue->array[queue->front];
if (queue->front == queue->rear) {
queue->front = queue->rear = -1;
} else {
queue->front = (queue->front + 1) % queue->capacity;
}
return data;
}
int main() {
Queue queue;
initQueue(&queue, 5);
enqueue(&queue, 1);
enqueue(&queue, 2);
enqueue(&queue, 3);
printf("Dequeued: %d\n", dequeue(&queue));
printf("Dequeued: %d\n", dequeue(&queue));
printf("Dequeued: %d\n", dequeue(&queue));
return 0;
}
实例26:散列表
散列表是C语言中的高级数据结构,用于快速查找数据。以下是一个散列表的实例。
#include <stdio.h>
#include <stdlib.h>
#define TABLE_SIZE 10
typedef struct HashNode {
int data;
struct HashNode *next;
} HashNode;
unsigned int hashFunction(int data) {
return data % TABLE_SIZE;
}
void insert(HashNode **table, int data) {
unsigned int index = hashFunction(data);
HashNode *newNode = (HashNode *)malloc(sizeof(HashNode));
newNode->data = data;
newNode->next = table[index];
table[index] = newNode;
}
void printTable(HashNode **table) {
for (int i = 0; i < TABLE_SIZE; i++) {
HashNode *node = table[i];
while (node != NULL) {
printf("%d ", node->data);
node = node->next;
}
printf("\n");
}
}
int main() {
HashNode *table[TABLE_SIZE] = {NULL};
insert(table, 10);
insert(table, 20);
insert(table, 30);
printTable(table);
return 0;
}
实例27:排序算法
排序算法是C语言中的高级特性,用于对数据进行排序。以下是一个冒泡排序的实例。
#include <stdio.h>
void bubbleSort(int *array, int size) {
for (int i = 0; i < size - 1; i++) {
for (int j = 0; j < size - i - 1; j++) {
if (array[j] > array[j + 1]) {
int temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
}
int main() {
int array[] = {64, 34, 25, 12, 22, 11, 90};
int size = sizeof(array) / sizeof(array[0]);
bubbleSort(array, size);
printf("Sorted array: ");
for (int i = 0; i < size; i++) {
printf("%d ", array[i]);
}
printf("\n");
return 0;
}
实例28:查找算法
查找算法是C语言中的高级特性,用于在数据中查找特定元素。以下是一个二分查找的实例。
”`c
#include
int binary
