C语言设计(教学)

上传人:仙*** 文档编号:171539467 上传时间:2022-11-27 格式:PPT 页数:470 大小:5.11MB
返回 下载 相关 举报
C语言设计(教学)_第1页
第1页 / 共470页
C语言设计(教学)_第2页
第2页 / 共470页
C语言设计(教学)_第3页
第3页 / 共470页
点击查看更多>>
资源描述
C C语言程序设计语言程序设计教材:教材:c c语言程序设计教程语言程序设计教程 孙辉孙辉 吴润秀编著吴润秀编著参考资料:参考资料:1 1、c c程序设计(第二版)谭浩强著程序设计(第二版)谭浩强著 清华大学清华大学出版社出版社2 2、轻松学习、轻松学习C C程序设计程序设计 何勤著何勤著 中国电力出中国电力出版社版社计算机系统计算机系统硬件系统硬件系统软件系统软件系统运运 算算 器器控控 制制 器器 存存 储储 器器输入设备输入设备输出设备输出设备系统软件系统软件应用软件应用软件操作系统操作系统程序设计语言程序设计语言如如C语言语言,BASIC,VB第一章第一章 程序设计语言概述程序设计语言概述 2.2.数据结构数据结构指的是数据与数据间存在一种或多种特定关系。指的是数据与数据间存在一种或多种特定关系。在程序设计语言中,与数据结构密切相关的便是在程序设计语言中,与数据结构密切相关的便是数据的类型和数据的存放。数据的类型和数据的存放。一一.软件、程序、程序设计软件、程序、程序设计(了解几个基本概念)(了解几个基本概念)1.1.数据数据是计算机程序处理的对象,可以是整数、实数、是计算机程序处理的对象,可以是整数、实数、字符,也可以是图像、声音等的编码表示。字符,也可以是图像、声音等的编码表示。3.程序的概念程序的概念计算机程序就是由人事先规定的计算机完成某计算机程序就是由人事先规定的计算机完成某项工作的操作步骤。每一步骤的具体内容由计算机项工作的操作步骤。每一步骤的具体内容由计算机能够理解的指令来描述,这些指令告诉计算机能够理解的指令来描述,这些指令告诉计算机做做什么什么和和怎样做怎样做。4.4.软件软件=程序程序+文档。文档。5.5.程序设计及程序设计及程序设计语言程序设计语言 程序设计就是编写程序的过程。程序设计就是编写程序的过程。编写计算机程序所使用的语言称为程序设计语言。编写计算机程序所使用的语言称为程序设计语言。高级语言是相对低级语言而言的。高级语言是相对低级语言而言的。低级语言低级语言是是计算机能直接识别的语言计算机能直接识别的语言(机器语言机器语言)或符号化的机或符号化的机器语言器语言(汇编语言汇编语言),高级语言是一种通用的,高级语言是一种通用的,面向面向用户的各类需要用户的各类需要,其语言格式接近于自然语言或接其语言格式接近于自然语言或接近于数学函数形式。近于数学函数形式。要使计算机识别高级语言要使计算机识别高级语言,必须要,必须要C C语言是一种高级设语言,用它所编写的程序,必须语言是一种高级设语言,用它所编写的程序,必须要经过要经过才能执行。才能执行。1.1.面向过程面向过程:处理任务时处理任务时,告诉计算机告诉计算机怎么做怎么做,必须必须把解题的步骤一步一步事先写好把解题的步骤一步一步事先写好,再让计算机去执行再让计算机去执行,这这种语言称为过程式语言。如种语言称为过程式语言。如:BASIC,FORTRAN,PASCAL,C:BASIC,FORTRAN,PASCAL,C2.2.面向对象面向对象:处理任务时处理任务时,告诉计算机告诉计算机做什么做什么不必指不必指出出怎么做怎么做,计算机就能完成所要求的任务,计算机就能完成所要求的任务.这种语这种语言称为非过程式语言言称为非过程式语言.如:如:C+,VC,VB,VF,SQLC+,VC,VB,VF,SQL查询语言查询语言等。等。面向过程的语言。它是最早也是最简单的计算面向过程的语言。它是最早也是最简单的计算机语言,非常实用。机语言,非常实用。PASCALPASCAL语言是一种有着良好结构化特性的高级语语言是一种有着良好结构化特性的高级语言,面向过程的语言,它是在软件危机的言,面向过程的语言,它是在软件危机的7070年代所年代所创造的一种完全符合结构化原则,有着严格的语法创造的一种完全符合结构化原则,有着严格的语法规则的高级语言。该语言在语言教学中有着良好的规则的高级语言。该语言在语言教学中有着良好的声誉,但在实际使用中,利用该语言开发软件并不声誉,但在实际使用中,利用该语言开发软件并不多。所以许多人认为多。所以许多人认为PASCAL PASCAL 只是一种教学语言。只是一种教学语言。FORTRANFORTRAN是最早出现的高级语言之一。它是针对科是最早出现的高级语言之一。它是针对科学计算而设计的一种高级语言(早期计算机的主要任学计算而设计的一种高级语言(早期计算机的主要任务就是进行科学计算),到目前为止,务就是进行科学计算),到目前为止,FORTRANFORTRAN仍主要仍主要是用于科学计算。是用于科学计算。C C语言出现后,有人给语言出现后,有人给FORTRANFORTRAN语言判了死刑,但事语言判了死刑,但事实上,在科学计算上,尤其是在大规模科学计算上,实上,在科学计算上,尤其是在大规模科学计算上,FORTRANFORTRAN仍是首选的高级语言。仍是首选的高级语言。FORTRAN FORTRAN 自身也在发展自身也在发展,目前,目前,FORTRANFORTRAN已发展到已发展到9090和和9595版本。版本。是由微软公司开发的,支持是由微软公司开发的,支持WINDOWSWINDOWS平台下开发平台下开发的的BASICBASIC语言。它支持面向对象的开发,是目前语言。它支持面向对象的开发,是目前WINDOWSWINDOWS平台下流行的开发工具之一。平台下流行的开发工具之一。在实际应用中,还有许多其它的高级语言或开发在实际应用中,还有许多其它的高级语言或开发工具。一般来说,每一种高级语言或开发工具都有工具。一般来说,每一种高级语言或开发工具都有它的使用范围,到目前为止,还没有一种语言能包它的使用范围,到目前为止,还没有一种语言能包打天下。打天下。2 2 做大量的习题做大量的习题实践实践,只有通过上机实践才能真正掌握只有通过上机实践才能真正掌握C C语言语言1 1 掌握最基本的语法概念:如掌握最基本的语法概念:如c程序的组成、标识符、常量、变量、数据类型等。例例1.下列描述正确的是:下列描述正确的是:A)C语言比其它语言好语言比其它语言好 B)C语言可以不用编绎就能被计算机识别语言可以不用编绎就能被计算机识别C)C语言格式接近于自然语言或接近于数学函数形式语言格式接近于自然语言或接近于数学函数形式D)C语言出现最晚,有其它高级语言的所有优点语言出现最晚,有其它高级语言的所有优点例例2.用用c语言编写的代码程序语言编写的代码程序A)可立即执行)可立即执行 B)是一个源程序是一个源程序 C)经过编译即可执行经过编译即可执行 D)经过编译解释后方可执行经过编译解释后方可执行结束语结束语 纸上谈兵纸上谈兵学不出程序设计本领;只有学不出程序设计本领;只有大量上机、编程、调试,才能掌握。大量上机、编程、调试,才能掌握。学好程序设计语言的唯一途径是上机。学好程序设计语言的唯一途径是上机。你的编程能力和你在机器上投入的时间你的编程能力和你在机器上投入的时间成正比。成正比。1 C1 C程序由哪几部分组成?程序由哪几部分组成?2 C2 C语言的基本符号?语言的基本符号?3 C3 C语言的数据类型有哪些?语言的数据类型有哪些?4 C4 C语言的常量概念?语言的常量概念?5 C5 C语言的变量概念?语言的变量概念?第二章顺序结构第二章顺序结构例例1 1.2.2 已知圆的半径为已知圆的半径为R(RR(R是一个可变的量是一个可变的量),),求圆求圆的面积和周长的面积和周长,用计算机求解,程序如下用计算机求解,程序如下:/*exam22.c*/*计算圆的面积和周长计算圆的面积和周长*/#includemain()float r,area,s;scanf(%f,&r);area=3.14*r*r;s=2*3.14*r;printf(面积面积=%f,周长周长=%f,area,s);例例1.31.3 从键盘输入从键盘输入3 3个整数个整数,求求3 3个数的和与积个数的和与积,并并将结果输出在屏幕上输出。将结果输出在屏幕上输出。/*m22.c*/#include main()int a,b,c,s1,s2;scanf(%d%d%d,&a,&b,&c);s1=a+b+c;s2=a*b*c;printf(面积面积=%d,周长周长%d,s1,s2);1.注释注释4.数据说明数据说明5.5.数据输入数据输入6.6.数据处理数据处理7.7.结果输出结果输出2.头文件头文件3.主函数主函数一个完整的一个完整的C程序包括下面几部分:程序包括下面几部分:7.注释注释3.3.变量说明变量说明4.数据输入数据输入5.数据处理数据处理6.结果输出结果输出int a,b,s;/或或 /*/printf();s=a+b;scanf();说明说明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;等价于等价于 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程序中用到的变量、符号程序中用到的变量、符号常量、自己的函数或文件指针进行命名,形成用常量、自己的函数或文件指针进行命名,形成用户标识符。构成规则:户标识符。构成规则:由英文字母、数字、下划线组成,且第一由英文字母、数字、下划线组成,且第一个字符不能是数字;个字符不能是数字;英文字母区别大小写;英文字母区别大小写;通常识别前通常识别前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)_3com D)int 例例4可在可在C程序中用作用户标识符的一组标识符是程序中用作用户标识符的一组标识符是 A)1vod B)as_b3 C)For D)2c Define _123 -abc Do,WORD IF c.se SIG枚举类型枚举类型数据类型数据类型 基本类型基本类型 构造类型构造类型其它类型其它类型 字符型字符型数值型数值型 整型整型实型实型基本型基本型短整型短整型长整型长整型无符号整无符号整单精度单精度双单精度双单精度长双单精度长双单精度字符字符字符串字符串空类型空类型(void)(void)指针类型指针类型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;定义了定义了a,b,c,为字符型变量为字符型变量 Turbo c基本数据类型所占宽度与数据范围基本数据类型所占宽度与数据范围 类型类型占字节占字节 最小取值范围最小取值范围 int2-3276832767 即即-215(215-1)unsigined int(无符号无符号)2065535short int 2-3276832767即即-215(215-1)unsigined short int2065535 long int 4-21474836482147483647即即-231(231-1)unsigined long int404294967295float 4-21474836482147483647即即-231(231-1)double810-30710308long double 1610-49311049321.注释注释2.头文件头文件4.数据定数据定义义5.5.数据输入数据输入6.6.数据处理数据处理7.7.结果输出结果输出3.主函数主函数常量常量变量变量2.4 常量常量概念:概念:在程序运行中在程序运行中,其数值不能被改变的其数值不能被改变的量。量。分类:分类:直接常量和符号常量直接常量和符号常量一一.直接常量:是在程序中直接常量:是在程序中直接引用直接引用的数据。的数据。分为:整型、实型、字符型、字符串分为:整型、实型、字符型、字符串以数据的原以数据的原型出现!型出现!1.整型常量整型常量 可以用十进制、八进制、十六进制形式表示可以用十进制、八进制、十六进制形式表示,整型常量只有整型常量只有数字数字,不带小数不带小数(如如12、-1、0)。八进制用数字八进制用数字0 开头例如开头例如:010、011、017等。等。十六进制用十六进制用0 x或或0X开头,例如:开头,例如:0 x1、0Xde、0 xf等。等。例例1.以下选项中正确整型常量是以下选项中正确整型常量是 A)12.B)-12 C)1,000 D)4 5 6 例例2.以下选项中正确的整型常量是以下选项中正确的整型常量是 A)10110B B)0386 C)0Xfaa D)x2a2 2.2.实型常量实型常量二种表现形式:二种表现形式:l十进制形式十进制形式:由数字和小数点及正负号组成;由数字和小数点及正负号组成;l指数形式:由指数形式:由十进制小数十进制小数+e(+e(或或E)+E)+十进制数整数十进制数整数 三部分组成。三部分组成。十进制小数十进制小数e(e(或或E)E)十进制数整数十进制数整数例如例如:12.5e-6 :12.5e-6 表示表示12.512.51010-6-6C语言的语法规定,语言的语法规定,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)0 xFF B)1.2e0.5 C)2 D)723 3 字符型常量字符型常量二种表现形式:二种表现形式:l用单引号括起来的一个字符;用单引号括起来的一个字符;l用单引号括起来的由反斜杠用单引号括起来的由反斜杠()()引导的引导的转义字符。转义字符。如:如:AA、11、?等。等。如:如:n n 101 101 x41 x41在统计字符个数在统计字符个数时,只能记为一时,只能记为一个字符个字符只能是英文只能是英文的单引号的单引号常用的转义字符常量的含义常用的转义字符常量的含义字符形式字符形式意义意义a响铃响铃n换行,光标到下行行首换行,光标到下行行首 t水平制表水平制表(从当前光标位置向右移动从当前光标位置向右移动8个字个字符符)r回车,光标到本行行首回车,光标到本行行首 f换页换页0空字符空字符反斜杠反斜杠 单引号单引号 双引号双引号xhh1到到2位位16进制所表示的字符进制所表示的字符ddd1到到3位位8进制所表示的字符进制所表示的字符 一个字符的多种表示方法:一个字符的多种表示方法:65D 65D(十进制)(十进制)=41H=41H(十六进制)(十六进制)=101Q=101Q(八进制)(八进制)因此,字符因此,字符A A可以表示为可以表示为AA、x41x41、101101、6565、0 x410 x41、01010101。要避免的错误:要避免的错误:表示单引号:表示单引号:表示双引号:表示双引号:表示斜线:表示斜线:(1)下面四个选项中,合法的字符常量是:下面四个选项中,合法的字符常量是:A)B B)101 C)68 D)D(2)下面四个选项中,正确的字符常量是:下面四个选项中,正确的字符常量是:A)084 B)x43 C)ab D)0(3)下面四个选项中,均是合法的转义字符的选项是:下面四个选项中,均是合法的转义字符的选项是:A)B)C)018 D)0 017 f 101 n ,xab x1f()已知大写字母已知大写字母A的的ASCII码值是码值是65,小写字母小写字母a的的ASCII 码是码是97,则用八进制表示的字符常量,则用八进制表示的字符常量102是是 A)字符字符A B)字符字符a C)字符字符cD)字符字符B二、符号常量二、符号常量 是用标识符来表示一个数据:是用标识符来表示一个数据:如如#define PI 3.14159 4 字符串常量字符串常量:用双引号括号,如用双引号括号,如STRI,ABDN,(表示空表示空)等。等。定义形式定义形式:#define 标识符标识符 常量数据常量数据在程序预处理时,凡是出现标识符在程序预处理时,凡是出现标识符PIPI的地方都将用的地方都将用数据数据3.141593.14159来替换。来替换。1.1.变量的命名规则要符合标识符变量的命名规则要符合标识符(见标识符)见标识符)2.2.变量的基本类型变量的基本类型:整型变量整型变量,实型变量实型变量,字符变量字符变量3.3.先定义,再使用。如:先定义,再使用。如:int a,bint a,b;float x,y;char a;float x,y;char a;4.C4.C语言中定义的变量,代表内存中的一个地址语言中定义的变量,代表内存中的一个地址5.5.变量的赋值符为变量的赋值符为=,赋值表达式为,赋值表达式为:变量变量=表达式。表达式。t=x+5t=x+5;p=q=r=9,x=x+1,x=(y=1)-(z=2)p=q=r=9,x=x+1,x=(y=1)-(z=2)等等,但但x=9,a+b=cx=9,a+b=c非法非法6.6.赋值表达式加分号就变成赋值语句。赋值表达式加分号就变成赋值语句。2.5 变量变量变量变量:在程序运行过程中,其值能被改变的量C语言提供了多种运算符,有些运算符看起来语言提供了多种运算符,有些运算符看起来很简单,但不小心很容易出错很简单,但不小心很容易出错(18)(加),(加),(减、取负),(减、取负),(乘),(乘),(除),(除),%(模运算)(模运算)运算符的优先级为运算符的优先级为:()()*,/,%高高低低+,-在四则运算中,有先乘除,后加减的规则。同样,在程序在四则运算中,有先乘除,后加减的规则。同样,在程序中,也存在那个运算符先进行运算,那个后进行运算的问题,中,也存在那个运算符先进行运算,那个后进行运算的问题,这些,称为这些,称为运算符的优先级运算符的优先级。一、一、除法除法 a/b(b不能为不能为0)(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关于取模运算的说明关于取模运算的说明例:例:-7%5 余数为余数为-2 7%-5 余数为余数为2二、算术表达式二、算术表达式用算术运算符和括号将常量,变量及函数连起来的式子称用算术运算符和括号将常量,变量及函数连起来的式子称为算术表达式。为算术表达式。例例1 代数式代数式 3x2+x-2 相应的算术表达式为:相应的算术表达式为:3*pow(x,2)+x-2例例2 代数式代数式 5x6y2a相应的算术表达式为:相应的算术表达式为:a/2-(6*y)/(5*x)t=x+5例:例:y=(3*5,8+9);例:例:y=(x=6,x+8);表达式的值为表达式的值为10则则y=17则则y=14()*,/,%高低+,-,=-+,-一、逻辑量的概念一、逻辑量的概念逻辑值:真、假,或 T 、F表示方式:0 表示假,非0表示真系统真值:1二、关系运算符二、关系运算符关系运算符 含义 例子 结果 优先级 大于 4+69 小于 8=大于或等于 6=5 =小于或等于 8=7 =等于 2+3=6 !=不等于 9+3!=12 T T T F F F相同,高相同,低!(非),&(与),|(或)1、运算符2、运算法则(T 真,F 假)(书24页表2.5)值 逻辑非 逻辑与 逻辑或X Y !X X&Y X|YT T T FF TF FF T TF F TT F TT F F用逻辑运算符连接关系表达式的式子称逻辑表达式。例 用逻辑表达式表达下述数学式(1)0 x10 (2)x80(3)10 x 30,50 x 90相应的逻辑表达(1)0 x&x10(2)x180 (或!(x=60&x=10&x=50&x9?2*6:18 则则y=例:例:a=5,b=3 y=ab?a+b:b*a 则则y=18188 8格式格式:(类型名)(表达式)(类型名)(表达式)习题2 2 数据结构数据结构年增长率年增长率r、年数、年数n、第、第n年的总产值年的总产值s。而这几。而这几个量中,年增长率肯定是小数(浮点)型数据,个量中,年增长率肯定是小数(浮点)型数据,年数是整数(整型),总产值不会是整数,应为年数是整数(整型),总产值不会是整数,应为浮点数。这些数据都要放在相应的浮点数。这些数据都要放在相应的变量变量中。中。int n;float r,s;3 3 源程序代码源程序代码02cbxaxacabbxcab242,122,04abcaibxcab242,122,04 由于问题简单,只需用到一些单精度实数由于问题简单,只需用到一些单精度实数输入方程系数输入方程系数 a a,b b,c c计算判别式计算判别式 d=bd=b*b-4b-4*a a*c cif if 判别式判别式大于等于大于等于 0 then 0 then 计算两个实根计算两个实根 定位输出光标定位输出光标 打印结果打印结果 elseelse 计算实部计算实部 计算虚部计算虚部 定位输出光标定位输出光标 打印结果打印结果 end programend program#include#includemain()float a,b,d,c,x1,x2,p,q;printf(输入方程系数输入方程系数:);scanf(%f,%f,%f,&a,&b,&c);d=b*b-4*a*c;if (d=0)x1=(-b+sqrt(d)/(2*a);x2=(-b-sqrt(d)/(2*a);printf(x1=%f,x2=%fn,x1,x2);else p=-b/(2*a);q=sqrt(-d)/(2*a);printf(x1=%f+i%f,x2=%f-i%fn,p,q,p,q);求平方根的函数例例2.42.4 小写字母转盘小写字母转盘,用户输入一个小写字母用户输入一个小写字母,如输入如输入a a,则显示则显示b,b,输入输入b b则显则显c,c,以此类推,输入以此类推,输入z z则显示则显示a a。1.1.先定义字符变量先定义字符变量c c来接受从键盘输入的值时来接受从键盘输入的值时char c;char c;2.2.通过通过c-ac-a求出求出c c中的字母在字母序列中的序号中的字母在字母序列中的序号(a(a为为0,z0,z为为25),25),c-a+1 c-a+1得出下一个字母序号,表达式(得出下一个字母序号,表达式(c-a+1)%26,c-a+1)%26,使序号使序号2626 变成变成0,0,这样字母这样字母z z的序号变成的序号变成0,0,再加上再加上aa就转成字母就转成字母a a,即,即 转换公式为转换公式为:(c-a+1)%26+a:(c-a+1)%26+a#includemain()char c;scanf(%c,&c);(这里可用这里可用c=getchar()c=(c-a+1)%26+a;printf(%cn,c);2 2 数据结构数据结构程序中要用的程序中要用的数据数据,存放头,存放头H、脚数量、脚数量F的变量,存放的变量,存放方程解(鸡方程解(鸡x、兔、兔y数量)的数量)的变量变量,存放方程判别式的变量,存放方程判别式的变量等。对于头、脚的数量,肯定是整型变量,方程的解理论等。对于头、脚的数量,肯定是整型变量,方程的解理论上讲是整型,但在求解方程时要进行运算,为了避免发生上讲是整型,但在求解方程时要进行运算,为了避免发生错误,最好是用浮点数据。错误,最好是用浮点数据。4 4 源程序代码源程序代码提示输入数据的内容分析分析:1.1.小写字母与大写字母的小写字母与大写字母的ASCIIASCII值相差值相差32322.2.小写字母的范围表示为小写字母的范围表示为 (x=a&x(x=a&x=z)=z)3.3.要使用条件运算符要使用条件运算符?:?:#includemain()char x;printf(please input a char:n);scanf(%c,&x);或或x=getchar();x=(x=a&x=z)?(x-32):xprintf(%c,x);分支结构分支结构问题:1、从键盘输入一个数,如果该数为正,打印,否则不打印;、从键盘输入一个数,如果该数为正,打印,否则不打印;2、将考试成绩不及格的学生名单打印出来;、将考试成绩不及格的学生名单打印出来;3、解一元二次方程,求出相应的实根或复根。、解一元二次方程,求出相应的实根或复根。对于上述或类似问题,需要进行某种判断,对于上述或类似问题,需要进行某种判断,并根据不同情况进行不同的处理,怎样进行程并根据不同情况进行不同的处理,怎样进行程序设计?序设计?解决办法:1、引入新的程序结构,分支结构,、引入新的程序结构,分支结构,有时也称有时也称 判断结构判断结构 或或 选择结构。选择结构。2、有三种形式可进行分支结构的程序设计、有三种形式可进行分支结构的程序设计A A、if if 结构结构B B、多重选择结构(、多重选择结构(switchswitch语句)语句)C C、无条件转移结构(、无条件转移结构(gotogoto语句语句)if 条件条件真真 语句块语句块1else 语句块语句块2if,else 为关键字为关键字如果语句块超过一条语句如果语句块超过一条语句,则要用一对大括号将则要用一对大括号将语句块括起作为复合语句语句块括起作为复合语句esle 可省可省#includemain()char x;printf(please input a char:n);scanf(%c,&x);if(x=a&x=0)x2 (x0)#includemain()float y,x;scanf(%f,&x);if(x=0)y=2*x;printf(y=%f,y);else y=x*x;printf(y=%f,y);例例 3.6 3.6 将输入的字母转化为小写字母。将输入的字母转化为小写字母。1 算法分析 在计算机中,处理英文字母,其实是处理它的在计算机中,处理英文字母,其实是处理它的ASCII码值。码值。将大写字母变成小写字母,就是将大写字母的将大写字母变成小写字母,就是将大写字母的ASCII码值变为码值变为相应的小写字母的相应的小写字母的ASCII码值。码值。大写字母的大写字母的ASCII值比小写字母的值比小写字母的ASCII值小值小32,故将,故将相应字母的相应字母的ASCII值加值加32就变成了小写字母。就变成了小写字母。程序设计时,要注意如果输入的不是大写的字母,则程序设计时,要注意如果输入的不是大写的字母,则不用转换。不用转换。/源代码源代码#includemain()char x;printf(please input a char:n);scanf(%c,&x);或或x=getchar();x=(x=A&x=Z)?(x+32):xprintf(%c,x);例:从键盘输入某一年,如例:从键盘输入某一年,如1956,1956,判断这一年是否是闰年,若是判断这一年是否是闰年,若是 就显示就显示yesyes,若不是就显示,若不是就显示nono。注:闰年的条件为注:闰年的条件为(1)能被能被4整除,但不能被整除,但不能被100整除整除 或或 (2)能被能被4整除,且又能被整除,且又能被400整除整除#include main()int b;printf(please input years:n);scanf(%d,&b);if(b%4=0&b%100!=0)|(b%400=0)printf(yesn,);else printf(non);用关系运符用关系运符,=,=,=及逻辑运算符及逻辑运算符!,&,|将两个算术表达将两个算术表达式联起来的式子,其值为逻辑值式联起来的式子,其值为逻辑值(0或或1)。)。例:例:if(10=56);if(a=10=57+8);if(b=7!=73);例例#includemain()int a,b;a=10=56;b=(10=5)6;printf(%d,%dn,a,b);输出结果输出结果:0,1例例#includemain()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 真否?复合语句1执行复合语句1后的语句FTif 的执行过程的执行过程if语句两种变形语句两种变形 if(逻辑表达式逻辑表达式)例例:从键盘输入一个整数从键盘输入一个整数,若为正,若为正,则输出该数的平方,否则不输出。则输出该数的平方,否则不输出。即:即:y=xy=x2 2(x0)(x0)#includemain()int x,y;scanf(%d,&x);if(x0)y=x*x;printf(x2=%f,y);第一种变形:省略第一种变形:省略else语句语句执行复合语句1后的语句if(逻辑表达式逻辑表达式1)真真 复合语句复合语句 1 if(逻辑表达式逻辑表达式2)真真 复合语句复合语句 2 .if(逻辑表达式逻辑表达式n)真真 复合语句复合语句n 第一种变形:省略第一种变形:省略else语句语句从键盘输入一个数从键盘输入一个数,求求y的值的值y=2*x(x0)0(x=0)x2(x0)当条件较多时,可用多个省当条件较多时,可用多个省略了略了else的的if语句。语句。#include main()float y,x;scanf(%f,&x);if(x0)y=2*x;printf(y=%f,y);if(x=0)y=0;printf(y=%f,y);if(x0)x2(x0)x2(x0)0(x=0)#include main()float y,x;scanf(%f,&x);if(x0)y=2*x;printf(y=%f,y);else if(x=0)y=0;printf(y=%f,y);else y=x*x;printf(y=%f,y);演示演示1例例 3.23.2 商店售货,按购买货物款的多少分别给予不同的商店售货,按购买货物款的多少分别给予不同的 优惠折扣,编程计算实际应付货款。优惠折扣,编程计算实际应付货款。购货不足购货不足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、源程序清单、源程序清单#includemain()float m,d,t;printf(请输入购物金额请输入购物金额:);scanf(%f,&m);if(m=250&m=500&m=1000&m=2000)d=0.15;t=m*(1-d);printf(实际应付款实际应付款:%f,t);输入购物款输入购物款:249实际应付款实际应付款:249输入购物款输入购物款:500实际应付款实际应付款:462.5演示演示2例例 3.33.3 用else if购物折扣程序的另一个写法购物折扣程序的另一个写法改写后,程序更清晰,执行时间更省。#includemain()float m,d,t;printf(请输入购物金额请输入购物金额:);scanf(%f,&m);if(m=250&m=500&m=1000&m=2000)d=0.15;t=m*(1-d);printf(实际应付款实际应付款:%f,t);if(逻辑表达式逻辑表达式)真真 复合语句复合语句 1 else 复合语句复合语句 2 分支结构分支结构 ifif语句语句第一种变形第一种变形:省略省略else语句语句if(逻辑表达式逻辑表达式)真真 复合语句复合语句 1 第二种变形第二种变形:增加增加else if语句语句 语法语法:if 逻辑表达式逻辑表达式1真真 语句体语句体 1 else if 逻辑表达式逻辑表达式2真真 语句体语句体 2 else if 逻辑表达式逻辑表达式3 真真 语句体语句体 3 .else 语句体语句体 N if(逻辑表达式逻辑表达式1)真真 复合语句复合语句 1 if(逻辑表达式逻辑表达式2)真真 复合语句复合语句 2 .if(逻辑表达式逻辑表达式n)真真 复合语句复合语句n 当条件较多时,可用多个省当条件较多时,可用多个省略了略了else的的if语句。语句。在一个 if 语句中可以包含另外一个 if 语句。if 逻辑表达式 T if 逻辑表达式T 语句块 2 else 语句块3 else 语句块 4else else 语句与最近的语句与最近的 ifif语语句配套,大句配套,大括号要配对。括号要配对。语句块语句块1以下程序的输出结果是以下程序的输出结果是#inlcudestdio.h#inlcude main()main()int x=2,y=-1,z=2;int x=2,y=-1,z=2;if(xy)if(xy)if(y0)z=0;if(y0)z=0;else z+=1;else z+=1;else else printf(%dn,z printf(%dn,z););A A)3 B3 B)2 C2 C)1 D1 D)0 0语句块语句块1注意:注意:演示演示3在一个在一个 if 语句中可以包含另外一个语句中可以包含另外一个 if 语句。语句。if 逻辑表达式逻辑表达式 T 语句块语句块 1 else if逻辑表达式逻辑表达式 T 语句块语句块3 else 语句块语句块 4else else 语句与最近的语句与最近的 ifif配配套套,大大括号要配对。括号要配对。语句块语句块2以下程序的输出结果以下程序的输出结果是:是:#inlcudestdio.h#inlcude main()main()int x=2,y=-1,z=2;int x=2,y=-1,z=2;if(xy)if(xy)z=0;z=0;else else if(y0)z+=1;if(y0)z+=1;else z else z*=2;=2;printf(%dn,z printf(%dn,z););A A)3 B3 B)2 C2 C)1 D1 D)0 0语句块语句块2注意:注意:演示演示4#includemain()int x,y,z;printf(Iput x,y,z:);scanf(%d,%d,%d,&x,&y,&z);if(x0)if(y0)if(z0)printf(所有数据大于零所有数据大于零!);else printf(只有只有X,Y大于零大于零!);else if(x=0)if(y=0)if (z=0)printf(所有数据都为零所有数据都为零!);else printf(只有只有X,Y等于零等于零!);else printf(X 小于零小于零!);例例 3.53.5 演示5 嵌套不能太深,一般以三层为限,嵌套太深,容易出错。嵌嵌套套演演示示程程序序例例2.4 2.4 小写字母转盘小写字母转盘,用户输入一个小写字母用户输入一个小写字母,如输入如输入a a,则显示则显示b,b,输入输入b b则显则显c,c,以此类推,输入以此类推,输入z z则显示则显示a a。#includemain()char c;c=getchar();c=(c-a+1)%26+a;printf(%cn,c);#includemain()char c;c=getchar();if(c=a&c=y)c=c+1;else c=a;printf(%cn,c);用用if语句编写语句编写例例2.8 2.8 输入一个正整数,判断是否是输入一个正整数,判断是否是5 5又是又是7 7的倍数,的倍数,如是显示如是显示yes,yes,否则显示否则显示nono。#includemain()int x;printf(please input date!n);scanf(%d,&x);if(x%5=0&x%7=0)printf(yes);else printf(no);演示演示6main()char ch;scanf(%c,&ch);ch=(ch=A&chb?a:cd?c:d ab?a:(cd?c:d)此处使用了条件运算符main()char ch;scanf(%c,&ch);if(ch=A&ch=Z)ch=ch+32;printf(%c,ch);例:输入大写字母,转成小写字母输出。例:输入大写字母,转成小写字母输出。#include main()int i;printf(输入数字输入数字 1-7:);scanf(%d,&i);if (i=1)printf(Today is Monday!n);else if(i=2)printf(Today is Tuesday!n);else if(i=3)printf(Today is Wednesday!n);else if(i=4)printf(Today is Thursday!n);else if(i=5)printf(Today is Friday!n);else if(i=6)printf(Today is Saturday!n);else printf(Today is Sunday!n);例:输入星期中例:输入星期中的某一天(的某一天(1-71-7天)天),显示对应显示对应的英文星期几。的英文星期几。演示演示7例例 3.43.4 从键盘输入一字符从键盘输入一字符,如果为如果为Y,则打印是则打印是,为为N,打印否打印否,其它其它 字符字符,打印输入错误。打印输入错误。#includemain()char a;printf(输入一个字符:输入一个字符:);a=getchar();if(a=Y|a=N)if (a=Y)printf(是是);else printf(否否);else printf(输入数据不合要求输入数据不合要求);演示演示8#includemain()int a,b,s;printf(please input a and b);scanf(%d,%d,&a,&b);s=(a*a+b*b100)?(a*a+b*b)/100):(a+b);printf(s=%d,s);#includemain()int a,b,s;printf(please input date);scanf(%d,%d,&a,&b);s=a*a+b*b;if(s100)s=s/100;else s=a+b;printf(s=%d,s);演示演示9 switch(switch(表达式表达式)case case 常量常量表达式表达式1:1:语句语句1 1 case case 常量常量表达式表达式2:2:语句语句2 2 case case 常量常量表达式表达式3:3:语句语句3 3 .default:default:语句语句N+1 N+1 当条件较多时,除了使用多当条件较多时,除了使用多个个if 或或else if外,还可以使用外,还可以使用switch语句。语句。.表达式主要表达式主要是是charchar,intint等等类型类型.switch.switch是用是用 括起来的语句体括起来的语句体.case.case后的后的表达式表达式与与switchswitch的的表达表达式式相等时相等时,执行执行casecase后的语句后的语句.case.case后的后的表达式表达式须不相同须不相同case case 与与 default default 出现的顺序不影出现的顺序不影 响执行结果响执行结果 执行完一个执行完一个casecase语句块后语句块后,流程转流程转 到下一个到下一个casecase语句继续执行语句继续执行.在执行过程中碰到在执行过程中碰到breakbreak语句语句,程程 序退出序退出switchswitch结构结构#includemain()int s,c;char grade;scanf(%d,&s);c=s/10;switch(c)case 1:case 2:case 3:case 4:case 5:grade=E;break;case 6:grade=D;break;case 7:grade=C;break;case 8:grade=B;break;case 9:grade=A;break;defaut:printf(date error!);printf(s=%d grade=%c,s,grade);#includemain()char c;float x,y,s;scanf(%f,%f,%c,&x,&y,&c);switch(c)case+:s=x+y;break;case-:s=x-y;break;case*:s=x*y;break;case/:s=x/y;break;defaut:printf(输入错误输入错误!);printf(s=%f,s);#includemain()char c;float x,y,s;scanf(%f,%f,%c,&x,&y,&c);if(c=+)s=x+y;else if(c=-)s=x-y;else if(c=*)s=x*y;else if(c=/)s=x/y;else printf(输入错误输入错误!);printf(s=%f,s);#includemain()int y,m,d;printf(please input year and month:);scanf(%d,%d,&y,&m);switch(m)case 1:case 3:case 5:case 7:case 8:case 10:case 12:d=31;break;case 4:case 6:case 9:case 11:d=30;break;case 2:if(y%4=0&y%100!=0|y%400=0)d=29;else d=28;break;defaut:printf(输入错误输入错误!);printf(这个月的天数为这个月的天数为d=%d,d);演示13#includemain()int y,m,d;scanf(%d,%d,&y,&m);if(m=1|m=3|m=5|m=7|m=8|m=10|m=12)d=31;else if(m=4|m=6|m=9|m=11)d=30;else if(m=2)if(y%4=0&y%100!=0|y%400=0)d=29;else d=28;else printf(输入错误输入错误!);printf(这个月的天数为这个月的天数为d=%d,d);演示147、已知银行整取存款不同期限的年息利率、已知银行整取存款不同期限的年息利率 分别为:分别为:1.98%期限一年期限一年 2.15%期限二年期限二年 2.25%期限三年期限三年 2.45%期限五年期限五年 2.65%期限八年期限八年 编序编序:输入存钱的本金和期限输入存钱的本金和期限,求到期时从银行求到期时从银行到的利息与本金合计到的利息与本金合计年息利年息利率率#include main()int n;float m,d,t;printf(input date!n);scanf(%f,%d,&m,&n);if(n=1)d=0.0198;else if(n=2)d=0.0215;else if (n=3)d=0.0225;else if(n=5)d=0.0245;else if(n=8)d=0.065;else printf(error);t=m*pow(1+d),(float)(n);printf(合计为合计为t=%f,t);用用IF语句语句演示15#include main()int n;float m,d,t;printf(input date!n);scanf(%f,%d,&m,&n);switch(n)case 1:d=0.0198;case 2:d=0.0215;case 3:d=0.0225;case 5:d=0.0245;case 8:d=0.0265;default:printf(date error);t=m*pow(1+d),(float)(n);p
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!