C 语言专题
记录 C 语言相关教程、文章、学习方法的目录
作者:蒋志成 zhicheng_jiang@qq.com
C 语言学习的建议:选择一本入门书籍,搭建适合自己的开发环境,多写代码多做练习,掌握程序设计的基本思想。
学习目标
- 学习程序设计的基本方法
- 熟悉各种数据类型、对应的操作方法和运算符号
- 熟悉变量的概念和使用方法
- 输入输出,ASCII 编码
- 控制流:表达式、语句、条件分支、循环、作用域等
- 函数:函数的声明、定义、参数列表、返回值
- 数组、字符串、结构体等复合结构
- 不同数据类型之间的转换
- 分析实际问题并设计程序给出解决方案
参考书籍
教材列表,按照难度排序:
- 明解 C 语言 (不要用这本书学指针)
- C Primer (Plus)
- C 程序设计语言 K&R
- C 和指针
- C 专家编程
- C 陷阱与缺陷
我对《明解 C 语言》的评价: 这是一本对新手友好的 C 语言入门书籍,很适合给 0 基础的同学看。但不要用这本书学指针。
我对《C 程序设计语言 K&R》的评价:经典著作,不建议新手看,适合给有 C 语言基础的人看。书里面对 C 语言各方各面都给出了详细的解释,其中的练习题很多和标准库有关,难度有点大。如果你以后想从事 C/C++编程可以看看,否则不建议看。
【视频】狄泰软件学院唐佐林 c/c++课程体系之零基础 C 语言入门课程
https://www.bilibili.com/video/BV1F4411275J
我对唐佐林课程的评价:如果你想深入系统的学习 C 语言、并且在上面投入大量时间,唐佐林的视频课程是非常有价值的。他对概念的理解非常透彻,讲课的内容深入浅出、准确到位,可以达到工业级标准。课程的体系结构优秀,覆盖 95%常用知识点,包括一些复杂的概念,例如:指针数组、二维数组、数据类型与变量、程序在内存中的分布。作为鸿蒙操作系统的战略合作伙伴、嵌入式人工智能专家,老师非常注重基础内容的教学。这个视频是一个知识点一个知识点过关的,所以你还需要很多额外的编程训练才能把它学好。
开发环境
Linux 平台开发环境搭建
在终端输入命令安装软件
# 常用软件:编译器、版本控制系统、vim 编辑器
sudo apt install build-essential git vim
# C语言开发手册
sudo apt-get install manpages-dev glibc-doc manpages-posix-dev manpages-posix
2
3
4
选择一个合适的代码编辑器,可以在应用商店下载或去软件官网下载 Linux deb 版本的安装包。
图形界面编辑器 (推荐):vscode + C 语言插件
终端界面编辑器 (不适合新手):vim emacs
在编辑器中新建一个 C 语言文件,写 Hello World 程序,并编译运行测试效果。
Linux C 语言 IDE
对于 0 基础的新手,使用一款强大的 IDE(集成开发环境)有助于他们快速入门程序设计。因为他们对语言的语法规则还不了解,所以需要实时的代码分析告诉他们哪些地方有问题。他们发现问题后就能立刻改正,无需等到编译阶段,这能给他们带来很大的帮助,极大提高开发效率。
我推荐 QtCreator,它是 Linux 免费的 C/C++ IDE。
练习题
C 语言 50 道练习题 (总体算是基础题,但有些题目比较难)
PAT (Basic Level) Practice (中文) (在线做题,总体算是基础题,但有些题目比较难)
一些简单的练习题,适合给新手做
- 输入三个数字 求和
- 输入一个 4 位整数,分别输出个位、十位、百位、千位的数字
- 打印乘法 9*9 口诀
- 用二分法求一个正数的算术平方根
- 已知直角三角形的两个直角边长度,求斜边长度
- 打印字符*排列出的金字塔
- 把小写字母的单词转换成大写字母
- 解一元二次方程
- 字符串转换为整数
- 整数转换为字符串
- 求斐波那契数列
- 打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153 是一个"水仙花数",因为 153=1 的三次方+ 5 的三次方+ 3 的三次方。
- 判断 101 到 200 之间的素数
- 将一个正整数分解质因数
- 输入一组数,求它们的平均数
- 输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
- 一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如 6=1 + 2 + 3。编程找出 1000 以内的所有完数。
- 输入两个正整数 m 和 n,求其最大公约数和最小公倍数。
- 一球从 100 米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第 10 次落地时,共经过多少米?第 10 次反弹多高?
- 求 1+2!+3!+...+20!的和。
- 比较两个字符串是否相等
- 冒泡排序
- 字符串翻转
- 二进制与十进制相互转换