C语言设计(教学).ppt

上传人:本田雅阁 文档编号:2102489 上传时间:2019-02-14 格式:PPT 页数:470 大小:5.11MB
返回 下载 相关 举报
C语言设计(教学).ppt_第1页
第1页 / 共470页
C语言设计(教学).ppt_第2页
第2页 / 共470页
C语言设计(教学).ppt_第3页
第3页 / 共470页
亲,该文档总共470页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《C语言设计(教学).ppt》由会员分享,可在线阅读,更多相关《C语言设计(教学).ppt(470页珍藏版)》请在三一文库上搜索。

1、,C语言程序设计,教材:c语言程序设计教程 孙辉 吴润秀编著 参考资料: 1、c程序设计(第二版)谭浩强著 清华大学出版社 2、轻松学习C程序设计 何勤著 中国电力出版社,第1章 C 语言简介,第2章 顺序程序设计,第3章 分支结构,第4章 循环结构,第8章 结构与共用体,第11章C windows程序 设计简介,第10章 预处理命令,第7章 指针,第5章 函数,第9章 文件,第6章 数组,计算机系统,硬件系统,软件系统,运 算 器,控 制 器,存 储 器,输入设备,输出设备,系统软件,应用软件,操作系统,程序设计语言 如C语言,BASIC,VB,第一章 程序设计语言概述,2.数据结构 指的是

2、数据与数据间存在一种或多种特定关系。 在程序设计语言中,与数据结构密切相关的便是数据的类型和数据的存放。,一.软件、程序、程序设计(了解几个基本概念),1.数据 是计算机程序处理的对象,可以是整数、实数、字符,也可以是图像、声音等的编码表示。,3.程序的概念,计算机程序就是由人事先规定的计算机完成某项工作的操作步骤。每一步骤的具体内容由计算机能够理解的指令来描述,这些指令告诉计算机做什么和怎样做。,4.软件=程序+文档。,5.程序设计及程序设计语言 程序设计就是编写程序的过程。 编写计算机程序所使用的语言称为程序设计语言。,高级语言是相对低级语言而言的。低级语言是计算机能直接识别的语言(机器语

3、言)或符号化的机器语言(汇编语言),高级语言是一种通用的,面向用户的各类需要,其语言格式接近于自然语言或接近于数学函数形式。,二. 程序设计语言,机器语言,汇编语言,高级语言,要使计算机识别高级语言,必须要解释或编译,C语言是一种高级设语言,用它所编写的程序,必须要经过编译和连接才能执行。,1、程序设计语言发展过程,2. 高级语言分类,1.面向过程:处理任务时,告诉计算机怎么做,必须把解题的步骤一步一步事先写好,再让计算机去执行,这种语言称为过程式语言。如:BASIC,FORTRAN,PASCAL,C,2.面向对象:处理任务时,告诉计算机做什么不必指出怎么做,计算机就能完成所要求的任务.这种语

4、言称为非过程式语言.如:C+,VC,VB,VF,SQL查询语言等。,3. 常用高级语言,面向过程的语言。它是最早也是最简单的计算机语言,非常实用。,BASIC语言,PASCAL语言是一种有着良好结构化特性的高级语言,面向过程的语言,它是在软件危机的70年代所创造的一种完全符合结构化原则,有着严格的语法规则的高级语言。该语言在语言教学中有着良好的声誉,但在实际使用中,利用该语言开发软件并不多。所以许多人认为PASCAL 只是一种教学语言。,PASCAL语言,FORTRAN 语言,FORTRAN是最早出现的高级语言之一。它是针对科学计算而设计的一种高级语言(早期计算机的主要任务就是进行科学计算),

5、到目前为止,FORTRAN仍主要是用于科学计算。 C语言出现后,有人给FORTRAN语言判了死刑,但事实上,在科学计算上,尤其是在大规模科学计算上,FORTRAN仍是首选的高级语言。FORTRAN 自身也在发展,目前,FORTRAN已发展到90和95版本。,VISUAL BASIC,是由微软公司开发的,支持WINDOWS平台下开发的BASIC语言。它支持面向对象的开发,是目前WINDOWS平台下流行的开发工具之一。,VISUAL FOXPRO,在实际应用中,还有许多其它的高级语言或开发工具。一般来说,每一种高级语言或开发工具都有它的使用范围,到目前为止,还没有一种语言能包打天下。,JAVA,三

6、. C 语言学习中要注意的问题及学习方法,2 做大量的习题,4多实践,只有通过上机实践才能真正掌握C语言,1 掌握最基本的语法概念:如c程序的组成、标识符、常量、变量、数据类型等。,例1 .下列描述正确的是: A)C语言比其它语言好 B)C语言可以不用编绎就能被计算机识别 C)C语言格式接近于自然语言或接近于数学函数形式 D)C语言出现最晚,有其它高级语言的所有优点,例2.用c语言编写的代码程序 A)可立即执行 B)是一个源程序 C) 经过编译即可执行 D)经过编译解释后方可执行,结束语,纸上谈兵学不出程序设计本领;只有大量上机、编程、调试,才能掌握。 学好程序设计语言的唯一途径是上机。 你的

7、编程能力和你在机器上投入的时间成正比。,1 C程序由哪几部分组成? 2 C语言的基本符号? 3 C语言的数据类型有哪些? 4 C语言的常量概念? 5 C语言的变量概念?,第二章顺序结构,例1.1 最简单的C程序,这也是世界上第一个C程序。,/* exam21.c */ /* 最简单的C程序 */ #include main() printf(Hello,world!);/*输出语句*/ ,例1.2 已知圆的半径为R(R是一个可变的量),求圆的面积和周长,用计算机求解,程序如下:,/* exam22.c */ /* 计算圆的面积和周长 */ #include main() float r,are

8、a,s; scanf(%f, ,例1.3 从键盘输入3个整数,求3个数的和与积,并将结果输出在屏幕上输出。,/*m22.c */ #include main() int a,b,c,s1,s2; scanf(%d%d%d, ,1.注释,4.数据说明,5.数据输入,6.数据处理,7.结果输出,2.头文件,3.主函数,2.1 C 程序的基本组成,一个完整的C程序包括下面几部分:,7 .注释,3.变量说明,4. 数据输入,5 .数据处理,6. 结果输出,1.头文件,2.主函数,#include,main(),int a,b,s;,/或 /* */,printf();,s=a+b;,scanf();,

9、说明,2.一个C源程序可由一个或多个函数组成,函数是C程 序的基本组成单位。,3.一个C源程序必须包含一个main函数, main函数可以在程序任意位置,程序的执行总是main函数开始,到main函数结束。,1. #include 为头文件,通常称为命令行,必 须用#号开头,最后不加分号,因为它不是C语 句,不同的头文件包含不同的信息。,5.c语言本身没有输入输出语句,是通过函数scanf() 与printf()来完成输入输出的。因此scanf(),printf()不是c语句。,6.说明多个变量时用逗号隔开,最后用分号,也可分多行 说明,分号是c语句组成部分。 如:int a=1,b,c; 等

10、价于 int a=1; int b; int c;,4.C程序中,注释语句可以放在程序任意合适的位置, 但不能把单词分开。,2.2 C语言的基本符号 基本符号集(ASCII字符集) 阿拉伯数字10个:0、1、2、9 大小写英文字母各26个:A,B,C,Z,a,b,c,z 下划线:_ 特殊符号:主要是运算符和操作符,保留字/关键字(32个) 是编译系统固有的,用做语句名、类型名的标识符。不允许作为用户标识符使用,标识符 字符序列,用作常量、变量、函数、文件指针、类型的名字。 用户标识符 保留字/关键字 预定义标识符,用户标识符: 用户根据需要对C程序中用到的变量、符号常量、自己的函数或文件指针进

11、行命名,形成用户标识符。构成规则: 由英文字母、数字、下划线组成,且第一个字符不能是数字; 英文字母区别大小写; 通常识别前8个字符; 取名遵循简洁明了和见名知意。,预定义标识符 允许用户作其他其途,但将失去系统规定的原意。 例define、include,例1可在C程序中用作用户标识符的一组标识符是 A)12ab B)f-at _ C)aw1e D)b6ty,例2 以下关于c语言标识符的描述中,正确的是: A)标识符可以由汉字组成 B)标识符只能以字母开头 C)关键字可以作为用户标识符 D)IF可以作为用户定义的合法标识符,例3 以下不能定义为用户标识符是 A)scanf B)Void C)

12、_3com D)int,例4可在C程序中用作用户标识符的一组标识符是 A)1vod B) as_b3 C) For D) 2c Define _123 -abc Do, WORD IF c.se SIG,2.3 数据的类型(为什么要对数据进行分类?),在c语言中,变量的数据的类型一定要先定义后使用。,float a,b,c; 定义了a,b,c 为实型变量,int a,b,c; 定义了a,b,c 为整型变量,short int a,b,c; 短整型,long int a,b,c; 长整型,double a,b,c; 双精度,unsigned int a,b,c; 无符号整型,char a,b,c

13、; 定义了a,b,c, 为字符型变量,Turbo c基本数据类型所占宽度与数据范围,例 已知一个的同学的三门成绩分别为68,89,93,求 这个学生的总分与平均分。,程序如下:,/* a5.c */ #include main() float a1=67,a2=89,a3=93,s1,s2; s1=a1+a2+a3; s2=s1/3; printf(s=%f,l=%f,s1,s2); ,1.注释,2.头文件,4.数据定义,5.数据输入,6.数据处理,7.结果输出,3.主函数,常量,变量,2.4 常量,一.直接常量:是在程序中直接引用的数据。,分为:整型、实型、字符型、字符串,以数据的原型出现!

14、,1.整型常量 可以用十进制、八进制、十六进制形式表示,整型常量只有数字,不带小数(如12、-1、0)。 八进制用数字0 开头例如:010、011、017等。 十六进制用0x或0X开头,例如:0x1、0Xde、0xf等。,例1. 以下选项中正确整型常量是 A)12. B) -12 C) 1,000 D) 4 5 6,例2.以下选项中正确的整型常量是 A ) 10110B B)0386 C)0Xfaa D)x2a2,2. 实型常量,二种表现形式:,十进制形式:由数字和小数点及正负号组成;,指数形式:由十进制小数 + e(或E) + 十进制数整数 三部分组成。,例如: 3.4 4.0 0.3,十进

15、制小数,e(或E),十进制数整数,例如: 12.5e-6 表示12.510-6,C语言的语法规定,e之前必须要有数字,且E后面的指数必须为整数。如e3, .5e3.6 .e3等都是不合法的指数形式。,例1.以下选项中不正确的实型常量是 A) 2.607E-1 B) 0.8103e 2 C) -77.77 D) 456e-2,例2.以下选项中正确的实型常量是 A) 5E2.0 B)E-3 C)2.2E1 D)1.3E,例3.以下所列的C语言常量中,错误的是( ) A)0xFF B)1.2e0.5 C)2 D) 72,3 字符型常量,二种表现形式:,用单引号括起来的一个字符;,用单引号括起来的由反

16、斜杠()引导的转义字符。,如:A、 1、? 等。,如: n 101 x41,在统计字符个数时,只能记为一个字符,只能是英文的单引号,常用的转义字符常量的含义,一个字符的多种表示方法:,65D(十进制)=41H(十六进制)=101Q(八进制) 因此,字符A可以表示为A、x41、101、65、0x41、0101。,要避免的错误:,表示单引号: 表示双引号: 表示斜线: ,(1)下面四个选项中,合法的字符常量是: A)B B)101 C)68 D)D,(2)下面四个选项中,正确的字符常量是: A)084 B)x43 C)ab D)0,(3)下面四个选项中,均是合法的转义字符的选项是: A) B) C

17、)018 D)0 017 f 101 n , xab x1f,()已知大写字母A的ASCII码值是65,小写字母a的ASCII 码是97,则用八进制表示的字符常量102是 A)字符A B)字符a C)字符c D)字符B,二、符号常量 是用标识符来表示一个数据: 如 #define PI 3.14159,字符串常量: 用双引号括号,如STRI,ABDN, (表示空)等。,定义形式: #define 标识符 常量数据,在程序预处理时,凡是出现标识符PI的地方都将用数据3.14159来替换。,1.变量的命名规则要符合标识符(见标识符) 2.变量的基本类型:整型变量,实型变量,字符变量 3.先定义,再

18、使用。如:int a,b; float x,y;char a; 4.C语言中定义的变量,代表内存中的一个地址 5.变量的赋值符为=,赋值表达式为:变量=表达式。 t=x+5;p=q=r=9, x=x+1,x=(y=1)-(z=2)等, 但x= =9,a+b=c非法 6.赋值表达式加分号就变成赋值语句。,2.5 变量,变量: 在程序运行过程中,其值能被改变的量,如:float a1=67,a2=89,a3=93,s1,s2;,2.6 运算符及表达式,C语言提供了多种运算符,有些运算符看起来很简单,但不小心很容易出错(18),1.算术运算符 (+ - * / %) 2.自加自减算符(+ - -)

19、3.关系运算符 ( = | &) 6.赋值运算符 (=) 7.条件运算符 (?:) 8.逗号运算符 (,) 9.指针运算符 (* &) 10.求字节运算符 (sizeof) 11.强制类型转换运算符 (类型) 12.分量运算符 (. -) 13.下标运算符 ( ) 14.其它 调用运算符(),一、算术运算符,+(加),-(减、取负),*(乘),/(除),%(模运算),运算符的优先级为:,(),*, / , %,高,低,+,-,在四则运算中,有先乘除,后加减的规则。同样,在程序中,也存在那个运算符先进行运算,那个后进行运算的问题,这些,称为运算符的优先级。,一、 除法 a/b (b不能为0) (

20、1)a b两数都是或一个是实数结果是实数 7/2.0=3.500 (2) a b两数都是整数结果是整数7/2=3, 9/2=4,-13/3=-4,取模运算即取余运算。运算符两边必须是整型数据,否则出错。,例: 6 % 2,5 % 2,,输出结果为:0 1,关于取模运算的说明,对a%b,若a或b有负数,则对a与b的绝对值取余,余数符号与a的符号相同 例: -7%5 余数为-2 7%-5 余数为2,二、算术表达式,用算术运算符和括号将常量,变量及函数连起来的式子称为算术表达式。,例1 代数式 3x2+x-2,在计算机中,不能直接对代数式进行运算,而要将它转化成相应的算术表达式。,相应的算术表达式为

21、:3*pow(x,2)+x-2,例2 代数式,相应的算术表达式为:a/2-(6*y)/(5*x),三、自加自减运算符,作用:使 变量 的值增1或减1,形式:+i,- -i, i+,i- -,注意: +i(-i)是先将i加1(减1)后再对i运算 i+ (i- )是先对i运算再将i加1(减1),例 / exam14.c main() int a,b; a=5; b=5; printf( +a=%d,+a); Printf( b+=%d,b+); ,输出结果: +a=6 b+=5,i=i+1 (i=i-1),四、赋值运算符及赋值表达式,赋值运算符:=,赋值表达式:变量=表达式,例:t=5,复合运算符

22、:在赋值运算符前加上某些特定的运算符,p=q=r=9,x=(y=1)-(z=2),表达式的值为:9,表达式的值为:-1,10种复合运算符:,+= -= *= /= %= = &= = |=,注意:赋值运算符按自右而左的结合顺序,t=x+5,例:,i+=j+8,i=i+(j+8),x*=j+4,x=x*(j+4),注意:复合运算符相当于赋值号后有一括号,实际上是自右至左进行运算的。,赋值语句:赋值表达式加上分号,例:将赋值表达式改为赋值语句,i+=j+8,x=(y=1)-(z=2),注意:赋值表达式与赋值语句是两个不同的概念。,i+=j+8;,x=(y=1)-(z=2);,五、逗号运算符,逗号运

23、算符:,表达式1,表达式2,计算过程:先计算表达式1的值,再计算表达式2的值,逗号表达式的值为表达式2 的值。,例:x=3+5,4+6;,x的值为8,例:x=(3+5,4+6),x的值为:10,例:x=3+5, x+6,逗号表达式的值为:14,x=3+5 赋值表达式,4+6 算术表达式,赋值运算符优先,例:y=(3*5,8+9); 例:y=(x=6,x+8);,表达式的值为10,则y=17,则y=14,六、运算符的优先级(书30页),( ),* ,/ , %,高,低,+,-,,,=,-,+,-,例:,i=5; i=+i*4+2;,i的值为:,26,i=5; i=i+*4+2;,i的值为:,23

24、,左边的例子的结果很难解释,碰到此类问题,只要上机试一试就知,太多的解释并无多大的帮助,程序本身就是一些规则。,逻辑运算符和逻辑表达式,一、逻辑量的概念,逻辑值: 真、假,或 T 、F 表示方式: 0 表示假,非0表示真 系统真值: 1,二、关系运算符,关系运算符 含义 例子 结果 优先级 大于 4+69 = 大于或等于 6=5 = 小于或等于 8=7 = 等于 2+3=6 != 不等于 9+3!=12,T T T F F F,相同,高,相同,低,四、逻辑运算符,!(非), &(与), | (或),1、运算符,2、运算法则(T 真, F 假)(书24页表2.5),值 逻辑非 逻辑与 逻辑或 X

25、 Y ! X X & Y X| Y T T T F F T F F,F T T,F F T,T F T,T F F,五、逻辑表达式,用逻辑运算符连接关系表达式的式子称逻辑表达式。,例 用逻辑表达式表达下述数学式,(1) 080 (3) 10x 30, 50 x 90,相应的逻辑表达,(1) 0x & x10,(2) x180 (或 !(x=60 & x=80),(3) (x=10 & x=50 & x=90),x,10,0,60,80,x,10,50,90,x,30,x,x,六、逻辑表达式中的优先级,1、逻辑运算符的优先级,!,&,|,高,低,条件运算符,格式:表达式1?表达式2:表达式3,1

26、、若表达式1的值为真(非0),则条件表达式的值为表达式2的值 2、若表达式1的值为假(0),则条件表达式的值为表达式3的值 3、条件运算符的结合方向为自右至左 4、条件运符优先于赋值运算符,低于关系运算符,例:y=69?2*6:18 则y= 例:a=5,b=3 y=ab?a+b:b*a 则y=,18,8,2.7 C 程序的类型转换,在表达式中出现不同的类型的数据时,系统要将不同类型数据转换成同一种类型,然后才能进行运算,1 转换规则:,double,long,unsigned,int,char,short,float,高,低,说明:,1 运算时,表达式的类型以最高类型为准。,2 为保证精度,两

27、个float类型运算,先转换成double类型再运算。,2 赋值表达式中的类型转换,在赋值表达式中,表达式的类型为表达式左侧变量的类型,如果右侧的类型与左侧不一致,则系统强制将右侧化成与左侧一致的类型。,3 强制类型转换,可以利用类型转换符将表达式的类型强制转换成指定的类型。,格式: (类型名)(表达式),例:(float)4,将整型量4强制转换成单精度,注意括号,例:(char)(23.2+45),将表达式结果强制转换成字符,运算符及表达式汇总,1. 算术运算符 (+ - * / %) 3.复合运算符 (+= -= *= /= %=) 4. 关系运算符 ( = = !=) 5. 自加自减运算

28、符 (+ -) 6. 逻辑量 (T真(1) F假(0) 7. 逻辑运算符 (! & |) 8. 赋值运算符 (=) 9. 条件运算符 (? :) 10. 逗号运算符 (,) 11. 自动类型转换 (高)double-(char) 12. 强制类型转换运算符 (float) (类型),习题,例2.4 以我国1992年工业产值为100,如果以9%的年增长率增长计算到2000年时的工业产值。,1 算法分析:,要找出问题的数学模型。设r为年增长率,n为年数,s为第n年的总产值。 则有 s=100*(1+r)n,2 数据结构,年增长率r、年数n、第n年的总产值s。而这几个量中,年增长率肯定是小数(浮点)

29、型数据,年数是整数(整型),总产值不会是整数,应为浮点数。这些数据都要放在相应的变量中。 int n; float r ,s;,/ exam24.c #include #include main() int n; float r,s; n=2000-1992; r=0.09; s=100*pow(float)(1+r),(float)n); printf( 2000年的产值为%f:,s); ,pow为求幂的函数 格式 pow(底,指数) 底,指数均为浮点数。,强制类型转换,3 源程序代码,此例中,只能算到2000年,且年增长率为9%时的工业产 值。如果将工业产值改为10%,或者要算到其它年份,

30、必须要 修改源程序,使用不便。,方法2:用scanf函数重新编写程序。,/ exam24.c #include #include main() int n,year; float value,rate; printf(请输入年份和年增长率); scanf(%d,%f, ,例 3.1 求一元二次方程,的根,1、算法分析:,2、数据结构: 由于问题简单,只需用到一些单精度实数,3、伪代码,输入方程系数 a,b,c 计算判别式 d=b*b-4*a*c if 判别式大于等于 0 then 计算两个实根 定位输出光标 打印结果 else 计算实部 计算虚部 定位输出光标 打印结果 end program

31、,#include #include main() float a,b,d,c,x1,x2,p,q; printf( 输入方程系数: ); scanf(%f,%f,%f, ,求平方根 的函数,例2.4 小写字母转盘,用户输入一个小写字母,如输入a,则显示b,输入b则显c,以此类推,输入z则显示a。,1.先定义字符变量c来接受从键盘输入的值时char c; 2.通过c-a求出c中的字母在字母序列中的序号(a为0,z为25), c-a+1得出下一个字母序号,表达式(c-a+1)%26,使序号26 变成0,这样字母z的序号变成0,再加上a就转成字母a,即 转换公式为:(c-a+1)%26+a,#in

32、clude main() char c; scanf(%c,例2.5 鸡兔同笼,已知鸡兔总头数为H(Heads),总腿数为F(Feet),问鸡兔各有多少只?,1 算法分析:,(1)建立数学模型 设鸡为x只,兔为y只,由题意有: x+y=h (1) 2*x+4*y=f (2),(2)求解方程,找出x,y的具体求解公式:,以下用消元法找出方程的解,(2)式-2(1)式,注意:计算机不会自己建数学模型,也不会自己解方程!,2y=f-2h,y=(f-2h)/2,4(1)式-(2)式,2X=4H-F,X=(4H-F)/2,2 数据结构,程序中要用的数据,存放头H、脚数量F的变量,存放方程解(鸡x、兔y数

33、量)的变量,存放方程判别式的变量等。对于头、脚的数量,肯定是整型变量,方程的解理论上讲是整型,但在求解方程时要进行运算,为了避免发生错误,最好是用浮点数据。,3 伪代码(由于此问题比较简单,也可直接编写程序)。,说明变量 x,y,f,h 输入数据 f,h 计算x,y 打印结果,伪代码是一种程序设计工具,介于程序语言与自然语言之间,伪代码不能被计算机编译,但它很容易翻译成高级语言.,/exam25.c #include main() float x,y; int f,h; printf(Input the Heads and Feet); scanf(%d,%d, ,4 源程序代码,提示输入数据

34、的内容,例2.6:从键盘输入字母,若输入小写转化为大字母输出,输入大写原样输出。,分析:1.小写字母与大写字母的ASCII值相差32,2.小写字母的范围表示为 (x=a&x=z) 3.要使用条件运算符 ?:,#include main() char x; printf(please input a char:n); scanf(%c,分支结构,问题:,1、从键盘输入一个数,如果该数为正,打印,否则不打印;,2、将考试成绩不及格的学生名单打印出来;,3、解一元二次方程,求出相应的实根或复根。,对于上述或类似问题,需要进行某种判断, 并根据不同情况进行不同的处理,怎样进行程 序设计?,第三章 分支

35、结构程序设计,解决办法:,1、引入新的程序结构,分支结构, 有时也称 判断结构 或 选择结构。,2、有三种形式可进行分支结构的程序设计,A、 if 结构 B、多重选择结构(switch语句) C、无条件转移结构(goto语句),if 语句,if 条件真 语句块1 else 语句块2,if,else 为关键字 如果语句块超过一条语句,则要用一对大括号将语句块括起作为复合语句 esle 可省,语法:,说明:,#include main() char x; printf(please input a char:n); scanf(%c, ,if (逻辑表达式) 真 复合语句 1 else 复合语句

36、2 ,真否?,复合语句1,复合语句2,执行复合语句后的语句,F,T,执行复合语句后的语句,ifelse 的执行过程,分支结构 if语句,if(逻辑表达式),例:求,y=,2*x (x=0),x2 (x0),#include main() float y,x; scanf(%f, ,例 3.6 将输入的字母转化为小写字母。,1 算法分析,在计算机中,处理英文字母,其实是处理它的ASCII码值。将大写字母变成小写字母,就是将大写字母的ASCII码值变为相应的小写字母的ASCII码值。,大写字母的ASCII值比小写字母的ASCII值小32,故将相应字母的ASCII值加32就变成了小写字母。,程序设计

37、时,要注意如果输入的不是大写的字母,则不用转换。,/源代码 #include main() char x; printf(please input a char:n); scanf(%c,例:从键盘输入某一年,如1956,判断这一年是否是闰年,若是 就显示yes,若不是就显示no。 注:闰年的条件为(1)能被4整除,但不能被100整除 或 (2)能被4整除,且又能被400整除,#include main() int b; printf(please input years:n); scanf(%d,if(逻辑关系表达式 ),用关系运符, =, 7+8); if(b=7!=73);,例 #inc

38、lude main() int a,b; a=10= =56; b=(10= =5)6; printf(%d,%dn,a,b); 输出结果:,0,1,例 #include main() int a,b; a=6*77+8; b=7!=73; printf(%d,%dn,a,b); 输出结果:,1,1,if语句的变形及嵌套,一、if 语句的变形,1、省略 else语句 语法: if 逻辑表达式真 语句体 ,2、增加 else if 语句,语法: if 逻辑表达式1真 语句体 1 else if 逻辑表达式2真 语句体 2 . . else 语句体 N ,if (逻辑表达式) 真 复合语句 1 ,

39、真否?,复合语句1,执行复合语句1后的语句,F,T,if 的执行过程,if语句两种变形,if(逻辑表达式),例:从键盘输入一个整数,若为正,则输出该数的平方,否则不输出。即:y=x2(x0),#include main() int x,y; scanf(%d, ,第一种变形:省略else语句,执行复合语句1后的语句,if (逻辑表达式1) 真 复合语句 1 if (逻辑表达式2) 真 复合语句 2 . if (逻辑表达式n) 真 复合语句n ,第一种变形:省略else语句,从键盘输入一个数,求y的值,y=,2*x (x0),0 (x=0),x2 (x0),当条件较多时,可用多个省略了else的

40、if语句。,#include main() float y,x; scanf(%f, ,第二种变形:增加else if语句,语法: if 逻辑表达式1真 语句体 1 else if 逻辑表达式2真 语句体 2 else if 逻辑表达式3 真 . 语句体 3 . . else 语句体 N ,ifelse if 的执行过程,例:求,y=,2*x (x0),x2 (x0),0 (x=0),例:求,y=,2*x (x0),x2 (x0),0 (x=0),#include main() float y,x; scanf(%f, ,演示1,例 3.2 商店售货,按购买货物款的多少分别给予不同的 优惠折扣

41、,编程计算实际应付货款。,购货不足250元,没有折扣; 购货250元(含250元,下同),不足500元,减价5%; 购货500元,不足1000元,减价7.5%; 购货1000元,不足2000元,减价10%; 购货2000元及以上,减价15%;,1、算法分析: 设购物款为M,折扣为D,则D可表示为: D=0 (M250) D=0.05 (250 M500) D=0.075 (500 M1000) D=0.1 (1000 M2000) D=0.15 (2000M),2、源程序清单 #include main() float m,d,t; printf(请输入购物金额: ); scanf(%f, ,

42、输入购物款: 249,实际应付款:249,输入购物款: 500,实际应付款:462.5,演示2,例 3.3 用else if购物折扣程序的另一个写法,改写后,程序更清晰,执行时间更省。,#include main() float m,d,t; printf(请输入购物金额: ); scanf(%f, ,if (逻辑表达式) 真 复合语句 1 else 复合语句 2 ,分支结构 if语句,第一种变形:省略else语句,if (逻辑表达式) 真 复合语句 1 ,第二种变形:增加else if语句,语法: if 逻辑表达式1真 语句体 1 else if 逻辑表达式2真 语句体 2 else if

43、逻辑表达式3 真 语句体 3 . else 语句体 N ,if (逻辑表达式1) 真 复合语句 1 if (逻辑表达式2) 真 复合语句 2 . if (逻辑表达式n) 真 复合语句n ,当条件较多时,可用多个省略了else的if语句。,二、 if 语句的嵌套,在一个 if 语句中可以包含另外一个 if 语句。,if 逻辑表达式 T if 逻辑表达式T 语句块 2 else 语句块3 else 语句块 4,else 语句与最近的 if语 句配套,大括号要配对。,语句块1,以下程序的输出结果是 #inlcude main() int x=2,y=-1,z=2; if(xy) if(y0) z=0

44、; else z+=1; else printf(%dn,z); A)3 B)2 C)1 D)0,语句块1,注意:,演示3,二、 if 语句的嵌套,在一个 if 语句中可以包含另外一个 if 语句。,if 逻辑表达式 T 语句块 1 else if逻辑表达式 T 语句块3 else 语句块 4,else 语句与最近的 if配 套,大括号要配对。,语句块2,以下程序的输出结果 是: #inlcude main() int x=2,y=-1,z=2; if(xy) z=0; else if(y0) z+=1; else z*=2; printf(%dn,z); A)3 B)2 C)1 D)0,语句

45、块2,注意:,演示4,#include main() int x,y,z; printf(Iput x,y,z:); scanf(%d,%d,%d, ,例 3.5,演示5,嵌套不能太深,一般以三层为限, 嵌套太深,容易出错。,嵌套演示程序,例2.4 小写字母转盘,用户输入一个小写字母,如输入a,则显示b,输入b则显c,以此类推,输入z则显示a。,#include main() char c; c=getchar(); c=(c-a+1)%26+a; printf(%cn,c);,#include main() char c; c=getchar(); if(c=a ,用if语句编写,例2.8 输入一个正整数,判断是否是5又是7的倍数,如是显示yes,否则显示no。,#include main() int x; printf

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1