常见问题解答
TIP
提问前请务必认真阅读 学会提问 一文。
目录
一般性问题
中文乱码
请确保在 VS 中 检查 过源代码的文件编码;问题仍然存在,则参见 区域和语言设置。
若想要快速定位问题,可参考这一份 Unicode 中文乱码速查表。
例如:
- 若您运行程序时输出是古文码,大概率是因为源程序文件保存为了 UTF-8 方式,而终端以 GBK 方式打印,此时需要按大礼包方式设置文件编码为 GB 系列。
- 若您运行程序时输出是口字码,大概率是因为源程序文件保存为 GB 系列,而终端以 UTF-8 方式打印,此时需要参见上方的区域和语言设置。
WARNING
若您运行程序时输出无乱码,也不能排除源程序文件和打印方式都错误地使用了 UTF-8,因此仍要按大礼包方式正确设置编码并检查!
“错误列表”与“输出”
Visual Studio 中,有两个窗口均会显示程序编译中的错误。默认情况下我们会看到的是“错误列表”——一个比较美观漂亮的表格,分不同的颜色显示“错误”、“警告”和“消息”。在“错误列表”的下方,可以切换至“输出”标签页,它的内容是朴素的文本,如下图所示:

TIP
如果没有看到或不慎关闭了“输出”标签页,可以通过菜单栏 视图-输出 选项,或者快捷键 Ctrl+Alt+O 唤出。
值得注意的是,“输出”窗口会标识出错误所在的行数和列数,且双击这一行文字可以自动在程序正文中锁定相应行。
本课程要求,提问、作答作业时,均应该使用输出窗口,理由如下:
- “输出”是来自编译器的完整原始信息,可以最大限度地还原编译器的工作流程,有助于问题回答者去发现、定位你遇到的问题。部分操作错误,如未正确设置启动项、程序没有重新编译,也可以通过观察“输出”内容分辨。
- “错误列表”中会同时出现来自编译器与智能提示引擎(IntelliSence)的信息。智能提示引擎给出的部分 warning 过于敏感,本课程不强制要求解决。 另外,有时智能提示引擎会出一些小 bug,也会导致无效的报错信息污染“错误列表”。
“智能提示”与“输出”存在差异的例子
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int a, b;
// (来自 IntelliSence 的警告)返回值被忽略: “scanf”。
scanf("%d%d", &a, &b);
printf("%d\n", a + b);
return 0;
}这段简单的 C 程序可以正确编译、运行,在“输出”窗口中不会有任何报错。但“错误列表”窗口会出现一个“返回值被忽略”的警告[1]。这类警告不强制要求解决,也不会导致作业失分。
“应用程序控制策略已阻止此文件。恶意二进制信誉。”

没有按照开学大礼包 要求 完成环境配置。
截屏
QQ 截屏工具(默认快捷键:
Ctrl+Alt+A)QQ 的截屏工具非常强大,支持在选定的框中绘制形状、绘制箭头、添加文本、添加马赛克等等,还具有提取文字、翻译、钉在桌面等功能。双击已选中图形或点击完成会让截屏内容(包括编辑内容)存入剪切板。
Windows 自带截屏工具(默认快捷键:
🪟+Shift+S)Windows 截屏工具会直接让用户选定一个矩形区域,然后自动存入剪切板,操作快捷,裁剪区域会同时存入
C:\用户\<username>\图片\屏幕截图中。ShareX(默认快捷键:
Ctrl+Print Screen)ShareX 是一款开源的截屏工具,可在 GitHub 访问其 官网 下载。支持各种图片编辑功能,能查询历史截屏记录,还支持录屏和录制 GIF 等功能,截屏后会自动存入剪切板。
Snipaste(默认快捷键:
F1)Snipaste 是一款商业级截屏工具,有免费版,可通过 Microsoft Store 搜索 Snipaste 或者访问 官网 下载。功能强大,和 QQ 截屏工具类似,其贴到屏幕后还可以对图片进行放大缩小、更改透明度的操作。双击已选中图形、点击复制到剪切板或使用快捷键
Ctrl+C后,会让截屏内容(包括编辑内容)存入剪切板。
截图自动存入剪贴板后,可以直接用 Ctrl+V 粘贴到聊天窗口、Word/PPT 文档或高程文档作业答题区。
文档作业网站提示“图片大小超过限制”或“答卷内容太大,请删除部分内容”
- 只截屏必要的部分,例如包含答案文本的小块区域
- 使用 QQ 截屏等会自动压缩图片的工具,或者通过在 QQ 中发送之后复制发出的图片等方式简单地减小图片体积
- 使用本站的 图片压缩实用工具
pdf 压缩
上传 pdf 的时候提示文件过大怎么办?
有两种做法:
导出pdf的时候通过合适的选项减小生成的pdf大小,以 Microsoft PowerPoint 为例:

搜索“在线pdf压缩”,有许多免费工具都可以做到压缩 pdf 大小
exe 无法写入
LINK1168: 无法打开 xx.exe 进行写入
有两种可能:
上一次运行程序没有结束,应当关闭上次的运行窗口(少部分情况下窗口关了但后台进程仍在运行,此时需要在任务管理器中结束,或者重启计算机)
程序被杀毒软件误杀了,关闭杀毒软件
如果你没有安装其他第三方安全软件(e.g. Macfee、360安全卫士、腾讯电脑管家……),那么你需要关闭的是系统自带的 Windows Defender 实时防护。
可以点击 此链接 或在
设置-隐私与安全性-Windows 安全中心-病毒与威胁防护-“病毒和威胁防护”设置打开设置页面,关闭“实时保护”功能。
WARNING
关闭安全软件仅为临时解决方案。在工作完成后,仍建议重新开启防护功能。
cout 不明确
E0266: "cout" 不明确
这个报错暂无比较明确的触发机制,属于 VS 本身智能提示的问题,只要输出窗口保持“0error, 0warning”,就不影响得分。
暂时的解决方案:删去 using namespace std; 最后的一个分号,再添加上即可。
永久的解决方案:不使用标准命名空间,而是每次都用 std::cout 代替。
Warning MSB8028 “错误的清除和重新生成行为”
- 这个警告来源于项目结构,不体现在代码文件中,不影响正常编程,也不影响得分,可以直接忽略
- 这个警告的原因是编译过项目后未进行清理就重命名了项目,导致当前【项目】(而非解决方案)的
Debug目录下有以旧名称命名的中间文件;想要处理也很简单,手动删掉Debug目录后重新编译即可
demo / 自己的程序在重定向输入时死循环
用输入重定向/管道方式处理含有错误输入的数据时,最后一个数据必须是正确的,和控制台输入的差别如下:
控制台方式下,前面若干次输入错误,系统都会清空缓冲区后要求重新输入,如果不输入,就会停在那里等待;
输入重定向/管道方式下,前面若干次输入错误,系统都会清空缓冲区后继续从输入文件/管道中读数据,如果读不到数据(文件结束或管道中无后续数据提供),系统会返回
EOF(End Of File),此时cin.good()为 0,会进入无限死循环,从而导致输出重定向文件不停增长。
Details
注:用 get_input_data.exe 方式读 test-data.txt 形式的,要理解每个 [] 组是一个题目的测试数据,因此,每组的最后一个数据必须是正确的。
可以使用大模型吗?
关于大模型的使用政策,请参见课程网站的说明页面:
使用生成式人工智能
该页面中对是否允许使用、责任边界、禁止事项以及使用建议都有明确说明,请在使用前务必仔细阅读。
其他问题
Windows SDK 缺失
该问题解决方案适用于以下报错信息:
error C1083: 无法打开包括文件: "float.h":No such file or directory
error MSB8036: 找不到 Windows SDK 版本 10.0.xxxxx.0。请安装所需版本的 Windows SDK,或者在项目属性页中或通过右键单击解决方案并选择“重定解决方案目标”来更改 SDK 版本。
有两种可能:
在 Visual Studio 安装过程中没有选择安装 Windows SDK 组件。
- 按 win 键打开“开始”菜单,搜索框中输入
Visual Studio Installer,打开

- 选择
修改

- 在打开的菜单中,确认右侧
使用 C++ 的桌面开发-可选中至少有一个Windows 11 SDK选项被勾选。如果没有,将它勾选上,然后点击右下角的修改按钮安装,结束。

手动删除或移动了 Windows Kits 文件夹的位置,或因为各种原因导致 Windows SDK 未正常安装。
如果你能想起来自己删除或移动过 Windows Kits 文件夹,请将它放回原位,路径通常是
C:\Program Files (x86)\Windows Kits或D:\Windows Kits。如果你不记得进行过相关操作/找不到 Windows Kits 文件夹/放回原位后问题仍未解决。
- 打开 Windows 设置(快捷键
Win + I),进入应用-安装的应用

- 搜索 Windows Software Development Kit,把这里能看到的每一项都选择卸载

- 卸载完成后,再打开 Visual Studio Installer,选择
更多-修复,这将重新安装 Windows SDK。

- 打开 Windows 设置(快捷键
如果在执行上述步骤过程中出现问题,或完成上述步骤后报错仍未解决,请联系助教寻求帮助。
Fn 与 FnLock 相关简介
在笔记本电脑中,我们能看到一个 Fn 键和 FnLock 键,其目的是为用户对计算机的常用操作提供更高效便捷的方式。
关于 Fn 键
Fn 意为 Function,功能键,通常位于键盘的左下角,它是一个修饰键,主要用于与其它键(位于 F1~F12 之间,另含 PtrSc,不同计算机存在差异)组合以触发额外的功能。
下面以 LENOVO 某笔记本电脑举例:

可以看到这三个键各自都含有两个图标,上方的 F1、F2、F3 称为功能键,下方的 静音、音量减小、音量增大 称为媒体键。而 Fn 的作用就是切换功能键和媒体键的选择。默认由电脑的设置方式决定。通常有两种模式:
媒体键模式(默认):
- 单独按下
F1-F12:执行图标对应的快捷功能(比如按F1直接静音)。 - 按住
Fn+ 按F1-F12:执行标准功能键(比如按Fn+F1打开帮助)。
功能键模式:
- 单独按下
F1-F12:执行标准功能键(比如按F1打开帮助)。 - 按住
Fn+ 按F1-F12:执行图标对应的快捷功能(比如按Fn+F1静音)。
你可以自行探索当前是什么模式。例如:在桌面单独按下 F1 后静音,说明是媒体键模式;在桌面单独按下 F1 后跳转到浏览器的帮助,说明是功能键模式。
对于 Visual Studio 2026 的编译快捷键,若你处于媒体键模式,则需要按 Ctrl+Fn+F5。
FnLock 简介,如何切换媒体键模式和功能键模式?
FnLock 按键用于切换媒体键模式和功能键模式,通常和 Esc 在同一个键上,位于键盘左上角。
若您感觉长期需要组合 Fn 按键不太方便,或者你有长时间使用功能键模式(例如编程过程中)或者媒体键模式(例如休息中)的需求,可以进行当前模式的切换。
切换方法:使用 Fn+FnLock 组合键。切换后 FnLock 键上的亮灯状态会发生改变。
附注
这个警告是有道理的,但对学习输入错误处理之前的初学者无意义。 ↩︎