学习C语言详细笔记(完整版)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

C语言视频教程第一讲:(1-13)C语言概述一、为什么学习C语言1)C的起源和发展2)C的特点3)C的应用领域4)C的重要性二、怎样学习C语言三、学习目标四、常见问题答疑(1)学习JAVA为什么建议先学C语言(2)没学过计算机专业课程能够学懂C语言(3)英语和数学不好能学好C语言么?五、课程计划六、举例子:一元二次方程一、为什么学习C语言1)C的起源和发展(ppt)在第三代语言中,以1980年为分水岭,分为结构化和面向对象语言。Fortran语言主要用于科学计算。Basic语言是vb的前生,pascal语言一般是用于教学。C语言是最重要的,其他的语言一般很少用了。结构化的代表语言是c语言。结构化语言的数据和操作是分离的,导致在写大项目的时候,会出现各种各样莫名其妙的问题。在面向对象的语言中c++是最复杂的语言。由于c++语言太复杂,sun公司对c++进行了改装,产生了java语言。而c#是由微软开发的,和java相似,几乎一模一样。在高级语言的执行速度上,c是最快的,c++其次,而java和c#是最后的。Java和c#流行,主要的一个原因是可以跨平台。C语言的发展和过程:2)C语言的特点:·优点:代码量小,速度快,功能强大。金山公司最主要是靠wps办公软件来发展的。Wps是c语言开发的,其安装包比Office少了10多倍。三大操作系统:windows,unix,linuxWindows内核是c语言写的,而外壳是c++写的。Java永远不可能写操作系统。因为java运行速度太慢了。而linux和unix都是纯c写的。操作系统控制了硬件,如果说操作系统的运行速度慢,那么当我们在运行软件的时候,运行速度会更慢。为什么使用c语言写操作系统呢,首先是因为c的运行速度快,然后是因为c可以直接控制硬件,而其他语言不可以。没有指针的语言是不能直接访问硬件的。·缺点:危险性高,开发周期长,可移植性弱。危险性高:写同一个程序,在java中会报错,而在c中不会报错,为什么呢,因为c认为程序你想怎么写就怎么写,c语言认为你写的程序不是很离谱,他都认为你写的这个程序有特殊的含义。可以直接通过,而java则不可以。开发周期长:c语言是面向过程的语言,面向过程的语言的特点就是在开发大项目的时候,很容易崩溃,好比盖大楼,C语言还要造大量的砖块、钢筋等结构原材料,而C++C#JAVA则进行了一定的继承封装等操作,相当于原材料直接给你,你只需要用它盖楼即可。现在市场上的语言分三块:C/c++:单纯的学习c是什么都做不了的。JavaC#可移植性不强:这是针对java来说的,因为java的可移植性太强了,所以就感觉说c的可移植性不强。3)C语言的应用领域:驱动一般是用c和汇编来写的。数据库一般是用c和c++来写的4)C语言的重要性:虽然应用场合相对较窄,但贴近系统内核,较底层。病毒最基本的是要感染系统,数据结构,c,c++这三门语言是必须要学习的。牛人牛语:梁肇新:编写的超级解霸播放器软件,被暴风影音收购。编写的书《编程箴言》二、怎样学习C语言(ppt)1、要将编程当成一项事业来经营,而不是糊口的工具。2、途径:多思考,多上机。目标:不能光看,光听,而要排错,能看懂程序,能调试程序,自学能力要很强。3、在犯错误中成长。参考资料:王爽写的c++也很不错三、学习的目标(ppt)掌握简单的算法--解决问题的方法和步骤。熟悉语法规则。能看懂程序并调试程序。四、常见问题答疑(ppt)(1)学习JAVA为什么建议先学C语言(2)没学过计算机专业课程能够学懂C语言(3)英语和数学不好能学好C语言么?C语言的关键字:五、课程计划六、举例子:一元二次方程C语言程序的格式:#includestdio.h#includemath.hintmain(void){//把三个系数保存在计算机中,定义三个变量。inta=1;//=不表示相等,表示赋值intb=2;intc=3;floatdelta;//delta存放的是b*b-4*a*c//float改doublefloatx1;//存放一元二次方程的其中一个解floatx2;//存放一元二次方程的其中一个解delta=b*b-4*a*c;if(delta0){x1=(-b+sqrt(delta))/(2*a);x2=(-b-sqrt(delta))/(2*a);//两个解printf(“该一元二次方程有两个解,x1=%f,x2=%f\n”,x1,x2);}elseif(delta==0){x1=(-b)/(2*a);//唯一解x2=x1;//右边值赋给左边printf(“该一元二次方程有一个唯一解,x1=x2=%f\n”,x1);}else{printf(“无解\n”);//无解}return0;}一定要养成良好的习惯:代码规范,边写边保存,括号成对出现,应用空格。VC6.0软件操作:新建保存关闭(关闭空间).cpp是原始文件,可单独拷贝到其它电脑。第二讲:(14-25)C语言编程必备知识1、Cpu,内存条,硬盘,显卡,主板,显示器之间关系。Cpu不能直接处理硬盘上的数据,必须要先调入内存。2、Helloword程序是如何运行起来的。3、什么是数据类型数据类型--数据的分类,对编程而言,首要考虑问题是数据的输入和存储。可以分为A:基本数据类型:(整数、浮点数、字符)(1)整型整型int--4字节一字节byte=8位bit短整型shortint--2字节长整型longint--8字节(2)浮点型【实数】单精度浮点数float:存储范围小--4字节双精度浮点数double:存储范围大--8字节Float和Double都不能保证将小数完全准确保存。(3)字符char:c语言中是没有字符串string--1字节(区别于JAVA、C#中有string且C#中char为2字节)B:复合类型:就是把基本类型拼凑在一起结构体枚举---实用共用体—基本淘汰4、什么是变量变量的本质是内存中一段存储空间。inti;i=5;i是变量,程序向系统申请了一个内存单元,在程序运行中,i的值可以改变,但程序结束后,其所占的空间不是释放,而是被系统收回权限。5、Cpu,内存条,vc++6.0,操作系统之间的关系。6、变量为什么必须的初始化(即赋值)软件运行与内存关系(垃圾数据-9868598658)内存是在操作系统的统一管理下使用的!(1)软件在运行前需要向操作系统申请存储空间,在内存空间足够空闲时,操作系统将分配一段内存空间并将该外存中软件拷贝一份存入该内存空间中,并启动该软件运行。(2)在软件运行期间,该软件所占内存空间不再分配给其他软件。(3)当该软件运行完毕后,操作系统将回收该内存空间(注意:操作系统并不清空该内存空间遗留下来的数据),以便再次分配给其他软件使用。《操作系统》一门课中系统分配表中会讲到,用1标记表示内在是被占用的,用0标记表示是空闲的。综上所述,一个软件所分配到的空间中极可能存在着以前其他软件使用过后的残留数据,这些数据被称之为垃圾数据,所以通常情况下我们为一个变量,为一个数组,分配好存储空间之前都要对该内存空间初始化。7、如何定义变量数据类型变量名称=赋予的值;等价于数据类型变量名;变量名=要赋予的值;举例子: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;inti,j;i=j=5;等价于inti,j;i=5;j=5;8、什么是进制(逢几进一)看ppt我们规定八进制前面加0(零),十六进制前面加0x。常用计数制对照表:Printf的基本用法:9、常量在c中是如何表示的单个字符使用单引号括起来,多个字符串使用双引号括起来(指针、数组)。‘A’表示字符A‘AB’错误“AB”正确(字符串要用双引号括起来)“A”正确,因为“A”代表了‘A’‘\0’的组合在c中,默认是double类型的。在后面加F表示当做float来处理,否则会有警告提示--丢失部分字节。10、常量以什么样的二进制代码存储在计算机中?编码:整数是以补码的形式转换为二进制代码存储在计算机浮点数是以ieee754标准转换为二进制代码存储字符本质实际是与整数的存储方式相同,ASCII码标准。第三讲:(26-46)一、代码规范化·可以参考林锐《高质量c/c++编程》·代码的规范化非常的重要,是学习一门编程语言的基础,代码可以允许错误,但不能不规范。例如:成对敲括号{}()加空格于运算符和数字之间i=1+2;加缩进分清上下级地位。换行--进行功能区域分隔or{}括号单独成一行。·代码规范化的好处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码在上图中注释的最后一样是重复定义了ch的值,是错误的,而下面的ch=‘c’是指把c赋值给ch,是正确的。以char定义变量的时候,只能使用单引号括起一个字符才是正确的。上图中输出的值是98(将字符以整数%d的形式输出)Ascll码规定了ch是以哪个值去保存。Ascll码不是一个值,而是一种规定,规定了不同的字符是以哪个整数值去表示。它规定了:‘A’--65‘B’--66‘a’--97‘b’--98‘0’--48五、字符的存储字符本质上与整数的存储方式相同基本的输入和输出函数的用法:Printf()------将变量的内容输出到显示器上。四种用法:输什么是输出控制符,什么是非输出控制符输出控制符包含如下:Printf为什么需要输出控制符:·01组成的代码可以表示数据也可以表示指令。必须要有输出控制符告诉他怎么去解读。·如果01组成的代码表示的是数据的话,那么同样的01代码组合以不同的输出格式输出就会有不同的输出结果,所以必须要有输出控制符。在上图中,intx=47,如果前面加0(零)048表示的是八进制,如果前面加0x(零x)0X47则表示的是十六进制,而在输出的时候,则是o(字母o)表示八进制,ox(字母o,x)表示十六进制。非输出控制符:非输出控制符在输出的时候会原样输出。Scanf()------通过键盘将数据输入到变量中有两种用法:示例:非输入控制符:在输入的时候也会原样输入。但是强烈建议:在使用scanf的时候,不使用非输入控制符。给多个变量赋值:#includestdio.hintmain(void){inti,j;scanf(“%d%d”,&i,&j);printf(“i=%d,j=%d\n”,i,j);return0;}需要记住,非控制符需要原样输入。如何使用scanf编写出高质量代码运算符:(1)算术运算符:加(+)减(—)乘(*)除(/)取余(%)(2)关系运算符:==!=(3)逻辑运算符:!(非)&&(并且)||(或)(4)赋值运算符:=+=*=/=例如:a+=3是等价于a=a+3,a/=3等价于a=a/3其优先级别是算术关系逻辑赋值。取余的结果的正负只和被除数有关。第四讲(47-96)流程控制(第一个重点):1、什么是流程控制程序代码执行的顺序。2、流程控制的分类①顺序执行②选择执行定义:某些代码可能执行,也可能不执行,有选择的执行某些代码。③循环执行分类:if、switchif最简单的用法:如果想控制多个语句的执行或者不执行,那么需要使用{}括起来。3.if…

1 / 149
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功