C语言是结构化程序设计语言中的优秀代表,也是我们学习其它程序设计语言的基础。在这门课程中,我们将会学到C语言程序的三种基本结构、模块化程序设计思想和实现手段以及C语言丰富的数据类型。通过这些知识的学习和编程实践,同学们可以掌握程序设计的基本方法,培养计算思维能力和利用计算机分析问题和解决问题的能力。多阅读代码、多上机实践,是学好C语言程序设计的主要方法。本期课程,我们在每一个主要章节都安排了在线编程作业,大家可以通过在线作业的练习,充分提高你们的编程能力。
本慕课课程依托陕西省精品资源共享课C语言程序设计,陕西省在线精品课程C语言程序设计。
为积极响应国家低碳环保政策, 2021年秋季学期开始,中国大学MOOC平台将取消纸质版的认证证书,仅提供电子版的认证证书服务,证书申请方式和流程不变。
电子版认证证书支持查询验证,可通过扫描证书上的二维码进行有效性查询,或者访问 https://www.icourse163.org/verify,通过证书编号进行查询。学生可在“个人中心-证书-查看证书”页面自行下载、打印电子版认证证书。
完成课程教学内容学习和考核,成绩达到课程考核标准的学生(每门课程的考核标准不同,详见课程内的评分标准),具备申请认证证书资格,可在证书申请开放期间(以申请页面显示的时间为准),完成在线付费申请。
认证证书申请注意事项:
1. 根据国家相关法律法规要求,认证证书申请时要求进行实名认证,请保证所提交的实名认证信息真实完整有效。
2. 完成实名认证并支付后,系统将自动生成并发送电子版认证证书。电子版认证证书生成后不支持退费。
本课程可以零基础学习,大学计算机基础或计算机导论等课程中的数制转换等内容有助于理解本课程的部分内容,但不是必须的。
第一章 C语言概述
0 课程导言
1.1 程序设计语言及分类
1.2 C程序设计语言入门
1.3 C程序的调试过程
CodeBlocks调试教程视频
第一章单元测验
第二章 数据类型与表达式
2.1 C语言数据类型
2.2 常量
2.3 变量
2.4 运算符与表达式
例题讲解
第二章单元测试
第三章 基本程序结构
3.1 算法与基本程序结构
3.2 顺序结构程序设计
3.3 选择结构程序设计
3.4 循环结构程序设计
例题讲解
第三章在线练习
第三章单元测试
第四章 函数
4.1 模块化程序设计与函数概述
4.2 函数的定义与调用
4.3 变量作用域
4.4 函数的嵌套与递归
第四章单元测试
第五章 数组
5.1 为什么使用数组
5.2 一维数组
5.3 二维数组
5.4 字符数组
习题讲解
第五章在线练习
第五章单元测试
第六章 结构体与共用体
6.1 引入结构体
6.2 结构体
6.3 共用体
6.4 枚举类型与自定义类型名
例题讲解
第六章单元测试
第七章 指针
7.1指针变量定义与初始化
7.2 指针变量引用
7.3 指针与数组
7.4 指针与结构体
7.5 指针与函数
例题讲解
第七章单元测试
第八章 文件
8.1 文件的概述与文件指针
8.2 文件的操作流程与顺序读写
8.3 文件格式化读写与随机读写
第八章单元测试
1.《C语言程序设计》,张亚玲等,北京:高等教育出版社,2019.4
![]()
2.《C语言入门经典(第4版)》,Ivor Horton著,杨浩(译),北京:清华大学出版社,2008.4
3. Code::Blocks集成开发环境官网下载地址:https://www.codeblocks.org/downloads/26,
程序调试教程可参考视频:https://www.icourse163.org/learn/XAUT-1002608025?tid=1206000225#/learn/content?type=detail&id=1210736003
1 学习C语言程序设计使用什么开发工具好?
答:实践是检验真理的标准。C语言的集成开发环境有很多,如Visual C++6.0、Code::Blocks、Dev-C++、GCC等。 需要说明的是,不同的系统编译规则有少量不同,比如Visual C++6.0是微软的产品,在标准C的基础上就有一些自己的特点,如,对循环控制变量的类型声明允许放在for语句中,而在GCC中就不允许。同学们在使用时需要多加注意,即在一个系统上编译通过的程序,在另一个系统上也许通不过或者运行结果有差异。
Code::Blocks集成开发环境官网下载地址:https://www.codeblocks.org/downloads/26,
程序调试教程可参考视频:https://www.icourse163.org/learn/XAUT-1002608025?tid=1206000225#/learn/content?type=detail&id=1210736003
2 如何学好程序设计?
答:学习程序设计是一门实践性很强的课程,建议同学们在学习程序设计过程中,认真学习、理解基本概念和语法规则,要多上机编程练习。在学习中,可以先阅读程序,理解编程步骤和编程思想;再模仿写程序、调试程序;再通过变更问题,对程序会做些修改;最后尝试自己独立编写程序。通过这一系列过程逐渐理解程序设计的思想,掌握程序设计的方法。
3 如果学习过程中遇到问题,如何能得到快速的解答?
答:如果学习过程中遇到任何问题,可以在爱课程平台的讨论区里的“老师答疑区”提问,课程开课期间,每天都有老师及时解答同学们的问题,帮助同学们答疑解惑,以顺利跟上课程进度。
4 学习C语言需要哪些基础知识?
答:在学习C语言之前,首先应该学好计算机基础。里面的很多概念对于C程序员都是非常重要的。如果你有足够的耐心,十足的毅力,应该再学习C语言之前学学汇编,这会让你对许多比较细腻的概念有清醒的认识。其次,需要把数学学好。学好了数学,利用C语言解决问题的方法就会更多。最后,学好英语也很重要,因为它有助于我们更好地阅读英文文档,学习C语言更高深的编程技巧。但与编程相关的英文词汇不是很多的,对英语不好的同学也不需要过于紧张。
5 C语言初学需要注意哪些问题?
答:首先,要注意程序的基本结构,程序开头的第一行为“#include stdio.h”, 这句话的意思是,在程序中如果用到了输入输出函数,需要首先在程序中包含文件名为“stdio.h”的标准输入输出的头文件。其次,每一个C语言程序必须要定义一个mian函数,它是程序运行的主函数体,函数中的代码要用“{”和“}”括起来。另外,还需要注意C语言程序的执行过程是编辑、编译、连接和运行,缺一不可。最后,要强调的是C语言的学习不是一步而成的,需要我们对知识的不懈追求和精益求精的精神。
6 C程序常见的语法错误有哪些?
答:(1)关键字拼写错误;(2)语句结束缺少“;”;(3)输入输出语句格式不对,如逗号分隔、双引号的位置;(4)标点符号是中文符号;(5)大括号、双引号不配对;(6)变量未定义或未初始化;(7)常用语句格式不对,如switch…case语句中case与常量之间有一空格,必要的break语句,if与else配对等;(8)函数使用前未声明。
7 C程序常见的运行错误有哪些?
答:(1)输入语句中普通变量缺少“&”;(2)数组下标越界;(3)指针为空。
8 C程序常见的逻辑错误有哪些?
答:(1)变量定义数据类型与输入输出的格式控制字符串不一致;(2)将“==”错误地写成“=”;(3)复合语句未加大括号;(4)if语句或循环语句中逻辑表达式或关系表达式书写错误,如0≤x≤9,应写成x>=0&&x<=9;(5)while循环或for循环语句后面多写“;”。
9 新手学习C语言有哪些误区?
答:1)不能清晰理解"=="运算以及优先级和结合性的含义。
在判断i,j,k三个变量是否相等时往往会轻率地写出"i == j == k "这样的表达式并误以为三个变量的值相等时,这个表达式的值为1。然而,这个是错误的。 在表达式"i== j == k "中,这两个==符号的优先级是相同的。而"=="符号的结合性是从左到右,所以表达式"i== j == k "实际等价于"(i == j)== k"。这个式子的含义是判断(i == j)这个式子的值与k的值是否相等。只要k的值为1,i和j的值只要相同,这个表达式的值才为1 。而对于i,j,k都为2的时候,我们反而会得到表达式不成立的结果。
2)对于自然语言和程序语言的理解不一致。
看这个例子:"当一个整数不等于5或者不等于6时…….."。这句话按照正常的思维理解,是没有问题的,但是我们把这句话转换为程序语言,就会出现问题了。如果我们写成"if(i != 5 || i != 6)"?那就错了!错误在于"i != 5 || i != 6 "这个表达式的值是恒为1的。因为i的值不可能等于5的同时也等于6。所以,这个表达式为假是不可能的。实际上,用准确的语言来描述这个问题是:当这个整数不等于5且不等于6时,程序输出1,否则输出0。
3)关于将自然语言翻译成代码时需要注意。
比如要翻译句子:"字符c的值等于''、'\n'或'\t'。有的同学将其翻译为"c == '' || '\n' || '\t'"。然而,这两种描述并不等价。C语言是一种人与机器交流的语言,在某种程度上,C语言更接近于数学语言。C语言中的每个变量都有值,C语言就是通过这些值来实现逻辑表达的。在上面的例子中,字符c的值是与''、'\n'或'\t'三者之一相等,也就是说,c == ''、c=='\n'、c == '\t'这三个表达式有且只有一个为1。因此,上述语句的C代码可以写成:c == '' || c == '\n' || c == '\t'。这种表达的优点是,按照顺序执行这三个表达式的,若其中有一个为1,就不需要计算其余表达式,直接得到表达式的值。
10 scanf()函数的几点注意问题
答:1)输入数据的方式与要求不符
C语言规定:如果在“格式控制”字符串中除了格式说明以外还有其它字符则在输入数据时应输入与这些字符相同的字符。
2)输入数据中的空格和回车
Scanf()函数,在用“%c”格式声明输入字符时,有不同于其他格式类型需注意的地方。字符格式类型中,空格符、转义字符都作为有效字符;而对于数值型数据,空格符、回车键、Tab键或非法数值字符均认为数值字符输入的终止符。
3)C语言中,单引号和双引号含义迥异。在某些情况下如果把两者弄混,编译器并不会检测报错,从而在运行时会产生难以预料的结果。
4)语法“陷阱”
要理解一个C程序,仅仅理解组成该程序的符号是不够的。初学者还必须理解这些符号是如何组成表达式、语句和程序的,有时候这些定义和直觉相悖,容易引起混淆。
5)语义“陷阱”
比如整数溢出,求值顺序等问题。
11 学习编程的必须是成年人?
答: 学习编程,没有过早也没有过晚。只要你自己喜欢,什么时候都可以开始学。举个例子:在Livecoding.tv上,一个叫Harrison(哈里森)的小男孩应该是目前平台上年纪最小的直播者了。小哈里森是一个从小就迷上编程的孩子。2015年在livecoding.tv上直播他自己的第一个用Java开发的游戏Bluef时,他才11岁。现在,小哈里森的视频浏览量已超过了12800多人。这个成绩对一个只有11岁的孩子来说,已经很了不起了。顺便一提,今年早些时候,Masako Wakamiya,这位82岁的日本居民开始学习Swift编程语言,并已经发布了她的第一个应用程序。
12 女孩子不擅长学习编程吗?
答: 编程的学习对于男女是一样的,只要你感兴趣,是男是女没区别。不要以为电影中特别高大上的电脑高手是男生的专利。大家都记得世界上第一台计算机ENIAC,但很少人记得它背后的6位女性程序员。正是这个由女性组成的团队,完成了世界上第一台计算的编译和部署。而世界第一位程序员就是一位女性,名叫阿达·洛芙莱斯(Ada Lovelace)。所以,凭借女生思维特有的细腻可以帮助我们在编程的过程中更好的编译程序。
13 学会一门语言就有没必要学习其他的?
答: 当你选择了一门语言作为自己当前主要学习的对象时,认真学好它并且成为该种语言的高手。此时你才完成了程序员的第一步。这时需要你不断学习新的技能和方法,一种语言或许已经不能满足你日渐提升的能力了。如果你认为“我已经学的很好了,这门语言足够我使用一辈子了”,那你就错了。当然,各种语言都有相似的地方,对一门语言学得很精通后再去看别的语言就会觉得容易多了!想要学好编程,首先自己在学习之前要有充足的信心,只要有信心,去努力,找好方法,学会编程并不是难事,要循序渐进,多写代码。
14 学习编程的人的IQ都要很高吗?
答:学习编程的好与坏最重要在于你的兴趣,它与生物学因素没有关系。无论你的IQ是160还是90,这和你学习编程没有关系。其实它只是一门语言,就像我们学习英语是一样的,理论与实践都很重要。不要介意一次又一次的失败,从错误中学习,这是作为程序员要明白的基本道理。当然,学习任何一门技术与学科要想精益求精,都需要有天赋的因素。但是达到入门的要求并不难,任何懂得如何沟通的人都可以学习编程。