C语言入门书籍推荐
05年上大一的时候开始学C语言,当时用的教材是谭浩强版的《C语言程序设计》,[狗头],这本书真是应试教育的典范,填鸭式的内容,夹杂着各种错误,本该重点描述的地方浅尝辄止,各种吐槽点……
工作这么多年,到目前为止读了不少C相关的书籍。在走了很多弯路以后,个人认为一个正确的C语言的学习的路径应该为,
在学习编程语言之前,建议先了解什么是计算机,可以观看《Crash Course Computer Science》「链接」;安装一个linux系统,现在已经越来越方便了,比如参考之前的文章,可以在win11上安装wsl2和ubuntu,学习一些linux的基础命令;了解操作系统的基本原理,什么是进程、线程,编译、链接的基本原理,应用程序是如何运行的;学习gcc,gdb的基本使用命令(初期最好不要使用集成开发环境,例如visual studio,clion等强大的IDE去编写程序,建议直接命令行),结合预编译、编译、汇编、链接等指令去更深入的了解程序运行的原理,利用gdb去调试代码;学习一门基础语言,如果是第一门编程语言,那肯定是C,它应用广泛,操作系统(系统编程)、驱动、编译器开发、网络编程(socket)、音视频、游戏、GUI(部分组件)、嵌入式等等都是它的擅长领域,在编程语言中一直排名前3。它足够经典及精炼,执行效率高,占用内存少,可以“直接”和计算机硬件打交道,能更深一步的了解计算机的软硬件运行原理;学习cmake的基础语法及命令,因为目前大部分的开源C/C++代码都支持cmake编译;在掌握了一门基础语言后,学习对应的数据结构、算法、设计模式等。在这个阶段多去读一些开源的优秀源码,从小项目到大项目,学以致用,去学习优秀的大牛们是如何设计软件,如何利用简单的c语言去编写出优雅的代码;最后,在自己感兴趣的特定领域,例如网络编程,去学习一些已有的广泛使用的第三方库的使用。然后,去写一些现实中实际可以用的程序;下面是我认为比较好的一些C语言书籍的推荐:
1.C程序设计语言
该书由计算机科学家Brian Kernighan和C语言之父Dennis Ritchie合著,是第一部介绍C语言编程方法的书籍。它因作者名字的缩写被简称为K&R;或是因封面颜色,也被称为白皮书。在C语言的发展和普及过程中起到了非常重要的作用,被视为是C语言的业界标准规范,而且至今仍然广泛使用。它被公认为计算机技术著作的典范,以清晰简洁的文字讲述而著称。书中用"hello world"为实例开始讲解程序设计,成为程序设计语言图书的传统。
2.C语言程序设计:现代方法(第2版•修订版)
相比于K&R,这本书更贴近于实际的应用,也更“现代”,适合
3.深入理解计算机系统
当你有一定的编程基础后,建议开始读《深入理解计算机系统》这本书,多读几遍,这本书“很硬”,每次读完的感受应该都不同。本书从程序员的视角详细阐述计算机系统的本质概念,并展示这些概念如何实实在在地影响应用程序的正确性、性能和实用性。全书共12章,主要内容包括信息的表示和处理、程序的机器级表示、处理器体系结构、优化程序性能、存储器层次结构、链接、异常控制流、虚拟存储器、系统级I/O、网络编程、并发编程等。书中提供大量的例子和练习,并给出部分答案,有助于读者加深对正文所述概念和知识的理解。
本书的最大优点是为程序员描述计算机系统的实现细节,帮助其在大脑中构造一个层次型的计算机系统,从最底层的数据在内存中的表示到流水线指令的构成,到虚拟存储器,到编译系统,到动态加载库,到最后的用户态应用。通过掌握程序是如何映射到系统上,以及程序是如何执行的,读者能够更好地理解程序的行为为什么是这样的,以及效率低下是如何造成的。
4.Modern cmake for c++
如下是kitware官网的介绍,cmake现在确实已经成为了c/c++软件系统的常用构建工具,
CMake: A Powerful Software Build System CMake is the de-facto standard for building C++ code, with over 2 million downloads a month. It’s a powerful, comprehensive solution for managing the software build process. Get everything you need to successfully leverage CMake by visiting our resources section.
cmake经过多年的发展,已经变得非常复杂。如果光读官网的文档,应该很少有人能读的下去。目前关于cmake的书籍很少,下面这本书是新出的,对cmake的方方面面都做了介绍,非常适合cmake的新人,如果你想深入了解cmake的构建系统,建议阅读本书,github有本书的翻译版本,地址为https://github.com/xiaoweiChen/Modern-CMake-for-Cpp,但是还是建议大家读英文原版。
当掌握了C语言本身后,如果你是从事linux/unix相关领域 软件的开发,我建议你一定要读下面的两本书(应该是3本,因为第一本是上下两册),虽然都很厚,但是如果认真读完,融会贯通,收获会非常大 。建议先读第一本《Linux/UNIX系统编程手册》,如果有精力可以再精读《UNIX环境高级编程》,两本书可以互补。
5.Linux/UNIX系统编程手册
本书是介绍linux与unix编程接口的权威著作,主要讲解了高效读写文件,对信号、时钟和定时器的运用,创建进程、执行程序,编写安全的应用程序,运用posix线程技术编写多线程程序,创建和使用共享库,运用管道、消息队列、共享内存和信号量技术来进行进程间通信,以及运用套接字api编写网络应用等内容。 在汇聚大批 linux专有特性(epoll、inotify、/proc)的同时,还特意强化了对unix标准(posix、sus)的论述,彻底达到了“鱼与熊掌,二者得兼”的效果,这也堪称本书的最大亮点。
6.UNIX环境高级编程
很多人都知道APUE这本书,在本书第1版出版后的十几年中,UNIX行业已经有了巨大的变化,特别是影响UNIX编程接口的有关标准变化很大。本书在保持了前一版风格的基础上,根据最新的标准对内容进行了修订和增补,反映了最新的技术发展。书中除了介绍UNIX文件和目录、标准I/O库、系统数据文件和信息、进程环境、进程控制、进程关系、信号、线程、线程控制、守护进程、各种I/O、进程间通信、网络IPC、伪终端等方面的内容,还在此基础上介绍了多个应用示例,包括如何创建数据库函数库以及如何与网络打印机通信等。
7.TCP/IP详解 卷1:协议
如果是从事网络编程 的相关领域,建议先读《TCP/IP详解 卷1:协议》,
本书是一本完整而详细的TCP/IP协议指南。描述了属于每一层的各个协议以及它们如何在不同操作系统中运行。作者W.Richard Stevens是大牛,书中对各层协议进行了详解,同时结合tcpdump的抓包结果对协议进行了深入的分析。
8.UNIX网络编程第1卷:套接口API(第3版)
本书主要结合TCP/IP协议介绍unix socket 相关api,本书第1、2版由Richard Stevens编写,第3版,由世界著名网络专家Bill Fenner和Andrew M. Rudoff执笔,根据近几年网络技术的发展,对上一版进行全面修订,增添了IPv6的更新过的信息、SCTP协议和密钥管理套接口的内容,删除了X/Open传输接口的内容。
c语言期末考试试题及答案,分享几个实用搜题和学习工具
作为当代大学生,我们常常面临着繁重的学业压力和众多的学习任务。在这个信息爆炸的时代,如何高效地进行搜题和学习成了我们迫切需要解决的问题。幸运的是,随着科技的不断进步,我们拥有了许多方便、实用的日常搜题和学习软件。
1.彩虹搜题
这是一个公众号
解题步骤详细解析,帮助你理解问题本质。其他考试领域也能找到答案。
下方附上一些测试的试题及答案
1、下列属于资本结构决策的方法有()
A.啄序理论 B.市场择时理论 C.资本成本比较法 D.动态权衡理论 E.每股利润分析法
答案:CE
2、硫化氢是一种有毒的气体,生产现场规定每立方米空气中含量不得超过()mg
A.10 B.20 C.1 D.5
答案:A
3、各级信息运维部门负责本单位系统的信息安全管理,应对系统的()进行安全管控
A.账号 B.密码 C.数据 D.人员
答案:ABCD
4、我国新版《中华人民共和国消防法》实行于()
A.1998年9月1日 B.1999年9月1日 C.2009年9月1日
答案:ABC
5、我国阿司匹林-级预防的使用严重不足,高危人群中阿司匹林的使用率仅为()
A.4、09% B.14、09% C.24、09% D.34、09% E.以上都不是
答案:B
6、题号:533 难度:中 第1章将十进制数327.25转换成十六进制数()
A.741.25 B.147.4 C.987.4 D.789
答案:A
7、《固定式压力容器安全技术监察规程》规定,压力容器安全状况等级为1、2级的,一般每()检验一次
A.3年 B.3-6年 C.5年 D.6年 此题为多项选择题。
答案:6年
8、孕妇以哪种卧位为佳()
A.仰卧 B.俯卧 C.左侧卧位 D.右侧卧位 E.自我感觉舒适
答案:C
9、抛八字锚时,当两锚链夹角为__,则两锚距恰好等于链长()
A.30° B.45° C.60° D.90°
答案:C
10、注意用氧安全,切实做好“四防”,即防震、、防热、防油()
A.防电 B.防盗 C.防火 D.防漏气
答案:C
11、值班期间,值班人员应坚守工作岗位,不得从事与值班工作无关的活动,必须保持运行值班环境()
A.安静 B.自由进出 C.整齐 D.清洁
答案:ACD
12、一台新的熔化焊机在装配好出厂前要通过规定项目的试验,以下不属于该实验的是()
A.抗压试验 B.空载试验 C.短路试验
答案:A
13、严重挤压伤引起肾功能衰竭,其肾功能衰因属于()
A.肾前性 B.肾后性 C.肾性 D.肾前性及肾性 E.肾性及肾后性
答案:C
14、材料根据其导电能力的强弱可分为()
A.导体 B.绝缘体 C.半导体 D.超导体
答案:ABC
15、一般而言,PLCI/O点数要冗余10%()
是 否
答案:是
2.石墨文档
石墨文档(Shimo Docs)是一款强大的在线文档协作工具。它提供了多人实时协作、版本控制、评论和批注等功能,方便学生在学习中进行文档编写、合作项目和报告制作。
学生可以使用石墨文档创建课堂笔记、整理学习资料、进行小组项目合作,实现高效的团队协作和文档管理。石墨文档的云存储和跨平台使用使学生可以随时随地访问和编辑文档,方便学习资料的同步和共享。
3.一键抠图
一款专业的图片编辑处理APP
基本上能满足日常的需求了,不仅支持人像和物品抠图,还有照片修复,智能证件照、图片无损放大,去水印等实用功能,抠图效果很细致,边缘处理也很完美,抠图效果不满意也可以直接用他的修补、擦除工具二次编辑,很方便
4.菜鸟教程
菜鸟教程是一个完全免费的编程学习软件。
它免费提供了HTML / CSS 、JavaScript 、服务端、移动端、XML 教程、http://ASP.NET 、Web Service 、开发工具、网站建设;每类教程还细分了很多种不同的教程,例如服务端学习教程包括:PHP 教程、Python 基础教程、Python 3 教程、Linux 教程、Java 教程、Ruby 教程、C 语言教程、C++ 教程、Go 语言教程、正则表达式等丰富的编程学习教程
5.微信读书
微信读书是腾讯官方出品的一款在线小说阅读APP,它的书库储量非常丰富,我们可以直接通过搜索获取到想要阅读的书籍,喜欢阅读古今中外名著书籍的小伙伴值得尝试。
我们可以将想要阅读的书籍加入书架,还能够设置虚拟书架,这样你的好友就不知道你在读什么书了。
6.好题易
这是一个网站
是专业提供免费在线搜题及搜试题搜试卷搜题库搜答案网,在线搜题免费使用、搜题在线使用、考试试题、试题答案、试题解析、试卷答案、免费搜答案、大学搜题、截图搜题、在线搜题找答案
7.千鸟搜题
这是个微信公众号
是供给全国大学生使用的查题神器,支持多种搜索方式,无论是教材习题还是网课答案,它都能给你答案
8.酷学习
酷学习网站全内容全覆盖,其涵盖面包括了从小学到大学庞大的知识群
内容主要包括数学、物理、化学、英语、生物、语文、历史、地理的教学视频,包括小升初,中考,高考等精彩有趣的微课教学视频。
大学生常用的一些学习辅助工具包括电子书、在线学习平台、学习管理软件等,这些工具能够提供丰富的学习资源和便捷的学习方式。
相关问答
用 c语言 编写函数,求圆的周长和面积,用函数.急求._作业帮[最佳回答]#include#definePI3.1415926doublearea(doubler){returnPI*r*r;}doubleperimeter(doubler){retu...
【帮我编 C语言 ,从键盘输入矩形的长和宽,计算矩形的周长和面...[最佳回答]#includeintmain(){doublewidth;doubleheight;printf("请输入矩形的长:");scanf("%lf%*c"...
C语言 到底是讲什么的,大学生学 C语言 有什么用?首先,先引用两个百科式的定义,让你有个基础了解。1、C语言是一种通用的、面向过程式的计算机程序设计语言。1972年,为了移植与开发UNIX操作系统,丹尼斯...
C语言 能干什么?没有C语言就完蛋了呀。没有C语言,就没有操作系统;没有操作系统,就没有计算机、没有python、没有h5。所以C语言很重要,C语言改变了世界!1、操作硬件很多...一...
贪吃蛇怎么用 C语言 编写?C语言贪吃蛇源代码必须经过相应的C/C++编译器编译成EXE文件后才能运行。由于我们通常使用的操作系统是Windows系统,而在该系统下最长用的C/C++编译器是VC++...
C语言 中cout是什么意思?这不是C语言中的,这是C++中的标准输出流。意思就是以流的形式输出数据。其实就是相当于C语言中的printf。只是用法不一样,意义也不一样。例如:inta=...这不...
有谁知道 C语言 可以有哪些练习编程的网站?零基础学习和在线编写代码可以考虑下菜鸟教程菜鸟教程(www.runoob.com)提供了编程的基础技术教程,介绍了HTML、CSS、Javascript、Python,Java,Ruby,C,PH...
【 c语言 对数函数,lnx怎么写,】作业帮[最佳回答]doublelog(doublex),函数返回x的自然对数,即lnx,doublelog10(doublex),函数返回x的以10为底的对数.doublelog(doublex),函数返...
(每行5个)的 C语言 程序(c++的)帮忙用基础一点的语句_作业帮[最佳回答]上面两位的复杂度有点高.简单点做法,把100以内的2,3,5,7的倍数(除2之外)去掉,就是所有质数啦#include#includeusingnamespacestd;intmain(){...
C语言 怎么输出或输入long类型的?C语言中输出longlong型数据使用%lld格式输出的方法:1、longlong是C99标准对整型类型做的扩展,每个longlong类型的变量占8字节,64位。其表示范围为-9223372036....