实例1:变量声明与赋值
在C语言中,变量是存储数据的基本单位。以下是一个简单的变量声明与赋值实例:
#include <stdio.h>
int main() {
int a = 10; // 声明并初始化整型变量a
float b = 3.14; // 声明并初始化浮点型变量b
char c = 'A'; // 声明并初始化字符型变量c
return 0;
}
实例2:基本输入输出
输入输出是C语言中最基础的操作。以下是一个简单的输入输出实例:
#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;
float b = 3.14;
printf("a + b = %.2f\n", a + b); // 将整型变量a转换为浮点型,然后与浮点型变量b相加
return 0;
}
实例4:运算符优先级
了解运算符优先级对于编写正确的代码至关重要。以下是一个运算符优先级实例:
#include <stdio.h>
int main() {
int a = 10, b = 5, c = 3;
printf("(a + b) * c = %d\n", (a + b) * c); // 先计算括号内的加法,再计算乘法
printf("a + (b * c) = %d\n", a + (b * c)); // 先计算乘法,再计算加法
return 0;
}
实例5:条件语句
条件语句用于根据条件执行不同的代码块。以下是一个条件语句实例:
#include <stdio.h>
int main() {
int num = 10;
if (num > 0) {
printf("num是一个正数\n");
} else {
printf("num不是一个正数\n");
}
return 0;
}
实例6:循环语句
循环语句用于重复执行一段代码。以下是一个循环语句实例:
#include <stdio.h>
int main() {
int i;
for (i = 1; i <= 10; i++) {
printf("%d\n", i); // 打印1到10的数字
}
return 0;
}
实例7:数组操作
数组是存储一系列相同类型数据的基本单位。以下是一个数组操作实例:
#include <stdio.h>
int main() {
int arr[5] = {1, 2, 3, 4, 5};
int i;
for (i = 0; i < 5; i++) {
printf("arr[%d] = %d\n", i, arr[i]); // 打印数组元素
}
return 0;
}
实例8:函数定义与调用
函数是代码模块化的基础。以下是一个函数定义与调用实例:
#include <stdio.h>
void printMessage() {
printf("Hello, world!\n");
}
int main() {
printMessage(); // 调用函数printMessage
return 0;
}
实例9:指针操作
指针是C语言中非常强大的特性。以下是一个指针操作实例:
#include <stdio.h>
int main() {
int a = 10;
int *ptr = &a; // 指针ptr指向变量a的地址
printf("a = %d\n", a); // 打印变量a的值
printf("*ptr = %d\n", *ptr); // 通过指针ptr访问变量a的值
return 0;
}
实例10:结构体
结构体用于存储不同类型的数据。以下是一个结构体实例:
#include <stdio.h>
struct Person {
char name[50];
int age;
};
int main() {
struct Person p;
strcpy(p.name, "张三");
p.age = 20;
printf("姓名:%s,年龄:%d\n", p.name, p.age);
return 0;
}
实例11:位运算
位运算用于操作数据在内存中的位。以下是一个位运算实例:
#include <stdio.h>
int main() {
int a = 5; // 二进制:0000 0101
int b = 3; // 二进制:0000 0011
printf("a & b = %d\n", a & b); // 按位与操作
printf("a | b = %d\n", a | b); // 按位或操作
printf("a ^ b = %d\n", a ^ b); // 按位异或操作
printf("a << 1 = %d\n", a << 1); // 左移操作
printf("a >> 1 = %d\n", a >> 1); // 右移操作
return 0;
}
实例12:文件操作
文件操作是C语言中常见的操作之一。以下是一个文件操作实例:
#include <stdio.h>
int main() {
FILE *fp;
fp = fopen("example.txt", "w"); // 以写入模式打开文件
fprintf(fp, "Hello, world!\n"); // 将字符串写入文件
fclose(fp); // 关闭文件
return 0;
}
实例13:动态内存分配
动态内存分配是C语言中重要的特性。以下是一个动态内存分配实例:
#include <stdio.h>
#include <stdlib.h>
int main() {
int *ptr = (int *)malloc(10 * sizeof(int)); // 分配10个整型数据的内存空间
if (ptr == NULL) {
printf("内存分配失败\n");
return 0;
}
for (int i = 0; i < 10; i++) {
ptr[i] = i + 1; // 初始化数组
}
for (int i = 0; i < 10; i++) {
printf("%d ", ptr[i]); // 打印数组元素
}
printf("\n");
free(ptr); // 释放内存空间
return 0;
}
实例14:字符串操作
字符串操作是C语言中常用的操作之一。以下是一个字符串操作实例:
#include <stdio.h>
#include <string.h>
int main() {
char str1[50] = "Hello";
char str2[50] = "world";
strcat(str1, str2); // 连接字符串str1和str2
printf("%s\n", str1); // 打印连接后的字符串
strcpy(str1, "Hello, world!"); // 复制字符串
printf("%s\n", str1); // 打印复制后的字符串
return 0;
}
实例15:结构体数组
结构体数组可以存储多个结构体数据。以下是一个结构体数组实例:
#include <stdio.h>
struct Person {
char name[50];
int age;
};
int main() {
struct Person persons[2] = {
{"张三", 20},
{"李四", 25}
};
for (int i = 0; i < 2; i++) {
printf("姓名:%s,年龄:%d\n", persons[i].name, persons[i].age);
}
return 0;
}
实例16:结构体指针
结构体指针可以用来操作结构体数据。以下是一个结构体指针实例:
#include <stdio.h>
struct Person {
char name[50];
int age;
};
int main() {
struct Person p1 = {"张三", 20};
struct Person *ptr = &p1;
printf("姓名:%s,年龄:%d\n", (*ptr).name, (*ptr).age); // 通过结构体指针访问结构体成员
printf("姓名:%s,年龄:%d\n", ptr->name, ptr->age); // 使用箭头操作符访问结构体成员
return 0;
}
实例17:函数指针
函数指针可以指向函数。以下是一个函数指针实例:
#include <stdio.h>
void printMessage() {
printf("Hello, world!\n");
}
int main() {
void (*funcPtr)() = printMessage; // 函数指针指向printMessage函数
funcPtr(); // 调用函数指针
return 0;
}
实例18:递归函数
递归函数是一种常用的算法设计方法。以下是一个递归函数实例:
#include <stdio.h>
int factorial(int n) {
if (n == 0) {
return 1;
} else {
return n * factorial(n - 1);
}
}
int main() {
int n = 5;
printf("%d的阶乘是:%d\n", n, factorial(n));
return 0;
}
实例19:指针数组
指针数组可以存储多个指针。以下是一个指针数组实例:
#include <stdio.h>
int main() {
int a = 10;
int b = 20;
int *ptrs[2];
ptrs[0] = &a;
ptrs[1] = &b;
for (int i = 0; i < 2; i++) {
printf("*ptrs[%d] = %d\n", i, *ptrs[i]); // 通过指针数组访问变量值
}
return 0;
}
实例20:动态分配二维数组
动态分配二维数组可以更灵活地处理数据。以下是一个动态分配二维数组实例:
#include <stdio.h>
#include <stdlib.h>
int main() {
int rows = 3;
int cols = 4;
int **arr = (int **)malloc(rows * sizeof(int *));
for (int i = 0; i < rows; i++) {
arr[i] = (int *)malloc(cols * sizeof(int));
for (int j = 0; j < cols; j++) {
arr[i][j] = i * cols + j; // 初始化数组元素
}
}
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
printf("%d ", arr[i][j]); // 打印数组元素
}
printf("\n");
}
for (int i = 0; i < rows; i++) {
free(arr[i]); // 释放二维数组内存
}
free(arr); // 释放指针数组内存
return 0;
}
实例21:字符串比较
字符串比较是C语言中常用的操作之一。以下是一个字符串比较实例:
#include <stdio.h>
#include <string.h>
int main() {
char str1[50] = "Hello";
char str2[50] = "World";
printf("strcmp(str1, str2) = %d\n", strcmp(str1, str2)); // 比较字符串str1和str2
return 0;
}
实例22:字符串查找
字符串查找是C语言中常用的操作之一。以下是一个字符串查找实例:
#include <stdio.h>
#include <string.h>
int main() {
char str1[50] = "Hello, world!";
char substr[10] = "world";
printf("strstr(str1, substr) = %d\n", strstr(str1, substr)); // 查找子字符串substr在str1中的位置
return 0;
}
实例23:字符串替换
字符串替换是C语言中常用的操作之一。以下是一个字符串替换实例:
#include <stdio.h>
#include <string.h>
void replace(char *str, const char *oldstr, const char *newstr) {
char buffer[1024];
char *p;
while ((p = strstr(str, oldstr)) != NULL) {
strncpy(buffer, str, p - str); // 复制旧字符串到缓冲区
buffer[p - str - strlen(oldstr)] = '\0'; // 在旧字符串位置添加字符串结束符
strcat(buffer, newstr); // 添加新字符串
strcat(buffer, str + p + strlen(oldstr)); // 添加剩余的字符串
strcpy(str, buffer); // 将新字符串复制回原字符串
}
}
int main() {
char str[50] = "Hello, world!";
replace(str, "world", "C");
printf("替换后的字符串:%s\n", str);
return 0;
}
实例24:字符串分割
字符串分割是C语言中常用的操作之一。以下是一个字符串分割实例:
#include <stdio.h>
#include <string.h>
void split(const char *str, const char *delim, char **tokens) {
char *p;
int count = 0;
while ((p = strtok((char *)str, delim)) != NULL) {
tokens[count++] = p;
str = p; // 更新str指向下一个分割点
}
}
int main() {
char str[50] = "Hello, world!";
char *tokens[10];
split(str, " ", tokens);
for (int i = 0; i < 2; i++) {
printf("%s\n", tokens[i]); // 打印分割后的字符串
}
return 0;
}
实例25:字符串排序
字符串排序是C语言中常用的操作之一。以下是一个字符串排序实例:
#include <stdio.h>
#include <string.h>
void sortStrings(char **strings, int n) {
char temp[50];
for (int i = 0; i < n - 1; i++) {
for (int j = i + 1; j < n; j++) {
if (strcmp(strings[i], strings[j]) > 0) {
strcpy(temp, strings[i]);
strcpy(strings[i], strings[j]);
strcpy(strings[j], temp);
}
}
}
}
int main() {
char *strings[] = {"Hello", "World", "C", "Programming"};
int n = sizeof(strings) / sizeof(strings[0]);
sortStrings(strings, n);
for (int i = 0; i < n; i++) {
printf("%s\n", strings[i]); // 打印排序后的字符串数组
}
return 0;
}
实例26:链表操作
链表是C语言中常用的数据结构之一。以下是一个链表操作实例:
#include <stdio.h>
#include <stdlib.h>
typedef struct Node {
int data;
struct Node *next;
} Node;
Node *createNode(int data) {
Node *node = (Node *)malloc(sizeof(Node));
if (node == NULL) {
printf("内存分配失败\n");
exit(0);
}
node->data = data;
node->next = NULL;
return node;
}
void insertNode(Node **head, int data) {
Node *node = createNode(data);
if (*head == NULL) {
*head = node;
} else {
Node *current = *head;
while (current->next != NULL) {
current = current->next;
}
current->next = node;
}
}
void printList(Node *head) {
Node *current = head;
while (current != NULL) {
printf("%d ", current->data);
current = current->next;
}
printf("\n");
}
void freeList(Node *head) {
Node *current = head;
while (current != NULL) {
Node *temp = current;
current = current->next;
free(temp);
}
}
int main() {
Node *head = NULL;
insertNode(&head, 1);
insertNode(&head, 2);
insertNode(&head, 3);
printList(head);
freeList(head);
return 0;
}
实例27:栈操作
栈是一种后进先出(LIFO)的数据结构。以下是一个栈操作实例:
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100
typedef struct Stack {
int items[MAX_SIZE];
int top;
} Stack;
void initializeStack(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 item) {
if (isFull(s)) {
printf("栈已满\n");
return;
}
s->items[++s->top] = item;
}
int pop(Stack *s) {
if (isEmpty(s)) {
printf("栈为空\n");
return -1;
}
return s->items[s->top--];
}
int main() {
Stack s;
initializeStack(&s);
push(&s, 1);
push(&s, 2);
push(&s, 3);
printf("栈顶元素:%d\n", pop(&s));
printf("栈顶元素:%d\n", pop(&s));
printf("栈顶元素:%d\n", pop(&s));
return 0;
}
实例28:队列操作
队列是一种先进先出(FIFO)的数据结构。以下是一个队列操作实例:
”`c
#include
#define MAX_SIZE 100
typedef struct Queue {
int items[MAX_SIZE];
int front;
int rear;
} Queue;
void initializeQueue(Queue *q) {
q->front
