您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 郝斌C语言详细笔记(附源码)
1/106郝斌老师的C语言:课堂讲解全程动手敲代码,讲解细致,对于重要知识点的讲解不厌其烦,是一个难得的C语言入门教程。在这里对老师的辛勤付出表示感谢。郝斌c语言视频教程·概述:课程计划为什么学习c语言:Fortran语言主要用于科学计算,在第三代语言中,以1980年为分水岭,分为结构化和面向对象语言。Basic语言是vb的前生,pascal语言一般是用于教学。C语言是最重要的,其他的语言一般很少用了。结构化的代表语言是c语言。结构化语言的数据和操作是分离的,导致在写大项目的时候,会出现各种各样莫名其妙的问题。在面向对象的语言中c++是最复杂的语言。由于c++语言太复杂,sun公司对c++进行了改装,产生了java语言。而c#是由微软开发的,和java相似,几乎一模一样。在高级语言的执行速度上,c是最快的,c++其次,而java和c#是最后的。Java和c#流行,主要的一个原因是可以跨平台。2/106C语言的发展和过程:C语言的特点:·优点:代码量小,速度快,功能强大。·缺点:危险性高,开发周期长,可移植性弱。危险性高:写同一个程序,在java中会报错,而在c中不会报错,为什么呢,因为c认为程序你想怎么写就怎么写,c语言认为你写的程序不是很离谱,他都认为你写的这个程序有特殊的含义。可以直接通过,而java则不可以。开发周期长:c语言是面向过程的语言,面向过程的语言的特点就是在开发大项目的时候,很容易崩溃,好比盖大楼,C语言还要造大量的砖块、钢筋等结构原材料,而C++C#JAVA3/106则进行了一定的继承封装等操作,相当于原材料直接给你,你只需要用它盖楼即可。现在市场上的语言分三块C/c++:单纯的学习c是什么都做不了的。JavaC#可移植性不强:这是针对java来说的,因为java的可移植性太强了,所以就感觉说c的可移植性不强。金山公司最主要是靠wps办公软件来发展的。Wps是c语言开发的,其安装包比Office少了10多倍。三大操作系统:windows,unix,linuxWindows内核是c语言写的,而外壳是c++写的。Java永远不可能写操作系统。因为java运行速度太慢了。而linux和unix都是纯c写的。操作系统控制了硬件,如果说操作系统的运行速度慢,那么当我们在运行软件的时候,运行速度会更慢。为什么使用c语言写操作系统呢,首先是因为c的运行速度快,然后是因为c可以直接控制硬件,而其他语言不可以。没有指针的语言是不能直接访问硬件的。C语言的应用领域:驱动一般是用c和汇编来写的。数据库一般是用c和c++来写的C语言的重要性:4/106虽然应用场合相对较窄,但贴近系统内核,较底层。病毒最基本的是要感染系统,数据结构,c,c++这三门语言是必须要学习的。牛人牛语:怎样学习c语言要将编程当成一项事业来经营,而不是糊口的工具。多思考,多上机。不能光看,光听,而要排错,调试。在犯错误中成长。参考资料5/106王爽写的c++也很不错学习的目标:掌握简单的算法--解决问题的方法和步骤。熟悉语法规则。能看懂程序并调试程序。C语言的关键字:C语言程序的格式:6/106一定要养成良好的习惯:代码规范边写边保存,括号成对出现,应用空格VC6.0软件操作:新建保存关闭(关闭空间).cpp是原始文件,可单独拷贝到其它电脑。第二讲:(14)c语言编程必备知识1.Cpu,内存条,硬盘,显卡,主板,显示器之间关系。Cpu不能直接处理硬盘上的数据,必须要先调入内存2.Helloword程序是如何运行起来的。3.什么是数据类型数据类型--数据的分类,对编程而言,首要考虑问题是数据的输入和存储。可以分为A:基本数据类型:整型整型int--4字节一字节byte=8位bit短整型shortint-2长整型longint-8浮点型单精度浮点数float:存储范围小-4双精度浮点数double:存储范围大-8Float和Double都不能保证将小数完全准确保存。字符char:c语言中是没有字符串string-1(区别于JAVA、C#中有string且C#中char为2字节)B:复合类型:就是把基本类型拼凑在一起结构体枚举---实用共用体—基本淘汰4.什么是变量变量的本质是内存中一段存储空间。IntI;i=5;I是变量,程序向系统申请了一个内存单元,在程序运行中,i的值可以改变,但程序结束后,其所占的空间不是释放,而是被系统收回权限。5Cpu,内存条,vc++6.0,操作系统之间的关系。6变量为什么必须初始(即赋值)软件运行与内存关系(垃圾数据-9868598658)1.软件在运行前需要向操作系统申请存储空间,在内存空间足够空闲时,操作系统将分配一段内存空间并将该外存中软件拷贝一份存入该内存空间中,并启动该软件运行。2.在软件运行期间,该软件所占内存空间不再分配给其他软件。3.当该软件运行完毕后,操作系统将回收该内存空间(注意:操作系统并不清空该内存空间遗留下来的数据),以便再次分配给其他软件使用。《操作系统》一门课中系统分配表中会讲到,用1标记表示内在是被占用的,用0标记表示是空闲的。综上所述,一个软件所分配到的空间中极可能存在着以前其他软件使用过后的残留数据,这些数据被称之为垃圾数据,所以通常情况下我们为一个变量,为一个数组,分配好存储空间之前都要对该内存空间初始化。7/1067如何定义变量数据类型变量名称=赋予的值;等价于数据类型变量名;变量名=要赋予的值;举例子:inti=3;等价于inti;i=3;Inti,j;等价于inti;intj;Inti,j=3等价于inti;intj;j=3;IntI=3,j=5;等价于inti;intj;I=3;j=5;8什么是进制–逢几进一我们规定八进制前面加0(零),十六进制前面加0x。8/106常用计数制对照表:Printf的基本用法:9常量在c中是如何表示的9/106当个字符使用单引号括起来,多个字符串使用双引号括起来(指针、数组)。在c中,默认是double类型的。在后面加F表示当做float来处理,否则会有警告提示--丢失部分字节。10常量以什么样的二进制代码存储在计算机中?编码:整数是以补码的形式转换为二进制代码存储在计算机浮点数是以ieee754标准转换为二进制代码存储字符本质实际是与整数的存储方式相同,ASII码标准。第三次课:代码规范化·可以参考林锐《高质量c/c++编程》·代码的规范化非常的重要,是学习一门编程语言的基础,代码可以允许错误,但不能不规范。例如:成对敲括号{}()加空格于运算符和数字之间I=1+2;加缩进分清上下级地位。换行--进行功能区域分隔or{}括号单独成一行。10/106·代码规范化的好处1:整齐,别人和自己都容易看懂。2:代码规范了,代码不容易出错。3:一般的程序可以分为三块:a:定义变量b:对变量进行操作c:输出值什么是字节·存储数据的单位,并且是硬件所能访问的最小单位。内存中存储的最小单位是位bit(0或1),但是硬件控制的时候不能精确到位,只能精确到字节(8位),是通过地址总线来控制的,而精确到位是通过软件来控制的,叫做位运算符来精确到位的。1字节=8位1K=1024字节1M=1024K1G=1024M1T=1024G2G的内存条的总空间:2*1024*1024*1024*8=4*1032不同类型数据之间相互赋值的问题不同数据类型之间最好不要相互转换。如果需要明白这个知识点,那么需要明白补码。什么是ASCII码以char定义变量的时候,只能使用单引号括起一个字符才是正确的。在上图中注释的最后一样是重复定义了ch的值,是错误的,而下面的ch=‘c’是指把c赋值给ch,是正确的。11/106上图中输出的值是98(将字符以整数%d的形式输出)Ascll码规定了ch是以哪个值去保存,ascii码不是一个值,而是一种规定,规定了不同的字符是以哪个整数值去表示。其它规定还有GB2312UTF-8等。字符本质上与整数的存储方式相同【字符的存储】基本的输入和输出函数的用法:第三次课Printf()将变量的内容输出到显示器上。四种用法输什么是输出控制符,什么是非输出控制符输出控制符包含如下:12/106Printf为什么需要输出控制符:·01组成的代码可以表示数据也可以表示指令。必须要有输出控制符告诉他怎么去解读。·如果01组成的代码表示的是数据的话,那么同样的01代码组合以不同的格式输出就会有不同的输出结果,所以必须要有输出控制符。在上图中,intx=47,如果前面加0(零)048表示的是八进制,如果前面加0x(零x)0X47则表示的是十六进制,而在输出的时候,则是o(字母o)表示八进制,ox(字母o,x)表示十六进制。非输出控制符:非输出控制符在输出的时候会原样输出。Scanf()通过键盘将数据输入到变量中有两种用法:示例:13/106非输入控制符:在输入的时候也会原样输入。但是强烈建议:在使用scanf的时候,不使用非输入控制符。给多个变量赋值:需要记住,非控制符需要原样输入。如何使用scanf编写出高质量代码14/106运算符:算术运算符:加(+),减(—)乘(*)除(/)取余(%)关系运算符:,=,,=,!=,逻辑运算符:!(非),&&(且),||(或)15/106赋值运算符:=,+=,*=,/=例如:a+=3是等价于a=a+3,a/=3等价于a=a/3其优先级别是算术关系逻辑赋值。16/106取余的结果的正负只和被除数有关。第四节流程控制(第一个重点):1.什么是流程控制程序代码执行的顺序。2.流程控制的分类17/106顺序执行选择执行定义:某些代码可能执行,可能不执行,有选择的执行某些代码。分类:ifIf最简单的用法:18/106如果想控制多个语句的执行或者不执行,那么需要使用{}括起来。3.if…else…的用法:19/106if…elseif…else的用法:C错误的if…elseif…else语句:20/106在上图中,当执行到哈哈那句时,下面的else将会被算作另外一个语句来执行,而在我们的c语言中,没有以else开头的语句。所以会出错。If实例:If常见的问题:变量的替换:21/106求三个数字的大小:C语言常见误区:纸老虎素数:只能被1和自己整除的数,如1,5,9等。回文数:正着写和倒着写一样的数。如1221,121,等22/106编程实现求一个十进制数字的二进制形式:求一个数字的每位是奇数的数字取出来组合形成的新数字。求一个数字到过来的数字。1:如果不懂,那么就看答案。看懂答案在敲。没错误了,在尝试改。如何看懂一个程序:1.流程:2.每个语句的功能:3.试数:对一些小算法的程序:1.尝试自己编程结局。2.解决不了,看答案。3.关键是把答案看懂。4.看懂之后尝试自己修改程序,且知道修改之后程序的不同输出结果的含义。5.照着答案去敲6.调试错误7.不看答案,自己独立把程序编出8.如果程序实在是彻底无法了解,就把他背会。空语句的问题:在上图中,最终的结果会是AAAA,BBBB,程序也不会报错,为什么呢,因为在程序执行的时候,会在;哪里认为是一个空语句。也就是说,如果if成立,那么执行空语句。If常见错误解析(重点)23/106上面这个程序是错误的,为什么呢,在该程序中,总的有4个语句,而在以else开头的那个语句中是有错误的,因为在c语言中是没有以else开头的这种语法。在上面这个程序中,最终的值是AAAA,虽说后面的31也满足条件,但是当32满足条件后,该if语句就会终止,后面的语句是不会在执行的。24/106既然7行要写表达式,就要写if。25/106循环的定义、分类。定义:某些代码会被重复执行。分类:forwhiledo……while在上图中,先执行1,在执行2,2如果成立,标志着循环成立,那么在执行4,最后在执行3,3执行完后代表一次循环完成,然后在执行2.以此类推。1永远只执行一次。++I等价于i+1求1-10的所有奇数的和:求1-12之间的所有能被3整除的数字之和:26/106For所控制的语句:在上图中,for默认只
本文标题:郝斌C语言详细笔记(附源码)
链接地址:https://www.777doc.com/doc-6316664 .html