🎓博主介绍:精通 C、Python、Java、JavaScript 等编程语言,具备全栈开发能力。日常专注于分享编程干货、算法解析、项目实战经验,以及前沿技术动态。让我们一起在技术的道路上不断探索,共同成长!
在这里插入图片描述

C语言7天通关计划:浙大翁恺+哈佛CS50精华笔记整理

1. 引言

C语言作为一门经典且强大的编程语言,在系统编程、嵌入式开发、游戏开发等众多领域都有着广泛的应用。浙大翁恺老师的C语言课程深入浅出,哈佛CS50课程则以其趣味性和实用性闻名。结合这两门课程的精华,为大家制定一个C语言7天通关计划,让你在一周内快速掌握C语言的核心知识。

2. 第1天:C语言基础入门

2.1 开发环境搭建

首先要搭建好C语言的开发环境。如果你使用Windows系统,可以选择安装Visual Studio Code并配置MinGW;如果是Linux系统,系统自带的GCC编译器就可以满足需求;Mac系统可以使用Xcode自带的编译器。

  • Windows配置步骤
    1. 下载并安装Visual Studio Code。
    2. 下载MinGW并安装,安装完成后将其bin目录添加到系统环境变量PATH中。
    3. 在Visual Studio Code中安装C/C++扩展。
  • Linux配置步骤:打开终端,输入sudo apt-get install build-essential(Ubuntu系统)即可安装GCC编译器。
  • Mac配置步骤:打开终端,输入xcode-select --install安装Xcode命令行工具。

2.2 第一个C程序

以下是一个简单的C程序示例:

#include <stdio.h>

int main() {
    printf("Hello, World!\n");
    return 0;
}
  • 代码解释#include <stdio.h> 是预处理指令,用于包含标准输入输出库的头文件。int main() 是程序的入口函数,程序从这里开始执行。printf 函数用于输出信息到控制台。return 0; 表示程序正常结束。

2.3 数据类型和变量

C语言有多种数据类型,如int(整数)、float(单精度浮点数)、double(双精度浮点数)、char(字符)等。变量是存储数据的容器,使用前需要先声明。

#include <stdio.h>

int main() {
    int num = 10;
    float f = 3.14f;
    char ch = 'A';
    printf("整数: %d, 浮点数: %f, 字符: %c\n", num, f, ch);
    return 0;
}

3. 第2天:运算符和表达式

3.1 算术运算符

C语言中的算术运算符包括+(加法)、-(减法)、*(乘法)、/(除法)、%(取余)等。

#include <stdio.h>

int main() {
    int a = 10;
    int b = 3;
    printf("加法: %d\n", a + b);
    printf("减法: %d\n", a - b);
    printf("乘法: %d\n", a * b);
    printf("除法: %d\n", a / b);
    printf("取余: %d\n", a % b);
    return 0;
}

3.2 关系运算符和逻辑运算符

关系运算符用于比较两个值的大小关系,如>(大于)、<(小于)、==(等于)等;逻辑运算符用于组合多个条件,如&&(逻辑与)、||(逻辑或)、!(逻辑非)。

#include <stdio.h>

int main() {
    int a = 10;
    int b = 20;
    if (a < b && a > 5) {
        printf("条件成立\n");
    } else {
        printf("条件不成立\n");
    }
    return 0;
}

4. 第3天:控制流程

4.1 if - else语句

if - else 语句用于根据条件执行不同的代码块。

#include <stdio.h>

int main() {
    int score = 80;
    if (score >= 60) {
        printf("及格\n");
    } else {
        printf("不及格\n");
    }
    return 0;
}

4.2 循环语句

C语言有三种循环语句:for 循环、while 循环和do - while 循环。

#include <stdio.h>

int main() {
    // for循环
    for (int i = 0; i < 5; i++) {
        printf("%d ", i);
    }
    printf("\n");

    // while循环
    int j = 0;
    while (j < 5) {
        printf("%d ", j);
        j++;
    }
    printf("\n");

    // do - while循环
    int k = 0;
    do {
        printf("%d ", k);
        k++;
    } while (k < 5);
    printf("\n");

    return 0;
}

5. 第4天:函数和数组

5.1 函数

函数是一段具有特定功能的代码块,可以提高代码的复用性。

#include <stdio.h>

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

int main() {
    int result = add(3, 5);
    printf("两数之和: %d\n", result);
    return 0;
}

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

5.2 数组

数组是一组相同类型的数据的集合。

#include <stdio.h>

int main() {
    int arr[5] = {1, 2, 3, 4, 5};
    for (int i = 0; i < 5; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");
    return 0;
}

6. 第5天:指针

6.1 指针的基本概念

指针是一个变量,它存储的是另一个变量的内存地址。

#include <stdio.h>

int main() {
    int num = 10;
    int *ptr = &num;
    printf("变量的值: %d\n", num);
    printf("指针指向的值: %d\n", *ptr);
    return 0;
}

6.2 指针与数组

指针和数组有着密切的关系,数组名可以看作是指向数组首元素的指针。

#include <stdio.h>

int main() {
    int arr[5] = {1, 2, 3, 4, 5};
    int *ptr = arr;
    for (int i = 0; i < 5; i++) {
        printf("%d ", *(ptr + i));
    }
    printf("\n");
    return 0;
}

7. 第6天:结构体和文件操作

7.1 结构体

结构体是一种用户自定义的数据类型,它可以包含多个不同类型的成员。

#include <stdio.h>

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

int main() {
    struct Student s = {"张三", 20, 85.5};
    printf("姓名: %s, 年龄: %d, 分数: %f\n", s.name, s.age, s.score);
    return 0;
}

7.2 文件操作

C语言可以进行文件的读写操作,常用的函数有fopenfreadfwritefclose等。

#include <stdio.h>

int main() {
    FILE *fp;
    // 打开文件
    fp = fopen("test.txt", "w");
    if (fp == NULL) {
        printf("文件打开失败\n");
        return 1;
    }
    // 写入数据
    fprintf(fp, "Hello, File!\n");
    // 关闭文件
    fclose(fp);
    return 0;
}

8. 第7天:综合实践和巩固

8.1 综合实践项目

可以尝试编写一个简单的学生信息管理系统,综合运用前面所学的知识,包括结构体、数组、函数、文件操作等。以下是一个简单的示例:

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

#define MAX_STUDENTS 100

// 定义学生结构体
struct Student {
    char name[20];
    int age;
    float score;
};

// 添加学生信息
void addStudent(struct Student students[], int *count) {
    if (*count >= MAX_STUDENTS) {
        printf("学生数量已达到上限\n");
        return;
    }
    struct Student newStudent;
    printf("请输入学生姓名: ");
    scanf("%s", newStudent.name);
    printf("请输入学生年龄: ");
    scanf("%d", &newStudent.age);
    printf("请输入学生分数: ");
    scanf("%f", &newStudent.score);
    students[*count] = newStudent;
    (*count)++;
    printf("学生信息添加成功\n");
}

// 显示所有学生信息
void displayStudents(struct Student students[], int count) {
    for (int i = 0; i < count; i++) {
        printf("姓名: %s, 年龄: %d, 分数: %f\n", students[i].name, students[i].age, students[i].score);
    }
}

int main() {
    struct Student students[MAX_STUDENTS];
    int studentCount = 0;
    int choice;
    do {
        printf("1. 添加学生信息\n");
        printf("2. 显示所有学生信息\n");
        printf("3. 退出\n");
        printf("请输入你的选择: ");
        scanf("%d", &choice);
        switch (choice) {
            case 1:
                addStudent(students, &studentCount);
                break;
            case 2:
                displayStudents(students, studentCount);
                break;
            case 3:
                printf("退出程序\n");
                break;
            default:
                printf("无效的选择,请重新输入\n");
        }
    } while (choice != 3);
    return 0;
}

8.2 巩固知识

回顾这一周所学的知识,查漏补缺,多做一些练习题和小项目,加深对C语言的理解和掌握。

9. 结论

通过这7天的C语言通关计划,结合浙大翁恺和哈佛CS50课程的精华,你已经初步掌握了C语言的核心知识。但C语言的学习是一个长期的过程,还需要不断地实践和探索。希望这个计划能为你的C语言学习之旅打下坚实的基础。

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐