Skip to content

作业

关于学生个人作业版权的特别声明

每位学生在本课程中完成的作业、项目、代码及报告(统称“课程作业”),其版权由学生与大学共同所有。然而,我们严正要求:所有学生不得将本人的课程作业上传至任何公开的互联网环境, 例如 GitHub 公开仓库等代码分享平台、博客或论坛等。

此项要求基于以下原因:

  • 维护学术诚信:公开上传的作业为他人抄袭提供了便利。这极大地助长了学术不端行为,严重破坏了课程的公平性和学术评价的有效性。

  • 保护你自身的成果:你的作业一旦公开,将可能被他人未经授权地使用、复制甚至声称为其原创作品。

  • 保障课程内容的持续有效性:课程作业是教学评估的重要组成部分。公开作业答案会迫使教师逐年大幅修改作业题目,这不仅增加了教师的工作负担,也损害了课程内容的设计连贯性与深度,最终影响所有学生的整体学习体验。

我们理解同学们有使用 git 进行项目管理及展示个人成果的需求。我们鼓励你采用以下合规方式:

  • 将你的代码仓库设置为私有。

  • 若希望展示某项作业,建议先征得授课教师的许可,以项目概览的形式展示你的设计和成果,而非公开完整代码。

请各位同学共同维护一个公平、诚实、互信的学术环境。任何违反本声明的行为,一经发现,将视为严重的学术不端,并依据课程政策及大学的相关规定进行处理。

文档作业网站说明

本课程部分作业需要在 文档作业网站 查看与提交。

  • 同济校园网可直接访问,校外需登录 VPN
  • 初始用户名和密码均为学号
  • 系统没有保存按钮,提交的答案会被实时保存在服务器端,不用担心(部分时候刷新网页后看不到之前的作答,但不必担心服务端没有收到)
  • 系统仅在最新版 Chrome 浏览器中进行测试,如果使用其他浏览器遇到问题,建议切换至 Chrome 后再试
  • 系统移植自在线考试系统,部分反作弊功能可能对平时作业产生误报,忽略即可;以下操作可以减少报警:
    • 将窗口最大化
    • 避免缩放网页(可以通过快捷键 Ctrl+0 重置缩放)
    • 不要使用 F12 打开开发者工具

WARNING

请妥善保管网站密码。忘记自设密码者,需找沈老师申请重置,每次重置扣除总分 0.5 分。

编程作业说明

编程作业网站

本课程编程作业需要在 编程作业网站 提交。

  • 同济校园网可直接访问,校外需登录 VPN
  • 用户名与密码同文档作业网站。若未登录过文档作业网站,则初始为学号
  • 每题在平时成绩中所占的具体分值见网页
  • 超过截止时间提交作业则不得分(以服务器完整收到作业内容为准,而非点击“提交”按钮),请务必预留充足的余量
  • 每题有三次提交机会,以最后一次提交为准,用完指定次数即不可再提交

IMPORTANT

和文档作业不同,编程作业是在自己的电脑上完成的,必须要提交作业到网站,不提交则无法得分

双编译器要求

  • 本课程作业的文件名命名规则详见每次下发的作业文档以及作业提交网站上的显示;如果两者有冲突,以网页为准(命名不一致,则无法提交)

TIP

请再次确认自己没有漏做开学大礼包中的环境准备工作(在文件资源管理器中显示所有文件的扩展名),否则你可能会命名出 3-b1.cpp.cpp 这样的文件,从而无法提交!

  • 部分作业要求双编译器通过,部分作业仅要求其中一个编译器,具体见每次的作业要求

  • 双编译器的编译模式要求:

    • VS2026: 选择 Debug/x64 模式
    • 小熊猫 C++: 选择 64-bit Debug 模式
  • 双编译器均使用缺省编译选项,即不需要设置任何参数

IMPORTANT

若作业要求双编译器通过,则必须在双编译器上都得到正确的结果才算正确,否则为0分

源程序的 error 及 warning 要求

作业必须做到在指定编译选项下 0 error(s), 0 warning(s),不符合要求则按以下规则扣分:

  • 任一编译器报 error 则 0 分
  • 任一编译器报一个 warning 则扣 50%,两个以上则 0 分
  • 如果要求双编译器,两个编译器各报一个 warning 且含义相同,算两个

源程序的首行注释

  • 所有源程序(.cpp/.c/h 文件)均要求在第一行(整个文件的第一行,而非第一个代码行)用注释写上 学号/班级/姓名 三项信息
  • “班级”并非本课程班级,对于大部分同学来说应当是专业信息,具体以交作业网站上的显示为准,可以是网站上显示的全称或简称(二者择一,不要都写),务必与网站完全一致
  • 首行三者之间顺序不限,注释方式可以使用//或者/* */(但如果使用 /* */ 这样的多行注释语法,也必须放在同一行),中间必须用空格/tab 分开
cpp
/* 2559999 电信 张三 */
#include <iostream>
using namespace std;
int main()
{
    return 0;
}

下面写法均正确:

cpp
/* 2559999 张三 电信 */
//电信 李四 2559998
/*张三 2559999 电信 */
/*王五 2559997 计科*/
/*李四      2559998         计算机*/

以下形式均会扣分:

cpp
// 1. 首行除了注释以外还有其他内容:

#include<iostream> //电信 张三 2559999

// 2. 三项之间未分开或使用了其他字符连接:
//电信张三2559999
/*计算机-李四-2559998*/

// 3. 多行注释未写在同一行(虽然语法不错,但不符合首行要求)
/* 2559997 王五 计科
*/

// 4. 多个单行注释
// 2559997
// 王五
// 计科
  • 漏写首行,扣本体分数的 10%
  • 整个学期,本课程所有的源程序文件,都需要写首行

知识白名单

整个课程的所有作业都遵循白名单机制,即只允许使用指定的知识。如果使用了非白名单限定的知识,则本题得分为 0

每次作业的白名单不同,具体见当次作业的要求。

为什么要限制白名单?

如同 课程简介 所说,本课程的核心是计算思维的培养,而不只是语法知识的掌握。对于初学者而言,在基础训练过程中使用更便捷的语法和工具(尤其是自己并未深刻理解原理的那些)来“逃课”是无益的。

本课程的作业通常并不难,即使可用知识受限,也不会让高手感到困扰。不过,部分有代码洁癖的高手可能会无法忍受自己在受限的情况下被迫写出冗长的代码。对此,我们深表同情,并希望这部分同学可以理解高程作为入门课,难以为所有水平的同学都提供良好的体验。

关于 C 方式程序

部分作业会指定使用 C 语言完成。此时应当注意:在 VS 创建源文件时务必以 .c 作为后缀名。这会影响 VS 使用哪种语法进行编译——如果使用 .cpp 后缀完成作业,只在提交的时候改为 .c,那代码中可能会混用在 C++ 中合法、但 C 语言中有 error/warning 的语法,从而导致失分。

源程序格式要求

::: note 本节会随着课程进度而更新。 :::

  • 函数内所有语句缩进四格
  • 每条语句都至少应占一行
    • 如果某行过长,可以拆分成多行
  • 函数开头结尾的大括号({})独立成行
  • 鼓励适当使用注释、空行

若代码不符合格式要求,扣除当题分数的 10%

技术上,高程所有的格式要求可以表述为这个 clang-format 配置:

yaml
BasedOnStyle: LLVM
IndentWidth: 4
BreakBeforeBraces: Stroustrup
AllowShortBlocksOnASingleLine: Never
AllowShortFunctionsOnASingleLine: None
IndentCaseLabels: true

VS2026 内置了 clang-format 组件,此处 介绍了 Visual Studio 如何设置保存文件时自动按要求格式化。

源程序字符集要求

本学期所有编程作业的字符集要求为 GB 系列(GB2312/GBK/GB18030均可),设置方法详见开学大礼包。