We may earn an affiliate commission when you visit our partners.
Course image
Ge Li 李戈, Ph.D.

如果说学习过《计算导论与C语言基础》,你已经迈入了C语言的殿堂,那么《C程序设计进阶》将帮助你更上一层楼,理解“结构化程序设计的基本思想”,掌握“C程序设计的基本技巧”,养成“良好的编程习惯和编程风格”,编写出“真正具有生命力的计算机程序”。完成这门课的学习,你将能解释C程序设计语言的基本概念与知识,并且使用C语言编写计算机程序解决生活工作中的实际问题。

Enroll now

What's inside

Syllabus

欢迎加入《C程序设计进阶》
在学习完“理性认识C程序”之后,我们希望同学们能够自己动手编写一些简单的C程序了!如果你还没有具备这个能力,一个可能的原因是因为你还没有进行“足够的训练”。因为,学习一门程序语言,需要你获得的有两样东西——“知识”和“技巧”。“知识”可以通过讲授传递,但“技巧”却只能通过训练获得。因此,我们鼓励同学们在“理性认识C程序”这个迭代周期中,多多进行简单的编程练习,以便获得“技巧”。(注意:我们特别鼓励同学们多多进行“简单”的编程练习,因为,所有复杂的问题,都是简单问题的组合。我们的教学实践表明:多做简单练习,不但可以提升学习者的学习信心,也非常有助于编程技巧的提升!)在完成“理性认识C程序”部分的学习之后,我们将开始新的迭代周期——“结构化的程序”。在这个部分,我们将讲授一种基本的、用于将程序组织成“模块”的语言成分——函数。函数实际上是C程序的基本组织单位,是C程序设计中的重要组成部分。在这个迭代周期中,同学们不仅要学习函数的定义方式、调用方式,还要学习一种重要的函数使用方法——递归。我们将讲授递归调用的基本机理,并讲授“利用递归解决问题的技巧”。这部分,讲本课程C程序设计部分的一个难点!不过,请同学们不要担心,我们将力图通过最简明的讲解方式,帮助大家掌握“递归”的使用方法,力争“化困难于无形”。我们一起努力吧!PS:我们这门课程一直处在不断地建设与优化当中,吸取了很多以往课程的经典视频,所以如果你看到视频中出现了不同课程的名字,也不要惊讶哦,因为你正在集百家所长。
Read more
C程序中的函数
本次课,我们讲授“函数”的基本概念、定义方式、调用方式、参数传递方式等基本知识。其间,我们还将讨论“变量的作用域”的问题。PS:我们这门课程一直处在不断地建设与优化当中,吸取了很多以往课程的经典视频,所以如果你看到视频中出现了不同课程的名字,也不要惊讶哦,因为你正在集百家所长:)
函数的递归
本次课是C程序设计部分的一个难点。但,请不要担心,我们将按照“由简单到复杂”的方式进行讲解。我们先为大家讲解“递归调用”的执行过程,以便让大家看到“其实,递归调用与普通函数调用没什么不同”的道理,在此基础上,再去详细分解递归调用的过程,以印证我们学到的知识。 在此基础上,我们将通过几个典型的递归函数设计范例,向大家讲授递归函数的作用和使用技巧。 需要强调的是,如果在这个部分大家感觉到困难,请不要气馁:)因为,根据我们的教学经验,80%以上的同学都会感觉到同样的困难。当你也感觉困难时,可以先耐心听完我们的讲解,然后再通过练习慢慢体会。只要稍加练习,这个困难的感觉就会逐渐消失,因为,到那时,你已经对递归越来越熟悉了:)
指针(一)
本次课我们为大家讲解“指针”“指针变量”“指向变量的指针”等名词的基本含义。在此,需要特别提示大家:请大家务必明确区分上述的基本概念,以便在后面的课程中准确的使用它们。 同时,我们还将向大家阐述一个重要的理解——数组名 与 指向数组首元素的指针 之间的关系,也请大家务必反复印证,以便日后轻松使用:)
指针(二)
这次课是上次课的延续,我们将为大家讲解“指针与字符串”之间的关系,“二维数组名的含义”(这也是一个小难点,不过,只要大家谨记上次课中的结论,一切将会变得简单:)),以及“指针与函数参数”之间的关系(这种情况很常见哦:))。
指针(三)
这次课我们将紧跟上一节的脚步,继续为大家讲解“指针做函数参数”及“指针做函数返回值”的两种情况,到此为止,你应该对于指针在C程序设计里的应用有一个比较全面的了解啦,不妨在本次课末尾画个思维导图考考自己,是否弄清楚了这个重要的概念。
结构体与链表
这次课,我们将为大家讲解“结构体”的基本概念、定义方式和使用方式,结构体的使用将为某些程序的编写带来极大的便利:)在此基础上,我们还将介绍“链表”的基本概念和创建方法。需要说明的是,在我们的课程上,链表将不作为一个重点练习的内容,因为,在后续的课程中,它将被反复大量的讨论:)
最后一次课
这是C程序设计课程的最后一次课,也是一次“承前启后”的课程。我们将介绍“面向对象”编程方法的基础思想。我们希望通过这个简短的介绍能够让大家对“面向对象”的软件设计方法有一个最初步的了解,以便顺利步入后续的课程:)
期末考试,课程结语
恭喜你顺利完成了所有教学模块的学习,来到了我们的终极挑战-期末考试!不要紧张,考试中所涉及的内容都是为了帮助你自我检测是否真正掌握了C程序的相关知识,达到了你的目标,所以只要认真复习所学的模块,我想你一定没有问题的!加油吧,我在这趟《程序设计与算法》学习旅途的下一站等你哦!

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Provides strong foundation for learners to incrementally build their C programming skills
Taught by seasoned faculty who present an authoritative approach to concepts and topics
Uses a proven and respected pedagogy to teach C programming concepts
Lacks hands-on labs and interactive materials for practice
Requires extensive background knowledge in programming
Provides an overview of C programming rather than a comprehensive study of its aspects

Save this course

Save C程序设计进阶 to your list so you can find it easily later:
Save

Reviews summary

Intro to c programming concepts

This course introduces the basics of C programming, including functions, recursion, pointers, structures, and linked lists. There is also a brief introduction to object-oriented programming. The course features a combination of pre-recorded videos and practice exercises.
The course compiler may not be reliable.
"本来四分,编译器减两分。"

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in C程序设计进阶 with these activities:
與同學組成學習小組
與同學組成學習小組可以提供一個支持性的環境,讓你可以討論概念、互相幫助解決問題。
Show steps
  • 找到志同道合的同學
  • 定期見面並討論課程材料
  • 共同完成練習和作業
跟隨「基礎C語言」的官方教程
官方教程將逐步指導你了解 C 語言的基本概念和語法,加深你對 C 語言的理解。
Show steps
  • 瀏覽「基礎C語言」官方網站
  • 開始學習第一個章節
  • 完成章節練習和測驗
解 C 語言編程題目
練習解決 C 語言編程題目有助於強化你的編程技能並加深你對語言的理解。
Show steps
  • 尋找 C 語言編程題目資源
  • 選擇一個難度適中的題目
  • 嘗試編寫解決方案
  • 檢查你的解決方案是否有誤
Three other activities
Expand to see all activities and additional details
Show all six activities
編寫關於 C 語言的博文或教學文章
撰寫關於 C 語言的內容將迫使你回顧並加深你對語言的理解,並幫助你以新的方式思考這些概念。
Show steps
  • 選擇一個你熟悉且想要深入探討的主題
  • 研究你的主題並收集資訊
  • 撰寫你的文章或博文,確保內容清晰且引人入勝
  • 編輯和校對你的文章或博文
參加 C 語言編程比賽
參加 C 語言編程比賽可以挑戰你的技能,並讓你與其他 C 語言愛好者競爭。
Show steps
  • 尋找適合你技能水平的比賽
  • 練習和準備比賽
  • 在比賽中盡力發揮
參與 C 語言開源專案
參與 C 語言開源專案可讓你接觸到真實世界的 C 語言應用,並讓你為開源社群做出貢獻。
Show steps
  • 尋找你感興趣的開源專案
  • 閱讀專案文件並了解其程式碼庫
  • 提出問題或請求加入專案
  • 開始為專案做出貢獻

Career center

Learners who complete C程序设计进阶 will develop knowledge and skills that may be useful to these careers:
Software Developer
Software Developers design, develop, test, and maintain computer software systems, including applications, operating systems, and middleware. This course may be useful for aspiring Software Developers, as it provides a solid foundation in the C programming language, which is widely used in software development. The course also covers concepts such as data structures, algorithms, and software design patterns, which are essential for understanding the design and implementation of software systems.
Computer Software Engineer
Computer Software Engineers design, develop, test, and maintain computer software systems, including operating systems, applications, and middleware. This course may be useful for aspiring Computer Software Engineers, as it provides a solid foundation in the C programming language, which is widely used in software development. The course also covers concepts such as data structures, algorithms, and software design patterns, which are essential for understanding the design and implementation of software systems.
Game Programmer
Game Programmers design, develop, and maintain video games. This course may be useful for aspiring Game Programmers, as it provides a solid foundation in the C programming language, which is commonly used in game development. The course also covers concepts such as data structures, algorithms, and graphics programming, which are essential for understanding the design and implementation of video games.
Artificial Intelligence Engineer
Artificial Intelligence Engineers design, develop, and maintain artificial intelligence systems, such as machine learning algorithms and natural language processing systems. This course may be useful for aspiring Artificial Intelligence Engineers, as it provides a solid foundation in the C programming language, which is commonly used in artificial intelligence development. The course also covers concepts such as data structures, algorithms, and machine learning, which are essential for understanding the design and implementation of artificial intelligence systems.
Computer Vision Engineer
Computer Vision Engineers design, develop, and maintain computer vision systems, such as image recognition and object detection systems. This course may be useful for aspiring Computer Vision Engineers, as it provides a solid foundation in the C programming language, which is commonly used in computer vision development. The course also covers concepts such as data structures, algorithms, and image processing, which are essential for understanding the design and implementation of computer vision systems.
Embedded Systems Engineer
Embedded Systems Engineers design, develop, and maintain embedded systems, which are computer systems that are embedded in larger systems, such as cars, airplanes, and medical devices. This course may be useful for aspiring Embedded Systems Engineers, as it provides a solid foundation in the C programming language, which is commonly used in embedded systems development. The course also covers concepts such as data structures, algorithms, and real-time systems, which are essential for understanding the design and implementation of embedded systems.
Robotics Engineer
Robotics Engineers design, develop, and maintain robots, such as industrial robots and autonomous vehicles. This course may be useful for aspiring Robotics Engineers, as it provides a solid foundation in the C programming language, which is commonly used in robotics development. The course also covers concepts such as data structures, algorithms, and control systems, which are essential for understanding the design and implementation of robots.
Mobile Application Developer
Mobile Application Developers design, develop, and maintain mobile applications for smartphones and tablets. This course may be useful for aspiring Mobile Application Developers, as it provides a solid foundation in the C programming language, which is commonly used in mobile application development. The course also covers concepts such as data structures, algorithms, and mobile operating systems, which are essential for understanding the design and implementation of mobile applications.
Systems Analyst
Systems Analysts design, develop, and implement computer systems, including hardware, software, and networks. This course may be useful for aspiring Systems Analysts, as it provides a solid foundation in the C programming language, which is commonly used in systems development. The course also covers concepts such as data structures, algorithms, and operating systems, which are essential for understanding the design and implementation of computer systems.
Web Developer
Web Developers design and develop websites and web applications. This course may be useful for aspiring Web Developers, as it provides a solid foundation in the C programming language, which is commonly used in web development. The course also covers concepts such as data structures, algorithms, and web technologies, which are essential for understanding the design and implementation of websites and web applications.
Computer Graphics Programmer
Computer Graphics Programmers design, develop, and maintain computer graphics systems, such as 3D modeling and animation systems. This course may be useful for aspiring Computer Graphics Programmers, as it provides a solid foundation in the C programming language, which is commonly used in computer graphics development. The course also covers concepts such as data structures, algorithms, and graphics programming, which are essential for understanding the design and implementation of computer graphics systems.
Information Security Analyst
Information Security Analysts plan and implement security measures to protect an organization's computer systems and networks from unauthorized access, use, disclosure, disruption, modification, or destruction. This course may be useful for aspiring Information Security Analysts, as it provides a solid foundation in the C programming language, which is commonly used in security applications. The course also covers concepts such as cryptography, network security, and operating systems, which are essential for understanding the design and implementation of security systems.
Data Scientist
Data Scientists use scientific methods, processes, algorithms, and systems to extract knowledge and insights from data in various forms, both structured and unstructured. This course may be useful for aspiring Data Scientists, as it provides a solid foundation in the C programming language, which is commonly used in data science and machine learning applications. The course also covers concepts such as data structures, algorithms, and statistical analysis, which are essential for understanding and working with data.
Database Administrator
Database Administrators design, implement, and maintain database systems, including database servers, storage devices, and backup systems. This course may be useful for aspiring Database Administrators, as it provides a solid foundation in the C programming language, which is commonly used in database management systems. The course also covers concepts such as data structures, algorithms, and operating systems, which are essential for understanding the design and implementation of database systems.
Computer Hardware Engineer
Computer Hardware Engineers design, develop, test, and maintain computer hardware systems, including processors, circuit boards, memory devices, and other electronic components. This course may be useful for aspiring Computer Hardware Engineers, as it provides a solid foundation in the C programming language, which is commonly used in embedded systems and hardware design. The course also covers concepts such as data structures, algorithms, and operating systems, which are essential for understanding the behavior of computer hardware.

Reading list

We've selected 14 books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in C程序设计进阶.
C语言的经典著作,由C语言之父Dennis Ritchie参与编写,权威性高,适合作为C语言进阶学习的参考书。
讲解C语言基础知识和高级特性,通过大量示例和练习帮助读者理解C语言,适合作为C语言入门教科书。
讲解编程的基本原理和通用技术,虽然不是专门针对C语言,但对C语言编程也有启发。
讲解数据结构和算法的基本原理,使用C语言实现,适合作为数据结构和算法入门教科书。
讲解UNIX环境下的高级编程技巧,深入剖析UNIX内核和系统调用,适合对UNIX编程感兴趣的读者学习。
讲解C语言中常见的陷阱和错误,帮助读者避免在编程中遇到这些问题。
讲解操作系统基本原理,虽然不是专门针对C语言,但对C语言编程也有帮助。
讲解算法和数据结构的基本原理,虽然不是专门针对C语言,但对C语言编程也有帮助。
讲解C语言最新标准(C11和C17)特性,适合对C语言标准演进感兴趣的读者学习。
讲解计算机系统基本原理,虽然不是专门针对C语言,但对C语言编程也有帮助。

Share

Help others find this course page by sharing it with your friends and followers:
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2024 OpenCourser