C语言经典例子

本文提供了一份全面的C语言学习指南,涵盖了从基础到高级的各种概念,包括Hello World、变量、数据类型、用户输入、条件语句、循环、函数、数组、字符串操作、结构体、文件操作、指针、动态内存分配、函数指针、枚举、宏定义等。通过99个实例代码,深入浅出地讲解了C语言的各个关键知识点,适合初学者和进阶者学习。
摘要由CSDN通过智能技术生成

理解基础的C语言代码对于初学者非常重要。以下是15个基础的C语言代码片段,每个代码片段都附有详细的注释和功能描述:

1. Hello World

#include <stdio.h>

int main() {
   
    // 打印"Hello, World!"到控制台
    printf("Hello, World!\n");
    return 0;
}
  • 注释: 包含标准输入输出头文件,定义 main 函数,使用 printf 打印字符串。
  • 功能: 在控制台打印出"Hello, World!"。

2. 变量和数据类型

#include <stdio.h>

int main() {
   
    // 声明整数变量和浮点数变量
    int integerVar = 10;
    float floatVar = 3.14;

    // 打印变量的值
    printf("Integer Variable: %d\n", integerVar);
    printf("Float Variable: %.2f\n", floatVar);
    return 0;
}
  • 注释: 声明整数和浮点数变量,使用 printf 打印变量的值。
  • 功能: 学习声明和使用不同数据类型的变量,并打印它们的值。

3. 用户输入

#include <stdio.h>

int main() {
   
    // 声明变量用于存储用户输入
    int userInput;

    // 获取用户输入
    printf("Enter an integer: ");
    scanf("%d", &userInput);

    // 打印用户输入的值
    printf("You entered: %d\n", userInput);
    return 0;
}
  • 注释: 使用 scanf 获取用户输入的整数,然后使用 printf 打印用户输入的值。
  • 功能: 学习如何从用户获取输入,并打印用户输入的值。

4. 条件语句

#include <stdio.h>

int main() {
   
    // 声明变量
    int number = 5;

    // 使用条件语句判断数字的大小
    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;
}
  • 注释: 使用条件语句判断一个数字的正负性,并打印相应的消息。
  • 功能: 学习使用条件语句根据条件执行不同的代码块。

5. 循环语句

#include <stdio.h>

int main() {
   
    // 使用循环打印数字 1 到 5
    for (int i = 1; i <= 5; ++i) {
   
        printf("%d ", i);
    }
    printf("\n");
    return 0;
}
  • 注释: 使用 for 循环打印数字 1 到 5。
  • 功能: 学习使用循环语句重复执行一段代码。

6. 函数定义和调用

#include <stdio.h>

// 函数声明
int add(int a, int b);

int main() {
   
    // 调用函数并打印结果
    int result = add(3, 5);
    printf("Sum: %d\n", result);
    return 0;
}

// 函数定义
int add(int a, int b) {
   
    return a + b;
}
  • 注释: 声明并定义一个简单的函数,然后在 main 函数中调用该函数。
  • 功能: 学习函数的声明、定义和调用,以及函数的返回值。

7. 数组和循环

#include <stdio.h>

int main() {
   
    // 声明和初始化数组
    int numbers[] = {
   1, 2, 3, 4, 5};

    // 使用循环遍历数组并打印每个元素
    for (int i = 0; i < 5; ++i) {
   
        printf("%d ", numbers[i]);
    }
    printf("\n");
    return 0;
}
  • 注释: 声明和初始化数组,使用循环遍历数组并打印每个元素。
  • 功能: 学习声明、初始化和使用数组,并使用循环遍历数组元素。

8. 字符串操作

#include <stdio.h>
#include <string.h>

int main() {
   
    // 声明字符串
    char greeting[] = "Hello, C!";

    // 使用字符串库函数获取字符串长度并打印
    printf("Length of the string: %lu\n", strlen(greeting));
    return 0;
}
  • 注释: 使用字符串库函数 strlen 获取字符串长度,并打印字符串长度。
  • 功能: 学习使用字符串库函数操作字符串。

9. 结构体

#include <stdio.h>

// 定义结构体
struct Point {
   
    int x;
    int y;
};

int main() {
   
    // 声明结构体变量并初始化
    struct Point p = {
   3, 5};

    // 打印结构体成员的值
    printf("Point coordinates: (%d, %d)\n", p.x, p.y);
    return 0;
}
  • 注释: 定义结构体 Point,声明结构体变量并初始化,打印结构体成员的值。
  • 功能: 学习结构体的定义、声明和使用。

10. 文件读写

#include <stdio.h>

int main() {
   
    // 打开文件
    FILE *file = fopen("example.txt", "w");

   

 // 写入数据到文件
    fprintf(file, "Hello, File!\n");

    // 关闭文件
    fclose(file);
    return 0;
}
  • 注释: 使用 fopen 打开文件,使用 fprintf 写入数据到文件,使用 fclose 关闭文件。
  • 功能: 学习文件的打开、写入和关闭操作。

11. 指针基础

#include <stdio.h>

int main() {
   
    // 声明整数变量和指针变量
    int num = 10;
    int *ptr;

    // 将指针指向整数变量
    ptr = &num;

    // 打印指针指向的变量的值
    printf("Value at the pointer: %d\n", *ptr);
    return 0;
}
  • 注释: 声明整数变量和指针变量,将指针指向整数变量,打印指针指向的变量的值。
  • 功能: 学习基础的指针操作。

12. 动态内存分配

#include <stdio.h>
#include <stdlib.h>

int main() {
   
    // 动态分配整数变量的内存
    int *ptr = (int *)malloc(sizeof(int));

    // 将值赋给动态分配的内存
    *ptr = 42;

    // 打印动态分配的内存的值
    printf("Value in dynamically allocated memory: %d\n", *ptr);

    // 释放动态分配的内存
    free(ptr);
    return 0;
}
  • 注释: 使用 malloc 动态分配整数变量的内存,赋值给动态分配的内存,打印动态分配的内存的值,使用 free 释放动态分配的内存。
  • 功能: 学习动态内存分配和释放。

13. 函数指针

#include <stdio.h>

// 函数声明
int add(int a, int b);

int main() {
   
    // 声明函数指针并指向函数
    int (*ptr)(int, int) = add;

    // 通过函数指针调用函数
    int result = ptr(3, 5);
    printf("Sum: %d\n", result);
    return 0;
}

// 函数定义
int add(int a, int b) {
   
    return a + b;
}
  • 注释: 声明并定义一个简单的函数,然后声明函数指针并指向该函数,通过函数指针调用函数。
  • 功能: 学习函数指针的声明和使用。

14. 枚举类型

#include <stdio.h>

// 定义枚举类型
enum Day {
   SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY};

int main() {
   
    // 声明枚举类型变量
    enum Day today = WEDNESDAY;

    // 打印枚举值
    printf("Today is: %d\n", today);
    return 0;
}
  • 注释: 定义枚举类型 Day,声明枚举类型变量并赋值,打印枚举值。
  • 功能: 学习枚举类型的定义和使用。

15. 宏定义

#include <stdio.h>

// 定义宏
#define SQUARE(x) (x * x)

int main() {
   
    // 使用宏计算平方
    int result = SQUARE(5);

    // 打印结果
    printf("Square of 5: %d\n", result);
    return 0;
}
  • 注释: 定义宏 SQUARE,使用宏计算平方,打印结果。
  • 功能: 学习宏的定义和使用。

16. 指向函数的指针数组

#include <stdio.h>

// 函数声明
int add(int a, int b);
int subtract(int a, int b);
int multiply(int a, int b);

int main() {
   
    // 声明指向函数的指针数组
    int (*operations[3])(int, int) = {
   add, subtract, multiply};

    // 调用函数通过指针数组
    for (int i = 0; i < 3; ++i) {
   
        int result = operations[i](4, 2);
        printf("Result: %d\n", result);
    }

    return 0;
}

// 函数定义
int add(int a, int b) {
   
    return a + b;
}

int subtract(int a, int b) {
   
    return a - b;
}

int multiply(int a, int b) {
   
    return a * b;
}
  • 注释: 声明并定义多个函数,然后声明指向函数的指针数组,通过指针数组调用不同的函数。
  • 功能: 学习使用指向函数的指针数组调用不同的函数。

17. 结构体数组

#include <stdio.h>

// 定义结构体
struct Student {
   
    char name[50];
    int age;
    float grade;
};

int main() {
   
    // 声明结构体数组并初始化
    struct Student students[3] = {
   
        {
   "Alice", 20, 85.5},
        {
   "Bob", 22, 90.0},
        {
   "Charlie", 21, 78.3}
    };

    // 打印结构体数组的信息
    for (int i = 0; i < 3; ++i) {
   
        printf("Student %d: Name=%s, Age=%d, Grade=%.2f\n", i + 1,
               students[i].name, students[i].age, students[i].grade);
    }

    return 0;
}
  • 注释: 定义结构体 Student,声明结构体数组并初始化,使用循环打印结构体数组的信息。
  • 功能: 学习使用结构体数组存储和打印多个学生的信息。

18. 动态分配结构体数组

#include <stdio.h>
#include <stdlib.h>

// 定义结构体
struct Point {
   
    int x;
    int y;
};

int main() {
   
    // 动态分配结构体数组的内存
    struct Point *points = (struct Point *)malloc(3 * sizeof(struct Point));

    // 初始化结构体数组的元素
    for (int i = 0; i < 3; ++i) {
   
        points[i].x = i + 1;
        points[i].y = 2 * (i + 1);
    }

    // 打印结构体数组的信息
    for (int i = 0; i < 3; ++i) {
   
        printf("Point %d: x=%d, y=%d\n", i + 1, points[i].x, points[i].y);
    }

    // 释放动态分配的内存
    free(points);

    return 0;
}
  • 注释: 使用 malloc 动态分配结构体数组的内存,初始化结构体数组的元素,打印结构体数组的信息,最后使用 free 释放动态分配的内存。
  • 功能: 学习动态分配内存来存储结构体数组。

19. 二维数组

#include <stdio.h>

int main() {
   
    // 声明和初始化二维数组
    int matrix[3][4] = {
   
        {
   1, 2, 3, 4},
        {
   5, 6, 7, 8},
        {
   9, 10, 11, 12}
    };

    // 打印二维数组的元素
    for (int i = 0; i < 3; ++i) {
   
        for (int j = 0; j < 4; ++j) {
   
            printf("%d ", matrix[i][j]);
        }
        printf("\n");
    }

    return 0;
}
  • 注释: 声明和初始化二维数组,使用嵌套循环打印二维数组的元素。
  • 功能: 学习声明、初始化和使用二维数组。

20. 字符串比较

#include <stdio.h>
#include <string.h>

int main() {
   
    // 声明两个字符串
    char str1[] = "Hello";
    char str2[] = "World";

    // 比较两个字符串
    int result = strcmp(str1, str2);

    // 打印比较结果
    if (result == 0) {
   
        printf("Strings are equal\n");
    } else {
   
        printf("Strings are not equal\n");
    }

    return 0;
}
  • 注释: 使用 strcmp 比较两个字符串,根据比较结果打印相应的消息。
  • 功能: 学习使用字符串比较函数比较两个字符串。

这些代码片段覆盖了C语言中的基本概念,包括变量、函数、数组、指针、结构体、文件操作等。通过仔细阅读和理解这些代码,你将对C语言的基础有更深刻的认识。如果有任何问题,随时问我!

21. 指针和字符串

#include <stdio.h>

int main() {
   
    // 声明字符串
    char str[] = "C Programming";

    // 声明指针并指向字符串
    char *ptr = str;

    // 使用指针遍历并打印字符串
    while (*ptr != '\0') {
   
        printf("%c", *ptr);
        ptr++;
    }
    printf("\n");

    return 0;
}
  • 注释: 使用指针遍历字符串并打印每个字符。
  • 功能: 学习使用指针遍历字符串的基本操作。

22. 函数递归

#include <stdio.h>

// 递归函数计算阶乘
int factorial(int n) {
   
    if (n == 0 || n == 1) {
   
        return 1;
    } else {
   
        return n * factorial(n - 1);
    }
}

int main() {
   
    // 调用递归函数并打印结果
    int result = factorial(5);
    printf("Factorial of 5: %d\n", result);
    return 0;
}
  • 注释: 定义递归函数计算阶乘,调用递归函数并打印结果。
  • 功能: 学习使用递归实现阶乘计算。

23. 引用传递

#include <stdio.h>

// 函数使用指针修改变量的值
void addTen(int *num) {
   
    *num += 10;
}

int main() {
   
    // 声明变量并调用函数修改值
    int number = 5;
    addTen(&number);

    // 打印修改后的值
    printf("Modified value: %d\n", number);
    return 0;
}
  • 注释: 定义函数使用指针修改变量的值,调用函数并传递变量的地址。
  • 功能: 学习使用指针进行引用传递,修改变量的值。

24. 静态变量

#include <stdio.h>

// 函数使用静态变量记录调用次数
void printCount() {
   
    // 静态变量在多次函数调用之间保持其值
    static int count = 0;
    count++;
    printf("Function called %d times\n", count);
}

int main() {
   
    // 多次调用函数并打印调用次数
    printCount();
    printCount();
    printCount();
    return 0;
}
  • 注释: 函数使用静态变量记录调用次数,静态变量在多次函数调用之间保持其值。
  • 功能: 学习使用静态变量在函数调用之间保持状态。

25. 类型转换

#include <stdio.h>

int main() {
   
    // 声明不同类型的变量
    int integerVar = 42;
    double doubleVar;

    // 将整数类型转换为浮点数类型
    doubleVar = (double)integerVar;

    // 打印转换后的值
    printf("Converted value: %.2f\n", doubleVar);
    return 0;
}
  • 注释: 使用类型转换将整数类型转换为浮点数类型。
  • 功能: 学习使用类型转换将一个数据类型转换为另一个数据类型。

26. 预处理器指令

#include <stdio.h>

// 定义宏
#define PI 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值