实例1:变量声明与初始化
在C语言中,正确声明和初始化变量是基础。以下是一个简单的例子:
#include <stdio.h>
int main() {
int a = 10; // 声明并初始化整型变量a
printf("变量a的值是:%d\n", a);
return 0;
}
实例2:数据类型转换
在处理不同数据类型时,数据类型转换是必不可少的。以下是一个转换整型到浮点型的例子:
#include <stdio.h>
int main() {
int i = 5;
float f = i; // 自动转换整型到浮点型
printf("浮点数f的值是:%f\n", f);
return 0;
}
实例3:运算符优先级
了解运算符的优先级对于编写正确的代码至关重要。以下是一个运算符优先级的例子:
#include <stdio.h>
int main() {
int a = 10, b = 5;
int result = a + b * 2; // 先乘后加
printf("结果result的值是:%d\n", result);
return 0;
}
实例4:条件语句
条件语句用于根据条件执行不同的代码块。以下是一个简单的if语句例子:
#include <stdio.h>
int main() {
int a = 10;
if (a > 5) {
printf("a大于5\n");
} else {
printf("a不大于5\n");
}
return 0;
}
实例5:循环语句
循环语句用于重复执行代码块。以下是一个for循环的例子:
#include <stdio.h>
int main() {
for (int i = 1; i <= 5; i++) {
printf("循环变量i的值是:%d\n", i);
}
return 0;
}
实例6:函数定义与调用
函数是C语言的核心组成部分。以下是一个简单函数的例子:
#include <stdio.h>
// 函数声明
void printMessage();
int main() {
printMessage(); // 函数调用
return 0;
}
// 函数定义
void printMessage() {
printf("这是一个函数\n");
}
实例7:指针与数组
指针和数组在C语言中非常重要。以下是一个使用指针访问数组元素的例子:
#include <stdio.h>
int main() {
int arr[] = {1, 2, 3, 4, 5};
int *ptr = arr; // 指针指向数组首地址
printf("数组第一个元素的值是:%d\n", *ptr);
return 0;
}
实例8:结构体与联合体
结构体和联合体用于组织相关数据。以下是一个结构体的例子:
#include <stdio.h>
// 结构体定义
typedef struct {
int id;
float score;
} Student;
int main() {
Student s1 = {1, 90.5};
printf("学生s1的ID是:%d,分数是:%f\n", s1.id, s1.score);
return 0;
}
实例9:文件操作
文件操作在C语言中用于读写文件。以下是一个简单的文件写入例子:
#include <stdio.h>
int main() {
FILE *file = fopen("example.txt", "w"); // 打开文件用于写入
if (file == NULL) {
printf("无法打开文件\n");
return 1;
}
fprintf(file, "这是一个示例文件\n"); // 写入文件
fclose(file); // 关闭文件
return 0;
}
实例10:动态内存分配
动态内存分配允许程序在运行时分配内存。以下是一个动态分配内存的例子:
#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;
}
// 使用完动态分配的内存后,需要释放它
free(arr);
return 0;
}
实例11:字符串处理
C语言中字符串处理非常基础。以下是一个使用字符串的例子:
#include <stdio.h>
#include <string.h>
int main() {
char str1[] = "Hello";
char str2[] = "World";
printf("str1和str2的长度分别是:%lu和%lu\n", strlen(str1), strlen(str2));
return 0;
}
实例12:标准库函数
C语言的标准库提供了许多实用的函数。以下是一个使用标准库函数的例子:
#include <stdio.h>
#include <math.h>
int main() {
double result = pow(2, 3); // 使用pow函数计算2的3次方
printf("2的3次方是:%f\n", result);
return 0;
}
实例13:错误处理
错误处理对于编写健壮的程序至关重要。以下是一个错误处理的例子:
#include <stdio.h>
int main() {
FILE *file = fopen("example.txt", "r");
if (file == NULL) {
perror("文件打开失败"); // 错误处理
return 1;
}
fclose(file);
return 0;
}
实例14:宏定义
宏定义在C语言中用于简化代码。以下是一个宏定义的例子:
#include <stdio.h>
#define PI 3.14159
int main() {
double area = PI * 4 * 4; // 使用宏定义PI
printf("圆的面积是:%f\n", area);
return 0;
}
实例15:预处理指令
预处理指令在C语言中用于执行宏定义、条件编译等操作。以下是一个预处理指令的例子:
#include <stdio.h>
#define DEBUG
int main() {
#ifdef DEBUG
printf("调试模式开启\n");
#endif
return 0;
}
实例16:结构体数组
结构体数组可以存储多个结构体实例。以下是一个结构体数组的例子:
#include <stdio.h>
typedef struct {
int id;
char name[50];
} Student;
int main() {
Student students[3] = {
{1, "张三"},
{2, "李四"},
{3, "王五"}
};
for (int i = 0; i < 3; i++) {
printf("学生ID:%d,姓名:%s\n", students[i].id, students[i].name);
}
return 0;
}
实例17:指针数组
指针数组可以存储多个指针。以下是一个指针数组的例子:
#include <stdio.h>
int main() {
int arr[] = {1, 2, 3, 4, 5};
int *ptrs[5];
for (int i = 0; i < 5; i++) {
ptrs[i] = &arr[i]; // 将数组元素的地址赋给指针数组
}
for (int i = 0; i < 5; i++) {
printf("指针数组元素:%d\n", *ptrs[i]);
}
return 0;
}
实例18:结构体指针
结构体指针可以指向结构体变量。以下是一个结构体指针的例子:
#include <stdio.h>
typedef struct {
int id;
char name[50];
} Student;
int main() {
Student s1 = {1, "张三"};
Student *ptr = &s1; // 结构体指针指向s1的地址
printf("学生ID:%d,姓名:%s\n", ptr->id, ptr->name);
return 0;
}
实例19:函数指针
函数指针可以指向函数。以下是一个函数指针的例子:
#include <stdio.h>
void printMessage() {
printf("这是一个函数\n");
}
int main() {
void (*funcPtr)() = printMessage; // 函数指针指向printMessage函数
funcPtr(); // 调用函数指针指向的函数
return 0;
}
实例20:回调函数
回调函数是一种函数指针的应用。以下是一个回调函数的例子:
#include <stdio.h>
void printMessage() {
printf("这是一个函数\n");
}
int main() {
void (*callback)() = printMessage; // 回调函数
callback(); // 调用回调函数
return 0;
}
实例21:函数指针数组
函数指针数组可以存储多个函数指针。以下是一个函数指针数组的例子:
#include <stdio.h>
void printMessage() {
printf("这是一个函数\n");
}
void printNumber(int num) {
printf("数字:%d\n", num);
}
int main() {
void (*funcPtrs[2])() = {printMessage, printNumber}; // 函数指针数组
funcPtrs[0](); // 调用第一个函数指针指向的函数
funcPtrs[1](10); // 调用第二个函数指针指向的函数,并传递参数
return 0;
}
实例22:指针与函数
指针在函数中用于传递数据。以下是一个指针在函数中使用的例子:
#include <stdio.h>
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
int main() {
int x = 10, y = 20;
printf("交换前:x = %d, y = %d\n", x, y);
swap(&x, &y); // 传递指针
printf("交换后:x = %d, y = %d\n", x, y);
return 0;
}
实例23:递归函数
递归函数在C语言中用于解决一些特定问题。以下是一个递归函数的例子:
#include <stdio.h>
int factorial(int n) {
if (n <= 1) {
return 1;
} else {
return n * factorial(n - 1);
}
}
int main() {
int result = factorial(5);
printf("5的阶乘是:%d\n", result);
return 0;
}
实例24:字符串函数
C语言提供了许多字符串处理函数。以下是一个使用字符串函数的例子:
#include <stdio.h>
#include <string.h>
int main() {
char str1[] = "Hello";
char str2[] = "World";
printf("str1和str2的长度分别是:%lu和%lu\n", strlen(str1), strlen(str2));
return 0;
}
实例25:动态字符串分配
动态字符串分配允许程序在运行时分配和修改字符串。以下是一个动态字符串分配的例子:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
char *str = (char *)malloc(50 * sizeof(char));
if (str == NULL) {
printf("内存分配失败\n");
return 1;
}
strcpy(str, "Hello");
strcat(str, " World");
printf("动态字符串:%s\n", str);
free(str); // 释放动态分配的内存
return 0;
}
实例26:文件读写操作
文件读写操作在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;
}
实例27:结构体与动态内存分配
结构体与动态内存分配结合使用可以创建动态结构体数组。以下是一个结构体与动态内存分配的例子:
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int id;
char name[50];
} Student;
int main() {
int numStudents = 3;
Student *students = (Student *)malloc(numStudents * sizeof(Student)); // 动态分配内存
if (students == NULL) {
printf("内存分配失败\n");
return 1;
}
for (int i = 0; i < numStudents; i++) {
students[i].id = i + 1;
strcpy(students[i].name, "学生");
}
for (int i = 0; i < numStudents; i++) {
printf("学生ID:%d,姓名:%s\n", students[i].id, students[i].name);
}
free(students); // 释放动态分配的内存
return 0;
}
实例28:结构体指针与动态内存分配
结构体指针与动态内存分配结合使用可以创建动态结构体指针数组。以下是一个结构体指针与动态内存分配的例子:
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int id;
char name[50];
} Student;
int main() {
int numStudents = 3;
Student *students = (Student *)malloc(numStudents * sizeof(Student)); // 动态分配内存
if (students == NULL) {
printf("内存分配失败\n");
return 1;
}
for (int i = 0; i < numStudents; i++) {
students[i].id = i + 1;
strcpy(students[i].name, "学生");
}
for (int i = 0; i < numStudents; i++) {
printf("学生ID:%d,姓名:%s\n", students[i].id, students[i].name);
}
free(students); // 释放动态分配的内存
return 0;
}
实例29:结构体与结构体数组
结构体与结构体数组结合使用可以存储多个结构体实例。以下是一个结构体与结构体数组的例子:
#include <stdio.h>
typedef struct {
int id;
char name[50];
} Student;
int main() {
Student students[] = {
{1, "张三"},
{2, "李四"},
{3, "王五"}
};
for (int i = 0; i < 3; i++) {
printf("学生ID:%d,姓名:%s\n", students[i].id, students[i].name);
}
return 0;
}
实例30:结构体与结构体指针
结构体与结构体指针结合使用可以方便地访问和修改结构体成员。以下是一个结构体与结构体指针的例子:
#include <stdio.h>
typedef struct {
int id;
char name[50];
} Student;
int main() {
Student s1 = {1, "张三"};
Student *ptr = &s1; // 结构体指针指向s1的地址
printf("学生ID:%d,姓名:%s\n", ptr->id, ptr->name);
ptr->id = 2;
ptr->name[0] = '李';
printf("修改后的学生ID:%d,姓名:%s\n", ptr->id, ptr->name);
return 0;
}
实例31:结构体指针数组与结构体
结构体指针数组与结构体结合使用可以方便地存储和访问多个结构体实例。以下是一个结构体指针数组与结构体的例子:
#include <stdio.h>
typedef struct {
int id;
char name[50];
} Student;
int main() {
Student students[] = {
{1, "张三"},
{2, "李四"},
{3, "王五"}
};
Student *ptrs[3];
for (int i = 0; i < 3; i++) {
ptrs[i] = &students[i]; // 将结构体数组元素的地址赋给指针数组
}
for (int i = 0; i < 3; i++) {
printf("学生ID:%d,姓名:%s\n", ptrs[i]->id, ptrs[i]->name);
}
return 0;
}
实例32:结构体指针数组与结构体指针
结构体指针数组与结构体指针结合使用可以方便地存储和访问多个结构体指针。以下是一个结构体指针数组与结构体指针的例子:
#include <stdio.h>
typedef struct {
int id;
char name[50];
} Student;
int main() {
Student students[] = {
{1, "张三"},
{2, "李四"},
{3, "王五"}
};
Student *ptrs[3];
for (int i = 0; i < 3; i++) {
ptrs[i] = &students[i]; // 将结构体数组元素的地址赋给指针数组
}
for (int i = 0; i < 3; i++) {
printf("学生ID:%d,姓名:%s\n", ptrs[i]->id, ptrs[i]->name);
}
return 0;
}
实例33:结构体指针数组与结构体数组
结构体指针数组与结构体数组结合使用可以方便地存储和访问多个结构体指针。以下是一个结构体指针数组与结构体数组的例子:
”`c
#include
typedef struct {
int id;
char name[50
