大多数人,本来就从“不懂”开始
大致了解 Git 与 GitHub
30 / 170 人
第一行代码不是终点。
它是你开始独立解决问题的入口。
大致了解 Git 与 GitHub
30 / 170 人
“我还不会”不是劣势,
只是你的起点坐标。
认识程序、工具、报错与 OJ
跑通主演示题,看到数学如何压缩代码
前缀和优化+问卷高频答疑
现场提问+互动/备用题
如果某个问题现场更重要,我们就把时间让给它。课件不是铁轨,是地图。
很多入门程序先训练的是拆步骤、验证结果和表达逻辑。
真正的掌握标准是:合上答案,能独立写出并验证。
报错不是人格鉴定,它只是程序给你的定位信息。
编译器通常不是在嘲讽你,虽然它的语气确实很像。
写代码之前先问:输入是什么?输出是什么?中间规则是什么?
#include <stdio.h> int main() { printf("Hello, world!\n"); return 0; }
引入工具:让程序知道 printf 从哪里来。
进入 main:程序从这里开始执行。
输出文字:括号、引号、分号都属于语法。
正常结束:返回 0 表示程序顺利完成。
更接近底层
语法严格、内存更显式。适合理解程序如何真正运行。
能力更丰富
兼容大量 C 思维,同时提供类、模板与标准库等工具。
表达更简洁
语法负担较轻,适合快速验证想法、数据处理与 AI 实践。
语言会换,输入—处理—输出、分解、测试和调试不会消失。
先会组合积木,再讨论宏伟城堡。别在“Hello World”阶段焦虑微服务。
文件:hello.c 是源代码;编译后得到可执行文件。
目录:终端当前所在位置,会影响程序能否找到文件。
编译错误
语法或类型不合法,程序还没真正开始运行。
expected ';'
运行错误
程序启动了,但访问非法内存、除零或发生异常。
segmentation fault
逻辑错误
程序能跑,甚至不报红字,但答案不符合需求。
expected 12, got 10
调试不是水平差的补救,
它就是正常开发过程
稳定复现 → 缩小范围 → 检查变量 → 修改一处 → 重新测试
main.c:6:5: error: expected ';' before 'return' printf("hello\n") ^ return 0; 更多错误可能只是连锁反应……
看文件名与行号:问题大概在哪里?
提取关键词:expected ';'
检查这一行和上一行,不要整段删除重写。
修复后重新编译,确认后续错误是否一起消失。
OJ:把你的程序送进隐藏测试关卡
题目规定输入、输出、数据范围和资源限制;提交后,系统自动验证。
别把 WA 当成“我不行”;把它翻译成:至少还有一个情况没考虑到。
“看懂了”只是输入;能不看答案写出、改动并解释,才开始变成你的能力。
最低动作:亲手输入一次,再主动改一个条件或输入,观察结果。
对程序结果
保持一点礼貌的怀疑
不要用“看起来应该没问题”当证据。
程序是否允许?
边界是否漏掉?
会不会溢出/超时?
符号是否正确?
比较是否稳定?
循环能否进入?
概念与语法
跟紧任课教师、PPT、作业与当期考核要求。
独立实现
自己写、编译、调试,处理隐藏数据与边界。
阅读分析
没有 IDE 提示时,也能判断输出、改错与写函数。
往年资料用于辅助复习;当前要求,以2026级培养方案和任课教师通知为准。
课表来源:学院开课计划截图;后续如有调整,以学院正式通知和实际排课为准。
现在,把一道题从人话翻译成数学,再翻译成代码。
顺序固定:题目 → 思路 → 公式 / 结论 → 代码。先别让代码抢镜。
n 个人围成一圈;每个人都说:
“我后面的两个人中,恰好一个说真话。”
求所有合法真假安排中,说谎人数的总和。
多组数据;每组给出人数 n。
每组输出所有合法情况中的说谎人数总和。
n 可到 1018,不能模拟每个人或枚举所有情况。
000000…
所有人都说谎
011011…
每 3 人重复一次
101101… / 110110…
同一周期的另外两种平移
这个人说真话
这个人说假话
a、b 恰好一个为真
数学模型不是为了显得高级,而是为了把长故事压缩成可推导的规则。
只有全假
四种安排
最后的代码很短,不是因为题目没思考,而是因为思考已经替代码做完了。
#include <stdio.h> int main() { int t; scanf("%d", &t); while (t--) { long long n; scanf("%lld", &n); // 周期 3 能闭合:全假贡献 n,三种周期排列共贡献 n if (n % 3 == 0) { printf("%lld\n", 2 * n); } else { // 周期无法闭合,只剩“所有人都说谎” printf("%lld\n", n); } } return 0; }
#include <iostream> using namespace std; int main() { int t; cin >> t; while (t--) { long long n; cin >> n; // 数学结论不因语言改变 if (n % 3 == 0) { cout << 2 * n << endl; } else { cout << n << endl; } } return 0; }
t = int(input()) while t: t -= 1 n = int(input()) # 只有当 n 是 3 的倍数,周期排列才能首尾相接 if n % 3 == 0: print(2 * n) else: print(n)
n 与 a1 … an
只取 i < j,每对恰好一次
n ≤ 2×105,暴力会超时
这道题最适合看“一个正确思路,怎样继续变成一个足够快的思路”。
long long s = 0; for (int i = 1; i <= n; i++) { for (int j = i + 1; j <= n; j++) { s += a[i] * a[j]; } }
n(n−1) / 2
≈ 2×1010 次
不是“再优化一点点”能救的规模。
真正重复的,不是乘法本身,而是每次都在重新计算“右边所有数的和”。
每个位置只处理一次
时间复杂度从 O(n²) 降为 O(n)。
#include <stdio.h> long long a[200005], sum[200005]; int main() { long long n; scanf("%lld", &n); for (int i = 1; i <= n; i++) { scanf("%lld", &a[i]); // sum[i]:前 i 个数之和 sum[i] = sum[i - 1] + a[i]; } long long s = 0; for (int i = 1; i <= n - 1; i++) { // a[i] 与右边所有数的乘积和 s += a[i] * (sum[n] - sum[i]); } printf("%lld\n", s); return 0; }
#include <iostream> using namespace std; long long a[200005], sum[200005]; int main() { long long n; cin >> n; for (int i = 1; i <= n; i++) { cin >> a[i]; sum[i] = sum[i - 1] + a[i]; // 前缀和 } long long s = 0; for (int i = 1; i <= n - 1; i++) { s += a[i] * (sum[n] - sum[i]); // 右侧之和 } cout << s << endl; return 0; }
n = int(input()) a = [0] + list(map(int, input().split())) prefix = [0] * (n + 1) for i in range(1, n + 1): # prefix[i] 表示前 i 个数之和 prefix[i] = prefix[i - 1] + a[i] answer = 0 for i in range(1, n): # 固定 a[i],一次得到它与右边所有数的乘积和 answer += a[i] * (prefix[n] - prefix[i]) print(answer)
先把你现在的卡点说出来
提问不需要先组织成论文摘要。先说你做了什么、哪里不符合预期。
AI 可以帮你加速;
最终验收人仍然是你
能运行 ≠ 正确;回答很自信 ≠ 有证据。
VS Code
Python
一个 AI 对话工具
终端
Git
GitHub
Node.js
依赖管理
多人协作
Codex / Claude Code
AI Agent
Skill / Harness
Agent 能读取项目、修改文件和执行命令;Skill 是可复用的任务说明与工作流程。先理解,再上手。
新生第一步:创建仓库 → 保存代码 → 提交一次修改 → 写清楚 README。
项目、竞赛、科研、开源:是不同训练场,不是四项必修打卡
跟紧课程、坚持 OJ;可以关注大创申报。
做一个小工具;尝试入门级竞赛。
兴趣更明确时,可以主动了解实验室与课题组。
逐步使用 Git/GitHub、AI Agent 与工程工具。
没申大创 ≠ 落后;没打比赛 ≠ 重开;没进组 ≠ 大学寄了。
适合预习、查漏补缺、寻找复习材料。
主要基于 2021 级软件工程课程资料。
仓库体积很大,维护者也建议按需下载。
不是 2026 级官方培养方案,也不是标准答案。
程序设计只是入口。之后你会遇到系统、网络、数据、软件工程、人工智能、安全、人机交互等不同世界。
不喜欢某一条路线,不等于不适合计算机。
如果时间允许,挑战一只数学转化 Boss。
P10415:最大公约数、最小质因数,怎样连接到“切最多正方形”。
正方形边长 d,必须满足什么?
也就是说,d 必须是 W 与 H 的公共因数。
宽和高都必须被 d 整除。
所有小正方形使用同一个 d。
问的是数量最多,不是正方形最大。
W、H 固定时,d 越小,数量越多。
W、H 的所有公共因数,都藏在最大公约数 x 的因数中。
无合法边长
d = x
找最小因数 i
从 2 开始枚举,第一个整除 x 的 i,就是最小质因数。
long long gcd(long long a, long long b) { // 欧几里得算法:不断用余数缩小问题 return b > 0 ? gcd(b, a % b) : a; } int isPrime(long long x) { // 因数总是成对出现,只需检查到 sqrt(x) for (long long i = 2; i * i <= x; i++) { if (x % i == 0) return 0; } return 1; }
long long gcd(long long a, long long b) { return b > 0 ? gcd(b, a % b) : a; } bool isPrime(long long x) { for (long long i = 2; i * i <= x; i++) { // 找到一个非平凡因数,x 就不是质数 if (x % i == 0) return false; } return true; }
from math import gcd, isqrt def is_prime(x): # 只检查到整数平方根 for i in range(2, isqrt(x) + 1): if x % i == 0: return False return True
long long w, h; int main() { scanf("%lld %lld", &w, &h); long long x = gcd(w, h); // gcd 为 1:没有大于等于 2 的公共边长 if (x == 1) { printf("0\n"); return 0; } // x 为质数:最小合法公约数就是 x 自己 if (isPrime(x)) { printf("%lld\n", (w / x) * (h / x)); return 0; } // 从小到大遇到的第一个因数,就是最小合法边长 for (long long i = 2; i * i <= x; i++) { if (x % i == 0) { printf("%lld\n", (w / i) * (h / i)); return 0; } } }
long long w, h; int main() { cin >> w >> h; long long x = gcd(w, h); if (x == 1) { cout << 0 << endl; return 0; } if (isPrime(x)) { cout << (w / x) * (h / x) << endl; return 0; } for (long long i = 2; i * i <= x; i++) { if (x % i == 0) { cout << (w / i) * (h / i) << endl; return 0; } } }
w, h = map(int, input().split()) x = gcd(w, h) if x == 1: print(0) elif is_prime(x): # x 是质数时,最小合法边长只能是 x print((w // x) * (h // x)) else: for i in range(2, isqrt(x) + 1): if x % i == 0: # 第一个因数就是最小合法边长 print((w // i) * (h // i)) break
一定要动手写;“看懂”不是终点。
一定要做 OJ;也别忽略课堂、笔试与项目。
报错是线索;先读第一条有意义的信息。
AI 可以协助;正确性与提交责任仍属于你。
路线可以探索;不要把大学变成“五线作战”。
稳定练习
比偶尔爆肝更强
保证睡眠、运动、休息和用眼;编程不是连续坐得越久越强。
现在,轮到你的问题
“跑不了”是开头;这些信息能让别人真正帮到你。
想把“会写代码”
继续变成“能做东西”?
QQ群:1053448419
扫码加入群聊,认识同样想动手做项目的人。
← →前后翻页
Space下一页
N演讲者备注
O总览
F全屏
E文字编辑
Ctrl S保存副本
?帮助