C is quirky, flawed, and an enormous success !
Dennis Ritchie
本课程考试成绩由四部分组成:
1. 上机考试,占总成绩的50%
1)第1次实验课熟悉集成开发环境和考试系统,从第2次课开始,每次实验课考1次,1道编程题(10分),1道附加改错题(附加分2分),总计考6次,分别考核选择结构、循环结构、函数(附加题可以为递归)、数组(附加题可以为指针)、字符串(附加题可以为结构体)、综合应用(数组、函数和常用算法的综合应用,附加题可以为指针、结构体或链表)。必做题为普通编程题或复杂编程题,每次10分,附加改错题为每次2分。前5次考试考试时间为30分钟,综合应用考试时间为40分钟。
2)前5次去掉一个最低分,加上最后一次综合应用考试成绩,作为上机考试成绩。
3)最后一次综合应用考试不允许缺考,缺考者不给补考机会。因故不能参加前5次上机考试的学生,需提供辅导员签字批准的假条,否则不给补考机会。在辅导员签字批准后,可以参加补考,但无论缺考几次,都只能参加一次补考。补考时间定在综合考试之后进行,补考试题由同一时间上实验课的挂牌教师联合出题,考试内容可以涉及选择、循环、函数(包括递归)、数组、字符串(包括指针)、结构体或综合应用等全部知识点,必答题分数为100分(1小时,4道题),折合为该考生缺考的分数后作为该考生补考的分数,例如:若缺考n次,则补考分数折合为n-1次缺考的分数。
当n>=2时(即缺考2次和2次以上),则折合后的补考成绩 = 补考分数*10*(n-1)/100
当n=1时(即缺考1次),学生自愿选择是否参加补考,如果参加补考,则折合后的补考成绩 = 补考分数/10,并且该补考成绩视为前5次考试成绩中的一次。
2. 实验大作业,占总成绩的25%(程序占15%,报告占10%)
从学习指导书上的学生成绩管理系统V1.0(一维数组),V2.0(一维数组+函数指针),V3.0(一维数组+函数指针+指针数组),V4.0(二维数组+函数指针+指针数组),V5.0,V6.0(结构体+文件)中任选一个完成,根据难度的不同分别对应的满分分别为7分,8分,9分,10分,11分,12分。用链表和文件实现学生成绩管理系统V6.0,满分为15分。以下加分和扣分累计结果,到程序满分线15分封顶,不再额外加分。
课堂大翻转展示的程序可以用作实验大作业,但是实验大作业必须单人完成,课堂大翻转可以小组组队完成。
加分项:
1) 对程序有优化,例如随机生成学生数据信息并增加了程序的健壮性,加1分。
2) 增加了删除学生记录、修改学生记录的功能,各加1分。
3) 添加了其他特殊的功能或者趣味性元素,例如模糊查询、考勤、学分绩等,酌情加1-3分。
4) 如果独立设计并完成一个课外的综合应用程序,根据选题的新颖性、题目的难度、代码规模,可以在参考同等难度和代码规模的学生成绩管理系统满分线的基础上,加1-3分。
扣分项:
1) 验收时不能正确回答老师的问题,酌情扣1-2分。
2) 程序有错误,有bug,酌情扣1-2分。
3) 代码风格不好,缺少函数和重要语句的注释,变量名和函数名不符合要求(例如用汉语拼音命名),没有对齐与缩进,酌情扣1-2分。
4) 未按时提交实验报告,酌情扣1-2分。
5) 实验报告中只要出现内容雷同,一律扣5分。
最后一次(第8次)实验课不考试,检查指定实验的完成情况,若未按时完成,则按0分处理。要求学生在第7次实验课之前完成实验大作业。如果学生较多,可以在最后两次实验课上检查学生的实验大作业。
实验大作业验收标准(占15%):
1)代码质量,包括代码风格(对齐与缩进、程序注释、变量名命名、函数名命名等)
2)代码规模(代码行数)
3)选题新颖程度(创新性或者亮点在哪里,是否添加了一些特殊的功能或者趣味性元素)、实现难度(是否使用了结构体、链表、文件、函数指针、指针数组、动态数组等)
4)现场验收回答问题的质量
实验报告检查标准(占10%):
1) 报告撰写的认真、规范和美观程度
2) 格式排版的规范程度(包括文字排版、图表和代码的格式,代码的格式包括对齐与缩进、程序注释、变量名命名、函数名命名等)
3) 解决问题的过程和方法是否真实可信
4) 分析总结是否到位,收获和体会是否真实可信
5) 流程图、模块划分图是否正确
实验报告模版与提交方式:
1) 实验报告模板见附件。
2) 提交C语言代码文件,如有多个文件,请打包提交。
3) 实验报告采用SPOC网上互评方式。
3. SSE随机抽题作业,占总成绩的25%
SSE刷题满分线是2500分,对应相对分25分,(刷题超过3000分按排名加1-3分),及格线是500分,对应相对分15分。提交截止时间为最后一次上课后的下一周周日。
SSE刷题加分项:
1)在习题市场出题代替SSE刷题,每审核通过1道题,则抵SSE刷题分100分。若机考成绩全部低于5分,则取消所有的出题加分。
2)参加课堂的随机小翻转,每参加1次可抵SSE刷题分100分。
3)每找到SSE上一道题目的错误,抵SSE刷题50分。
注:抵刷题分就是减免的刷题分(相当于降低其满分线),不参与超额刷题分的计算,仅参与及格线上下或者及格线与满分线之间的阶梯分(相对分)计算。
SSE刷题扣分项:
1)随堂测验不及格者,1次不及格就扣刷题分100分,缺考1次扣刷题分200分。
随堂测试目的和内容:教师随堂测验学生的自学情况,题型采用编程补全题、程序填空题、程序改错题、选择题、判断对错题、简答题的形式。随堂测试的题目从MOOC规定的自学内容(随堂测试、随堂讨论、周测验题、编程题)中选择。
4. 参加课堂大翻转,可以赢得附加分1-10分。
参与方式:在最后一次上课前,通过在MOOC上自学文件等内容并综合运用课程所学知识,并应用自顶向下、逐步求精的模块化设计思想,在课外完成一个与众不同、有创意的综合应用程序,在课上展示和答辩,以获得附加分。学生现场讲解并演示程序6分钟,2分钟学生提问。每个小组1-3人,如果参与报名的小组数多,就采取随机抽签的方式。
评分方式:全班同学现场投票和计票,每张选票最多投2个组(投多组者按废票处理),课后按票数排序,排名第一的小组可获得10分的附加分(小组其他成员的分数在此分数基础上乘以一定的系数),排在后面的小组根据票数的递减程度依次减1-3分。只要报名参加翻转,即使票数为0,也至少能得1分。
最后的大翻转可以小组组队完成。最多三人一个小组,要求分工明确,组长负责讲解和答辩,组员可以协助其演示程序。
二人一组的,组员的成绩由组长根据其贡献大小给分,系数最多不超过0.6。组长的系数为1.0。
三人一组的,组员的成绩由组长根据其贡献大小给分,一位组员的系数不超过0.5,另一位组员的系数不超过0.3。组长的系数为1.0。
参与翻转的每个组的分数由学生现场投票确定,按票数多少分别为2-10分,只要参与翻转、票数为0,也能得到1分。
每个小组组长和成员的最终得分由小组分数作为系数乘以其每个人的组内分数确定。例如,某二人小组得分8分,组长得分就是1.0*8=8分,组员的得分是0.6*8=4.8分,四舍五入取整后为5分。
本门课程的基本内容是面向零基础的学生。进阶内容是面向有一定编程基础或者有大学计算机基础的学生,但是进阶内容不做为课程的考试内容。
1. 面向读者的教材网站(https://book.sunner.cn)
该网站的服务对象是我们自编教材的读者,提供教材课件、例题源代码、教材勘误表等资源,便于学生浏览和下载后自学,读者也可利用该网站反馈教材使用意见和建议。
2. 作业在线测试系统(https://sse.hit.edu.cn/train)
哈工大的SPOC学习请使用学号和初始密码登录, 请第一时间修改初始密码。
3. 参考教材
1)苏小红,王宇颖,孙志岗,《C语言程序设计(第3版)》,高等教育出版社,2015年7月,购书网址:京东
2)苏小红,车万翔,王甜甜,《C语言程序设计学习指导(第3版)》,高等教育出版社,2015年8月,购书网址:京东
3)苏小红,孙志岗,陈惠鹏,《C语言大学实用教程(第4版)》,电子工业出版社,2017年1月,购书网址:亚马逊
4)苏小红,孙志岗等,《C语言大学实用教程学习指导(第3版)》,电子工业出版社,2012年6月,购书网址:亚马逊
5)苏小红等,《程序设计基础》,高等教育出版社,待出版
5.相关链接
爱课程国家精品资源共享课:https://www.icourses.cn/coursestatic/course_3153.html
相关MOOC课程:程序设计基础:https://www.icourse163.org/course/hit-56001#/info
带gcc编译器和gdb调试器的code::blocks集成开发环境的官网下载地址:https://www.codeblocks.org/downloads/26
(例如codeblocks-16.01mingw-setup.exe),安装注意事项见《C语言程序设计学习指导(第3版)》。
安装软件的完整步骤可参考:https://jingyan.baidu.com/article/b24f6c822756b886bfe5da90.html
Q:如何提问,能得到快速的解答?
A:
1)标题:撰写标题时,要注意把要问的问题的出处和核心词写出来,最好用【】标出来,比如【第1周编程题在线测试的第1题】求解。
2)内容:内容上要把你不懂的地方说出来,最好详细点,把自己尝试修改的过程也说一下。
3)附源代码:把源码贴到讨论区(不要使用图片,因为图片看不清,也不能拷贝),这样大家可以通过你贴出的源码帮你分析错在哪里。
4)附错误提示:把编译出错的提示也贴出来(一般是英文形式),这样大家不用拷贝粘贴和调试程序也能帮你分析出错原因了。
Q:常见的运行结果错误的原因有哪些?
A:程序提交后通常显示三类错误:格式错误、结果错误、运行超时。
对于格式错误,请检查你的程序的输入输出信息是否和题目要求的完全一致。
对于结果错误,请检查你的程序使用的算法和计算公式是否正确,如果涉及浮点运算,可以尝试将float换成double或者反之。
对于运行超时错误,请检查你的程序是否存在死循环,死循环通常由永真的循环控制条件或者while后面添加了不必要的分号引起。注意在本网站提交程序进行测试时,不要使用flush()函数清除缓冲区,输入字符串也不要使用fgets(),原因详见视频讲解 。
注意事项如下:
1)数据输入输出的格式没有严格按照题目的要求写,直接拷贝粘贴题目中给的格式字符串和提示信息,是最简单和不易出现格式错误的方法。
2)输入输出字符串中的字符大小写有错误,或者空格数量和位置与题目中的要求不一致,或者缺少换行等。
3)仔细审题,例如题目要求计算半圆的周长,就不要加上直径,更不要计算整个圆的周长。
4)如果只有几个测试用例通过,还有没有通过的测试用例,那么说明你没有考虑所有的可能性,甚至是非法输入的情况。
5)检查是否为英文输入,切记切换成英文状态再输入。一些同学误用了中文作为输入法,就会出现不能编译的问题,例如中文状态下输入的分号和英文状态下输入的分号是完全不同的,语句的末尾使用的分号一定要在英文状态下输入。
Q:如果无法正常观看视频,我该怎么办?
A:如果无法正常观看视频,请尝试进行如下操作:
1.确认你使用了支持视频播放的浏览器。
2.清除浏览器的浏览数据及缓存。
3.关闭硬件加速。请在浏览器的 设置 - 显示高级设置 中,将“使用硬件加速模式”(如果可用)一项取消勾选,并重新启动浏览器。
4.检查你的网速。你可以尝试在其他视频网站播放视频(如优酷、土豆等),如果你在其他网站仍无法观看视频,那么你的网络连接很可能有问题。你需要重新连接你的网络或者切换至网速更快的网络以实现流畅的视频播放。
Q:我想考二级,学完这个课程可以考吗?
A:二级考试题考查语言的语法细节较多,所以能否通过二级考试,要看你的应试水平如何。本课侧重于讲解程序设计的方法以及错误程序的排错方法,更关注实战能力,因此应该说本课程对学生的要求是高于二级考试的要求的。
Q:上机编写C语言程序使用什么软件好?
A:课程演示会使用Code::Blocks+gcc+gdb集成开发环境,但是你使用任何其他C语言开发工具也都可以。不过,我们推荐使用Code::Blocks,在教材网站(https://book.sunner.cn)上有软件下载的网址链接,《C语言程序设计学习指导(第3版)》上有关于如何使用这个软件的详细介绍,它是一个开源的跨平台的C/C++集成开发环境,它安装简单,比Visual C 6.0等其他集成开发环境更简单易学。
Q:使用codeblocks在sources中新建一个file,也就是不在原来默认的main.c里面写代码,那么应该如何调试才能使运行的时候直接运行新建的里面的程序呢?
A:给工程添加完新的文件后,移出旧的文件main.c再重新编译即可,移出文件的方法和添加的方法类似。
Q:为什么安装好软件后创建新项目的时候软件总是说:could not save project<invalid path> maybe the file is write-protected 呢?
A:codeblocks要求软件安装的目录最好不要带空格或汉字,不要按默认设置安装到program file目录下,卸载后再选择安装到根目录下试试。更多注意事项,参见高等教育出版社的《C语言程序设计学习指导(第3版)》
Q:请问为什么我在Code::Blocks里面点开Debug中的watch里面是空白的?
A:按照视频1.2讲的方法新建一个控制台应用程序,不要直接新建一个C文件,直接新建或者打开一个 C文件是无法使用调试功能的。
检查一下是不是将CB安装到默认的program files目录下了,CB不能安装到中文或者有空格的目录下,请卸载软件,重新安装到根目录下,再试试。
此外,全速运行程序时,是看不到watch窗口内的内容的,必须在单步运行的时候才能看到watch窗口内的内容。
Q:为什么我的程序编译不了?
A:可能是你安装了不带编译器和调试器的版本,重新安装带编译器和调试器的版本。免费开源的C 语言集成开发环境Code::Blocks+gcc+gdb的官方下载网址:https://www.codeblocks.org/downloads/26(目前最新版本是codeblocks-16.01mingw-setup.exe)。请下载带gcc编译器和gdb调试器的code::blocks(下载软件名中务必包含mingw-setup),否则程序无法编译。无法从官方下载软件的,也可以从百度云盘上下载:链接: https://pan.baidu.com/s/1dDnLNET 密码: joyh
C 语言集成开发环境code::blocks的安装和使用方法见教材《C语言程序设计学习指导(第3版)》
如果不想重装系统,可参考
安装软件的完整步骤可参考:https://jingyan.baidu.com/article/b24f6c822756b886bfe5da90.html
Q:为什么我的程序无法运行,显示cannot open output file bin\Debug\election.exe Permission denied.
A:可能是你的文件正在别的程序中使用,或者还有程序的副本正在执行(或者你上次运行没有关闭),因此不能写入election.exe,把副本关闭或者结束election.exe任务应该就能够纠正这个问题。另外,请检查一下你的IDE是不是是不是安装到C盘的默认目录下了,请将IDE安装到D盘,并将你的程序也保存到D盘,不要保存到C盘。
Q:为什么我的程序与网站上的程序运行结果中的小数点最后一位存在差异?
A: 这是因为网站的OJ使用的操作系统和编译器与我们自己使用的操作系统和编译器不一样,从而导致浮点运算的精度不一致。
此外,使用float和double定义变量得到的计算结果也可能在结果的最后一位小数上有所不同。