《学习c语言详细笔记.pdf》由会员分享,可在线阅读,更多相关《学习c语言详细笔记.pdf(146页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、C语言视频教程第一讲:(1-1 3)C语言概述一、为什么学习c 语言1)c 的起源和发展2)C 的特点3)C 的应用领域4)C 的重要性二、怎样学习C 语言三、学习目标四、常见问题答疑(1)学习JAVA为什么建议先学C 语言(2)没学过计算机专业课程能够学懂C 语言(3)英语和数学不好能学好C 语言么?五、课程计划六、举例子:一元二次方程一、为什么学习C语言1)C的起源和发展(ppt)I 机器语畲 1I 汇 编 语 言 1第一代语言第二代语言在第三代语言中,以 1980年为分水岭,分为结构化和面向对象语言。Fortran语言主要用于科学计算。Basic语言是vb 的前生,pascal语言一般是
2、用于教学。C 语言是最重要的,其他的语言一般很少用了。结构化的代表语言是c 语言。结构化语言的数据和操作是分离的,导致在写大项目的时候,会出现各种各样莫名其妙的问题。在面向对象的语言中C+是最复杂的语言。由于C+语言太复杂,sun公司对C+进行了改装,产生了 java语言。而c#是由微软开发的,和java相似,几乎一模一样。高级语言:a+b 汇编语言 ADD AX,BX 机器语言 0000 0001 1101 10000在高级语言的执行速度上,C是最快的,C+其次,而java和c#是最后的。Java和c#流行,主要的一个原因是可以跨平台。产生时间:1972-1973 产生地点:美国贝尔实验室(
3、Bell)创始人:Dennis.M.Ritchie 和 Ken.Thompson 目的:改写UNIX操作系统 C语言发展过程 1983年 ANSIC 1987年 ANSI C 87-1994年 C992)C语言的特点:优点:代码量小,速度快,功能强大。金山公司最主要是靠wps办公软件来发展的。Wps是c语言开发的,其安装包比Office少了 10多倍。三大操作系统:windows,unix,linuxWindows内核是c 语言写的,而外壳是C+写的。Java永远不可能写操作系统。因为java运行速度太慢了。而 linux和 unix都是纯c 写的。操作系统控制了硬件,如果说操作系统的运行速度
4、慢,那么当我们在运行软件的时候,运行速度会更慢。为什么使用c 语言写操作系统呢,首先是因为c 的运行速度快,然后是因为c 可以直接控制硬件,而其他语言不可以。没有指针的语言是不能直接访问硬件的。缺点:危险性高,开发周期长,可移植性弱。危险性高:写同一个程序,在 java中会报错,而在c 中不会报错,为什么呢,因为c 认为程序你想怎么写就怎么写,c 语言认为你写的程序不是很离谱,他都认为你写的这个程序有特殊的含义。可以直接通过,而 java则不可以。开发周期长:c 语言是面向过程的语言,面向过程的语言的特点就是在开发大项目的时候,很容易崩溃,好比盖大楼,C 语言还要造大量的砖块、钢筋等结构原材料
5、,而 C+C#JAVA则进行了一定的继承封装等操作,相当于原材料直接给你,你只需要用它盖楼即可。现在市场上的语言分三块:C/C+:单纯的学习c 是什么都做不了的。JavaC#可移植性不强:这是针对java来说的,因为java的可移植性太强了,所以就感觉说c 的可移植性不强。3)C语言的应用领域:系统软件开发 操作系统:Windows,Linux、Unix 驱动程序:主板驱动、显卡驱动、摄像头驱动 数据库:DB2、Oracle、Sql Server 应用软件开发 办公软件:Wps 图形图像多媒体:ACDSee PhotoshopMediaPlayer-嵌入式软件开发:智能手机、掌上电脑 游戏开发
6、:2D、3D游戏驱动一般是用c 和汇编来写的。数据库一般是用C和 C+来写的4)C语言的重要性:有史以来最重要语言 所有大学工科和理科学生必修课程 最重要系统软件:windows、linux、unix均使用c开发 一名合格黑客必须掌握的语言 任何一个想终身从事程序设计和开发人员必须熟练掌握的语言 大企业、外企招聘程序员必考的语言 为学习数据结构、C+、Java、C#奠定基础虽然应用场合相对较窄,但贴近系统内核,较底层。病毒最基本的是要感染系统,数据结构,C,C+这三门语言是必须要学习的。牛人牛语:入门最基本的方法就是从C语言入手.当你成为C语言的高手,那么就你很容易进入到操作系统的平台里面去;
7、当你进入到操作系统的平台里去实际做程序时,就会懂得进行调试;当你懂得调试的时候,你就会发现能轻而易举地了解整个平台的架构。这时候,计算机基本上一切都在你的掌握之中了,没有什么东西能逃得出你的手掌心一 一 编程箴言梁肇新梁肇新:编写的超级解霸播放器软件,被暴风影音收购。编写的书 编程箴言二、怎样学习C语 言(ppt)1、要将编程当成一项事业来经营,而不是糊口的工具。2、途径:多思考,多上机。目标:不能光看,光听,而要排错,能看懂程序,能调试程序,自学能力要很强。3、在犯错误中成长。参考资料:谭 浩 强 C语言程序设计清华 The C programming language 机械工业 C Pri
8、mer Plus60元人名邮电 C和指针65元 人 名 邮 电 C专家编程绝版 C陷阱与缺陷人名邮电30 C科学与艺术 机械,业王爽写的C+也很不错三、学习的目标(ppt)掌握简单的算法-解决问题的方法和步骤。熟悉语法规则。能看懂程序并调试程序。32个 关 键 字:(由系统定义,不能重作其它定义)四、常见问题答疑(ppt)(1)学习J A V A为什么建议先学C语言(2)没学过计算机专业课程能够学懂C语言(3)英语和数学不好能学好C语言么?C语言的关键字:autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgot
9、oifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunsigned unionvoidvolatilewhile五、课程计划共分23讲C语言简介1讲第一讲、基本编程知识1讲第二讲、数据类型1讲第三讲、运算符和表达式1讲第四讲、流程控制4讲第五讲、函数2讲第六讲、数组1讲第七讲、指针4讲第八讲、变量的作用域和存储方式1讲第九讲、扩展数据类型1讲第十讲、专题:字符串的处理1讲进制料换1讲补码1讲动态内存分配1讲综合应用:链表的使用2讲六、举例子:一元二次方程C语言程序的格式:#i n c l u d e#i n c
10、l u d e i n t m a i n(v o i d)把三个系数保存在计算机中,定义三个变量。i n t a=l;=不表示相等,表示赋值i n t b=2;i n t c=3;f l o a tf l o a tf l o a td e l t a;x l;x 2;/d e l t a 存放的是 b*b-4*a*c /f l o a t 改 d o u b l e存放一元二次方程的其中一个解存放一元二次方程的其中一个解d e 1 t a=b*b-4*a*c;i f(d e l t a 0)x l=(-b+s q r t(d e l t a)/(2*a);x 2=(-b-s q r t (
11、d e l t a)/(2*a);两个解p r i n t f (“该一元二次方程有两个解,x l=%f,x 2=%f n,x l,x 2);)e l s e i f(d e l t a=O)x l=(-b)/(2*a);唯一解x 2=x l;右边值赋给左边p r i n t f (“该一元二次方程有一个唯一解,x l=x 2=%f nw,x l);)e l s e(p r i n t f (“无解 n);无解r e t u r n 0;)一定要养成良好的习惯:代码规范,边写边保存,括号成对出现,应用空格。VC6.0软件操作:新 建 保 存 关 闭(关 闭 空 间).cpp是原始文件,可单独拷
12、贝到其它电脑。第二讲:(14-25)C 语言编程必备知识1、C p u,内存条,硬盘,显卡,主板,显示器之间关系。Cpu不能直接处理硬盘上的数据,必须要先调入内存。2、Hello word程序是如何运行起来的。3、什么是数据类型数据类型-数据的分类,对编程而言,首要考虑问题是数据的输入和存储。可以分为A:基本数据类型:(整数、浮点数、字符)(1)整型整型int 4字节一字节 byte=8 位 bit短整型short int-2字节长整型long int 8字节(2)浮点型【实数】单精度浮点数float:存储范围小-4字节双精度浮点数double:存储范围大-8字节Float和Double都不能
13、保证将小数完全准确保存。(3)字符 char:c语言中是没有字符串string 字节(区别于JAVA、C#中有string且C#中char为2字节)B:复合类型:就是把基本类型拼凑在一起结构体枚 举-实用共用体一基本淘汰4、什么是变量变量的本质是内存中一段存储空间。int i;i=5;i是变量,程序向系统申请了一个内存单元,在程序运行中,i的值可以改变,但程序结束后,其所占的空间不是释放,而是被系统收回权限。5、C p u,内存条,VC+6.0,操作系统之间的关系。6、变量为什么必须的初始化(即赋值)软件运行与内存关系(垃圾数据-9868598658)内存是在操作系统的统一管理下使用的!(1)
14、软件在运行前需要向操作系统申请存储空间,在内存空间足够空闲时,操作系统将分配一段内存空间并将该外存中软件拷贝一份存入该内存空间中,并启动该软件运行。(2)在软件运行期间,该软件所占内存空间不再分配给其他软件。(3)当该软件运行完毕后,操作系统将回收该内存空间(注意:操作系统并不清空该内存空间遗留下来的数据),以便再次分配给其他软件使用。操作系统一门课中系统分配表中会讲到,用1标记表示内在是被占用的,用0标记表示是空闲的。综上所述,一个软件所分配到的空间中极可能存在着以前其他软件使用过后的残留数据,这些数据被称之为垃圾数据,所以通常情况下我们为一个变量,为一个数组,分配好存储空间之前都要对该内存
15、空间初始化。7、如何定义变量数据类型 变 量 名 称=赋予的值;等价于数 据 类 型 变 量 名;变 量 名=要赋予的值;举例子:int3;等价于 inti;i=3;int i,j;等价于 intint i,j=3 等价于 intint j;int j;j=3;int i=3,j=5;等价于 int i;int j;i=3;j=5;int i,j;i=j=5;等价于 int i,j;i=5;8、什么是 进 制(逢 几 进 一)看ppt我们规定八进制前面加0(零),十六进制前面加Ox。3FB9H为十六进制数3F B 9,也i己为(3FB9)在汇编中:在数字后加字母B表示二吐制裁,加学母。表示人址
16、制敷,加字母D表示十迷制数,加字母H表示十六选制数。例:1Q11B为二进制数1011,也 记 为(1011)213570为八进制数1357,也 记 为(1357)J2049D为十进制数2049,也 记 为(2049)lft.163(一)什 么 叫n进制十进制 十个基数,逢10进一 基数:0 1 2 3 4 5 6 7 8 9二进制-二个基数逢二进一-基数:0 1 2-10 3-11 4-100 5-101八进制 8个基数逢8进一 基数:0 1 2 345 6 7 8-10 9-11 10-12十六进制:16个基数逢16进一 基数:0 1 2 345 6 78 9 A B C E F 或 012
17、 3 4 5 6 7 8 9 a b e d e f 16-10 17-11 18-12 19-13常用计数制对照表:.常用计数制对八昭、表十进制(D)二进制(B)八进制(0)十六进制(H)晶工后靛二3987654321001101110010111011110001001101010111100110111101111155 短三位&=居 76543210re dC ba 987654321。Printf的基本用法:printf C i=%dn”,i);/*printf的用法%d袤示以4进制输等%x或%X表示以十六遵制输|出%。表示以八进制输出*/9、常量在c中是如何表示的整数十进制:传统的
18、写法十六进制:前面加Ox或0X八进制:前面0注意是数字零不是字母。浮点数传统的写法float x科学计数法float xfloat x字符3.2;/传统3.23,x的值是 3200123.45e-2,x的值是 1.2345I单个字符使用单引号括起来,多个字符串使用双引号括起来(指针、数组)。公 表示字符A公B,错误“AB”正 确(字符串要用双引号括起来)A正确,因为“A”代表了代 0的组合int main(void)float x=123.45e-2F|;1printf(%fn,x):return 0;)在 c 中,默认是double类型的。在后面加F 表示当做float来处理,否则会有警告提
19、示-丢失部分字节。10、常量以什么样的二进制代码存储在计算机中?编码:整数是以补码的形式转换为二进制代码存储在计算机浮点数是以ieee754标准转换为二进制代码存储字符本质实际是与整数的存储方式相同,ASCII码标准。第二讲:(26-46)一、代码规范化可以参考林锐 高质量C/C+编程代码的规范化非常的重要,是学习一门编程语言的基础,代码可以允许错误,但不能不规范。例如:成对敲括号 ()加空格于运算符和数字之间i=1+2;加缩进分清上下级地位。换行-进行功能区域分隔or 括号单独成一行。代码规范化的好处1:整齐,别人和自己都容易看懂。2:代码规范了,代码不容易出错。3:一般的程序可以分为三块:
20、a:定义变量b:对变量进行操作c:输出值二、什么是字节存储数据的单位,并且是硬件所能访问的最小单位。内存中存储的最小单位是位bit(O或1),但是硬件控制的时候不能精确到位,只能精确到字节(8位),是通过地址总线来控制的,而精确到位是通过软件来控制的,叫做位运算符来精确到位的。1 字 节=8 位1K=1024 字节1M=1024 K1G=1024 M1T=1024 G2G的内存条的总空间:2*1024*1024*1024*8=4*1032三、不同类型数据之间相互赋值的问题不同数据类型之间最好不要相互转换。int i =45;long j=102345;i =J;printf(*%ld%dn”,
21、i,j);float x=6.6,double y=8.8;pr i ntf(*%f%lfn,x,y),int i如果需要明白这个知识点,那么需要明白补码。四、什么是ASCII码0 include int main(void)(Ichar ch=A./char ch=AB/char ch=A./4行 O K 等价 char c h,赤=?A ./e rro r因为AB是字符串,我们不能把字符串赋给单个字符/error/char ch=A B,/AB是错误的/char c h二B,e r r o r,因为ch变量已经在4行定义了,这样会导致变量名被:ch=C;printf(x%cn*,ch);在
22、上图中注释的最后一样是重复定义了 ch的值,是错误的,而下面的c h=七是指把C赋值给c h,是正确的。以Char定义变量的时候,只能使用单引号括起一个字符才是正确的。U inc 1 ude int mainlxpid)c Q r b printch).return 0;)上图中输出的值是98(将字符以整数d的形式输出)Ascii码规定了 ch是以哪个值去保存。Ascii码不是一个值,而是一种规定,规定了不同的字符是以哪个整数值去表示。它规定了:W-65 B,-66匕 -97 W-980-48五、字符的存储字符本质上与整数的存储方式相同基本的输入和输出函数的用法:Printf()将变量的内容输
23、出到显示器上。四种用法:1.p r in tf(字符串);2.p r in tf(输出控制符“,输出参数);3.p r in tf(输出控制符1输出控制符2.。*,输出参数1,输出控制符和输出参数的个数必须一一对应4.p r in tfC 输 出 控 制 和 非 输 出 控 制 符:输 出 参 数)|;输什么是输出控制符,什么是非输出控制符输出控制符包含如下:%d%l d in tl o n g in t%cc ha r%f fl o a t%l f-do u b l e%x(或者 X后者#X)in t 或 l o n g in t 或 s ho r t in t%o同上%s I 字符串1Pr
24、intf为什么需要输出控制符:01组成的代码可以表示数据也可以表示指令。必须要有输出控制符告诉他怎么去解读。如果01组成的代码表示的是数据的话,那么同样的01代码组合以不同的输出格式输出就会有不同的输出结果,所以必须要有输出控制符。8 in c l u de in t ma in(vo id)(in t x=4 7,1 0 0是十进制p r in tf(%x r T,x);输出结果是:2 fp r in tf(%X n*,x);/输出结臬是:2 Fp r in tf C%8 X n x);/输出结果是:0 X 2 F|p r in tf x),输出结果是:0乂2 fr etu r n 0;在上
25、图中,int x=4 7,如果前面加0(零)048表示的是八进制,如果前面加 Ox(零 x)0X47则表示的是十六进制,而在输出的时候,则是。(字母o)表示八进制,ox(字母o,x)表示十六进制。非输出控制符:非输出控制符在输出的时候会原样输出。printf(*i=%d,j=%dn*,j,k);Scanf()一一通过键盘将数据输入到变量中有两种用法:用法一:scanf(输入控制符,输入参数);功能:将从键盘输入的字神转化为输入控制符所规定格式的数据,然后存入以输入参数的值为地址的变量中|示例:#include int main(void)(int i;scanf&i);/&i表示i 的地址&是
26、一个取地址符p rin tf(i=%dn”,i);return 0;|)非输入控制符:在输入的时候也会原样输入。用法二:sca n f非检入控制符检入控制符,输入参数);功能:将从键盘怆入的字符转化为怆入控制符所规定格式的数据,然后存入以输入参数的值为地址的变量中非输入控制符必须原样输入 include int main(void)int i,I ”.scanf(m%d,&i),p rin tf(*i=%dn i)return 0;但是强烈建议:在使用scanf的时候,不使用非输入控制符。给多个变量赋值:#in c l u de in t ma in(vo id)(in t i,j;s c a
27、 n f(“d%d”,&i,&j);p r in tf(ui=%d,j=%d nw,i,j);r etu r n 0;)需要记住,非控制符需要原样输入。如何使用scanf编写出高质量代码如何使用s c a n f编写出高质量代码1,使用s c a n f之前最好先使用p r in t f提示用户以什么样的方式来输入2.s c a n f中尽量不要使用非输入控制符,尤其是不要用n|f t in c l u de in t ma in(vo id)in t i;s c a n f(陶 八 n“,&i);非常不好的格式,不 要 加 np r in tf(i=%d n”,i);r etu r n 0;
28、3.应该编写代码对用户的非法输入做适当的处理【非重点】w h i l e (c h=g e t c h a r ()!=n)c o n t i n u e;S i n c l u d e i n t m a i n(v o i d)(i n t i;c h a r c h;s c a n f(%d,&i);p r i n t f(i 二 强d n”,i);I/-.、,w h i l e (c h=g e t c h a r ()!=n)/c o n t i n u e;i n t j;s c a n f(%d,&j);p r i n t f(j =%d n”r e t u r n 0;运算符:
29、(1)算术运算符:加(+)减(一)乘(*)(2)关系运算符:j);除(/)取 余()(3)逻辑运算符:!(非)&(并且)真!假真&真真&假假&真假&假真II假假II真真II真假II假II(或)假真真假假假真真真假C语言对真假的处理非零是真零是假 真是1表示假是。表示&左边的表达式为假右边的表达式肯定不会执行11左边的表达式为真I右边的表达式肯定不会执行(4)赋值运算符:=+=*=/例 如:a+=3是 等 价 于a=a+3,a/=3等 价 于a=aR其 优 先 级 别 是 算 术 关 系 逻 辑 赋 值。除法与取模运算符除法/的运算结果和运算对象的数据类型有关,两个数都是int,则商就是in t
30、,若商有小数,则截取小数部分;被除数和除数中只要有一个或两个都是浮点型数据,则商也是浮点型,不截取小数部分。如:16/5=3 16/5.0=3.20000-13/4=-4-13/-3=4 3/5=0 5/3=1最典型的例题就是求s=1+1/2+1/3+1/4+1/5-.+1/100的值(具体程序我们以后再讲).取余的运算对象必须是整数,结果是整除后的余数,其余数的符号与被除数相同如:1 3%3 =?1 13%-3=1-13%3=-1-13%23=-13 3%5 =3测试取模运算符的例子I.#include 2.int main(void)工printf(%d%d%d%d%d%d n;3%3,1
31、3%-3,-13%3,-13%-3,-13%23,3%5);5.return 0;6.7.r8.输出结果是:*m*m*10.0 1-1-1 -13 3i t Press any key to continue 2*m*总结:取余%的运算对象点是整数,结 果 是 雌 后 的 球,其余数的符号与被除数相同14.*/取余的结果的正负只和被除数有关。第 四 讲(47-96)流 程 控 制(第一个重点):1、什么是流程控制程序代码执行的顺序。2、流程控制的分类顺序执行选择执行定义:某些代码可能执行,也可能不执行,有选择的执行某些代码。循环执行分类:if switch1.金最简单的用法2.if的范围问题3
32、.if.,else.的用法4.if.else if.else.的用法5.C语言对真假的处理6.if举例一求分数的等级7.if的常见问题解析if最简单的用法:1.if最简单的用法格 式:if(表达式)语句功 能:如果表达式为真,执行语句如果表达式为假,语句不执行#include int main(void)if(3)p rin tf(AAAAn);会输出if(0)p rin tf;不会输出if(0=0)p rin tf(CCCCn);会输出return 0;2.i f 的范围问题1.i f (表达式)语句A;语句B;解释:i f 跃认只能控制语句A的执行或不执行i f 无法控制语句B的执行或不执
33、行或者讲:语句B一定会执行i f*认的只能控制一个语句的执行或不执行|2.i f (表达式)语句A;语句B;)此时i f 可以控制语句A和语句BI由此可见:i f 默认只能控制一个语句的执行或不执行如果想控制多个语句的执行或不执行就必须把这些语句用 括起来|如果想控制多个语句的执行或者不执行,那么需要使用 括起来。3.if.else.的用法:#i n c l u d e i n t m a i n(v o i d)(i n t i j;s c a n f (%d M,&j);i f (i j)p r i n t f (i大于八n);e l s ep r i n t f (i小于 j n);r
34、e t u r n 0;)4 i n c l u d e i n t m a i n (v o i d)(i f (1|2)p r i n t f(A A A A n);e l s ep r i n t f;p r i n t f(C C C C n);r e t u r n 0;4、if.else if.else 的用法:(格式)if (1)Aelse if (2)应;else if(3)C;elseD:#i n c l u d e i n t m a i n(v o i d)(d o u b l e d e l t a =3;i f (d e l t a 0)Ip r i n t f (看
35、两个解八n);e l s e i f (d e l t a =0)p r i n t f (有一个唯一解!n);e l s ep r i n t f (无解!、n f);r e t u r n 0;C 错误的 if.else if.else 语句:t t i n c l u d e i n t m a i n (v o i d)(d o u b l e d e l t a =1;i f (d e l t a 0)p r i n t f (看两个解!n);p r i n t f (哈哈!n);e l s e i f (d e l t a =0)p r i n t f (有一个唯一解!n);e l
36、 s ep r i n t f (无解八n);r e t u r n 0;在上图中,当执行到哈哈那句时,下面的else将会被算作另外一个语句来执行,而在我们的c语言中,没有以else开头的语句。所以会出错。5、C 语言对真假的处理非零是真(真用1 表示)零就是假(假用0 表示)6、i f 实 例(举例-一求分数的等级):A include int main(uoid)(Float score;/score分数printf(“请输入您的考试成绩:”);scanF,”,ftscore);if(score 100)printf(“这是做梦,n“);else if(score=90&score=100
37、)不能写成 9 0=score=80&score=60&score=0&scoreprintf(-%d%dn,a,b,c);return 0;(3)(:语言常见误区:素数:只能被1和自己整除的数,如1,5,9等。回文数:正着写和倒着写一样的数。如1221,121,等。编程实现求一个十进制数字的二进制形式。求一个数字的每位是奇数的数字取出来组合形成的新数字。求一个数字倒过来的数字。算法:解题的方法和步骤。如何看懂一个程序,分三步:1、流程:也就是程序执行的顺序;2、每个语句的功能;3、试数:找一个数带入程序验证。如何学习一些需要算法的程序(如何掌握一个程序):1、尝试自己编程解决它,但要意识到大
38、部分人都是自己无法解决的,这时不要气馁。如果十五分钟还想不出来,此时我建议您就可以看答案了。2、如果解决不了,看答案。3、关键是把答案看懂,这个要花很大的精力,也是我们学习的重点。看懂一个程序要分三步:流程、每个语句的功能、试数。4、看懂之后尝试自己修改程序,并且知道修改之后程序的不同输出结果的含义。不建议看懂程序之后就立即自己敲程序。5、照着答案去敲6、调试错误7、自己不看答案,自己独立把答案敲出来。8、如果程序实在是彻底无法理解,就把他背会。(很少有这种程序)7、if常见的问题解析:1、空语句的问题:if(3 2);等价于if(3 2);/这是一个空语句int main(void)(if(
39、1 2)printf(还;printf(BBBBn);return 0;在上图中,最终的结果会是AAAA,BBBB,程序也不会报错,为什么呢,因为在程序执行的时候,会在;哪里认为是一个空语句。也就是说,如果i f成立,那么执行空语句。2、I f常见错误解析(重点)if (表达式1)A:elseB;是正确的if (表达式D;l IA;elseB;是错误的t t i n c l ud e i n t m a i n(v o i d)(i f(3 2)4行 如果这里加分号,则会导致程序编译到6行时就会出错p ri n tf(哈哈!n*);l se /6行p ri n tf(嘿嘿!n );re tur
40、n 0,上面这个程序是错误的,为什么呢,在该程序中,总的有4个语句,而在以e l se 开头的那个语句中是有错误的,因为在c 语言中是没有以e l se开头的这种语法。3、I f常见错误解析i f(表达式1)A;e l se i f(表达式2)B;e l se i f(表达式3)c;else即便表达式1和2都成立,也只会执行A语句。程序测试:#i n c l ud e i n t m a i n(v o i d)i f(3 2)p ri n tf(AAAA n );e l se i f(3 1)p ri n tf(BBBB n);e l se Ip ri n tf(CCCC n );re tu
41、rn 0,在上面这个程序中,最终的值是AAAA,虽说后面的3 1也满足条件,但是当32满足条件后,该if语句就会终止,后面的语句是不会在执行的。4、If常见错误解析(用成绩等级程序验证)i f (表达式1)A;e lse i f (表达式2)B;e lse i f (表达式3)C;这样写语法不会出错,但逻辑上有漏洞5、If常见错误解析(用成绩等级程序验证)if(表达式1)Aelse if(表达式2)B else if(表达式3)C;else1(表达式4)7行D;这样写是不对的,正确的写法是:要么去掉第7 行 的(表达式4)要么在第7 行 的 else后面加if6、If常见错误解析(if常见问题
42、解析_5.cpp)if(表达式1)else if(表达式2)B;else if(表达式3)C;丁else(表达式4);工D;这样写语法不会出错,但逻辑上是错误的else(表达式4);D;等价于else(表达式4);D;I循环的定义、分类。定义:某些代码会被重复执行。分类:for(重点)whiledo.while(1)格式:for(1;2;3)语句A;(2)执行的流程(重点)单个fo r循环的使用多个fo r循环的嵌套使用(具体附后)(3)范围问题:(4)举 例:1+2+3+.+1 0 01+1/2+1/3+.+1/1 0 0#i n c l ud e i n t m a i n(v o i d
43、)(i n t i;i n t sum =0-|i-fo r(i =l,i=4 +Tsum =s +i,p ri n tf(*sum =%d n”,sum);re turn 0,在上图中,先执行1,在执行2,2 如果成立,标志着循环成立,那么在执行4,最后在执行3,3 执行完后代表一次循环完成,然后在执行2.以此类推。1 永远只执行一次。+i 等价于i+1例 1:求 1-10的所有奇数的和:#include int main(void)int i;int sum=0,for(i=l;i10;i+=2)/i+=2;等价于 i=i+2;sum=sum+i|;)return 0;)for所控制的语句
44、:#include int main(void)Iint i;for(i=l;i4;+i)(p rin tf(AAAAn);p rin tf;)return 0;)在上图中,for默认只能控制一个语句,但是如果要控制多个语句时候,那么需要使用 把语句括起来。例2:求1-12之间的所有能被3整除的数字之和:int sum=0;for(i=3;i=12;+i)if(i%3=0)/如 果 i 能被3整除sum=sum+i;)printf(sum=sun);return 0;例 3:求 1+1/2+V1.1/100 的和。#include int main(void)(int i;float sum=
45、0;for(i=l;i i=l 1 i=2 2 i=3 3 =1 0 0 Ts u m=l+l/2.0+1/3.0 +i i=4 1浮点数存取的问题:浮点数的存错所带来的问题f l o a t 和 d o u b l e 都不能保证可以把所有的实数都准确的保存在计算机中。例子:f l o a t I =9 9.9;p r i n f(,i);最终在V c+6.0中的输出结果是:9 9.9 0 0 0 0 2因为浮点数无法准确存储,所以就衍生出来两个编程问题:有一个浮点型变量x,如何判断x的值是否是零i f (|x-0.0 0 0 0 0 1 1 =0.0 0 0 0 0 1)是零e l s e
46、不是零为什么循环中更新的变量不能定义成浮点型f o r 循环和i f 的嵌套使用四个习题练习:求1-1 0 0 之间所有奇数的和求1-1 0 0 之间的奇数的个数求1-1 0 0 之间奇数的平均值求1-1 0 0 之间的奇数之和,在求1-1 0 0 之间的偶数之和。例 求 1-1 0 0 之间所有奇数的和:#i n cl u d e i n t m a i n(v o i d)(i n t i;i n t s u m =0;f o r (i=l;i 1 0 1;+i)(i f (i%2 =1)s u m +=i;/s u m =s u m +i;)p r i n t f(s u m =%d n
47、 ,s u m);r e t u r n 0;)例 求 1-1 0 0 之间的奇数的个数:#i n cl u d e i n t m a i n(v o i d)(i n t i;i n t e n t =0;个数一般用e n t 表示f o r (i=l;i 1 0 1;+i)i f (i%2 =1)+cn t;)p r i n t f(cn t =%d n”,e n t);r e t u r n 0;)例 求 1-1 0 0 之间奇数的平均值:#i n cl u d e i n t m a i n(v o i d)(i n t i;i n t s u m =0;i n t e n t =0
48、;f l o a t a v g;/a v e r a g e 的缩写f o r (i=l;i 1 0 1;+i)(i f (i%2 =1)(s u m +=i;+cn t;)a v g =1.0*s u m /e n t;L 0 默认是 d o u b l e 类型p r i n t f(s u m =%d n”,s u m);p r i n t f(e n t =%d n”,e n t);p r i n t f(a v g =a v g);r e t u r n 0;例 求 1-1 0 0 之间的奇数之和,在求1-1 0 0 之间的偶数之和:#i n cl u d e i n t m a
49、i n(v o i d)(i n t i;i n t s u m l =0;奇数和i n t s u m 2 =0;偶数和f o r (i=l;i 1 0 1;+i)(i f (i%2 =1)s u m l +=i;)e l s es u m 2 +=i;)p r i n t f (奇数和=%d n”,s u m l);p r i n t f (偶数和=%d n”,s u m 2);r e t u r n 0;多个f o r 循环的嵌套使用:多个f o r 循环的嵌套使用f o r (1;2;3)/If o r (4;5;6)/2A;3B;/4整体是两个语句,1 2 3是第一个语句4是第二个语
50、句整体是两个语句。上图中,先执行1,在执行2,如果2成立,执行4,在执行5,如果5成立执行A,在执行6,在执行5,如果5不成立,意味着里面的循环结束,然后执行3,在执行2,如果2成立又执行4,在执行5,如果5成立在执行6,在执行5,如果5不成立,在执行3,在执行2,如果2不成立,意味着本次循环结束,在执行B,在上图中,需要注意的是,如 果2成立的话,那么每次4都需要执行。for(1;2;3)for(4;5;6)(A;B,整体是卜个语句J/3I A;B;for(4;5;6)C;)整体是一个语句|【复习进制的知识】进制之间的转换:1、什么叫n进制逢n进一2、把 r 进制转成十进制如 2 3 4 为