C语言7天通关计划:浙大翁恺+哈佛CS50精华笔记整理
C语言作为一门经典且强大的编程语言,在系统编程、嵌入式开发、游戏开发等众多领域都有着广泛的应用。浙大翁恺老师的C语言课程深入浅出,哈佛CS50课程则以其趣味性和实用性闻名。结合这两门课程的精华,为大家制定一个C语言7天通关计划,让你在一周内快速掌握C语言的核心知识。
🎓博主介绍:精通 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配置步骤:
- 下载并安装Visual Studio Code。
- 下载MinGW并安装,安装完成后将其
bin目录添加到系统环境变量PATH中。 - 在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 = #
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语言可以进行文件的读写操作,常用的函数有fopen、fread、fwrite、fclose等。
#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语言学习之旅打下坚实的基础。
更多推荐




所有评论(0)