版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、+平时:综合作业 15分+考勤: 5分+期末:笔试+上机考试 60+20分+选择题选择题( (共共 2 20 0 题,每题题,每题 2 2 分,共分,共 4 40 0 分分) );+其中结构体部分(第九章一道选择题);+文件部分(第十章一道选择题)+填空题填空题( (共共 7 7 题题(1010空)空),每题每题 2 2 分,共分,共 20 20 分分) )+编程编程题题( (共共 5 5 题,每题,每题题8 8分分,共共4 40 0分分) )是语言的基本成分,是组成程序的基本元是语言的基本成分,是组成程序的基本元素,要掌握。素,要掌握。熟悉各种基本数据类型的常量和变量:常熟悉各种基本数据类型
2、的常量和变量:常量的表示形式;变量的定义、变量初始化、量的表示形式;变量的定义、变量初始化、变量赋值变量赋值熟悉常用运算符的定义及优先级别。熟悉常用运算符的定义及优先级别。会计算各表达式的值会计算各表达式的值重点:重点:输入输出输入输出函数的各种使用方式,如八进制,函数的各种使用方式,如八进制,十进制,十六进制的输入输出。十进制,十六进制的输入输出。自增和自减运算符的使用。自增和自减运算符的使用。赋值和计算时的类型转换(自动和强制)。赋值和计算时的类型转换(自动和强制)。逗号表达式的使用。逗号表达式的使用。3.2.1 常量和变量常量和变量1.常量常量:在程序运行过程中,其值在程序运行过程中,其
3、值不能被改变的量不能被改变的量整型常量整型常量:如如1000,12345,0,-345实型常量实型常量u十进制小数形式十进制小数形式:如如0.34 -56.79 0.0u指数形式指数形式:如如12.34e3 (代表代表12.34 103)字符常量字符常量:如:如?u转义字符转义字符:如:如n字符串常量字符串常量:如如”boy”符号常量符号常量:#define PI 3.14163.2.1 常量和变量常量和变量2. 变量变量:在程序运行期间,变量的值是可以改变的在程序运行期间,变量的值是可以改变的变量必须变量必须先定义先定义,后使用后使用定义定义变量变量时指定该变量的时指定该变量的名字名字和和类
4、型类型变量名变量名和和变量值变量值是是两个不同的概念两个不同的概念变量名实际上是以一个名字代表的一个变量名实际上是以一个名字代表的一个存储地址存储地址从变量中取值,实际上是通过变量名找到相应的从变量中取值,实际上是通过变量名找到相应的内存地址,从该存储单元中读取数据内存地址,从该存储单元中读取数据3.2.1 常量和变量常量和变量3.常变量常变量:const int a=3;l 4.标识符标识符:一个对象的名字一个对象的名字语言规定标识符只能由语言规定标识符只能由字母字母、数字数字和和下划线下划线3种字符组成,且种字符组成,且第一个字符必须为字母或下划线第一个字符必须为字母或下划线合法的标识符:
5、合法的标识符:如如sum,average, _total, Class, day, BASIC, li_ling不合法的标识符不合法的标识符:M.D.John,¥,¥123,33,3D64,ab大小写字母是不同的字符大小写字母是不同的字符3.2.7 运算符和表达式运算符和表达式1.基本的算术运算符基本的算术运算符:+ :正号运算符正号运算符(单目运算符单目运算符) - :负号运算符负号运算符(单目运算符单目运算符)* :乘法运算符乘法运算符/ :除法运算符除法运算符% :求余运算符求余运算符+ :加法运算符加法运算符 - :减法运算符减法运算符3.2.7 运算符和表达式运算符和表达式说明说明
6、两个整数相除的结果为整数两个整数相除的结果为整数u如如5/3的结果值为,舍去小数部分的结果值为,舍去小数部分u如果除数或被除数中有一个为负值,舍入方向不固定如果除数或被除数中有一个为负值,舍入方向不固定。例如,例如,-5/3,有的系统中得到的结果为,有的系统中得到的结果为-1,在有的,在有的系统中则得到结果为系统中则得到结果为-2; 1/2=?uVC+采取采取“向零取整向零取整”的方法的方法 如如5/3=1,-5/3=-1,取整后向零靠拢,取整后向零靠拢 % 运算符要求参加运算的运算对象运算符要求参加运算的运算对象(即操作数即操作数)为整数,为整数,结果也是整数。结果也是整数。余数符号与被除数
7、相同。余数符号与被除数相同。 如如8%3,结果为,结果为2 。-8%3=? 8%-3=? -8%-3=?0-22-2#include#include int main( ) float f1,f2; scanf(“%f”,&f1); f2=pow(f1,0.5);/f2=sqrt(f1); printf(“root of %0.2f=%fn”f1,f2);Return 0;3.2.7 运算符和表达式运算符和表达式C没有乘方运算,幂运算采用库函数没有乘方运算,幂运算采用库函数pow(x,y)2. 自增、自减运算符自增、自减运算符:作用是使变量的值作用是使变量的值加加或减或减u+i,-i:
8、在使用在使用i之前,先使之前,先使i的值加(减)的值加(减)1ui+,i-:在使用在使用i之后,使之后,使i的值加(减)的值加(减)1+/-运算符运算符注意注意:n+、-只能作用于变量,不能用于表达式只能作用于变量,不能用于表达式和常量,如:和常量,如:22+、+(a+b)错误错误n右结合性右结合性 -i+ -(i+)n不建议不建议+、-运算符连用,如果要在一条运算符连用,如果要在一条语句中将特定变量自增自减不止一次时,语句中将特定变量自增自减不止一次时,最好分多条语句执行,而不要在一条语句最好分多条语句执行,而不要在一条语句中自增自减多次中自增自减多次3.2.7 运算符和表达式运算符和表达式
9、3. 算术表达式和运算符的优先级与结合性算术表达式和运算符的优先级与结合性:用算术运算符和括号将运算对象(也称操作用算术运算符和括号将运算对象(也称操作数)连接起来的、符合语法规则的式子,数)连接起来的、符合语法规则的式子,称为算术表达式称为算术表达式运算对象包括常量、变量、函数等运算对象包括常量、变量、函数等语言规定了运算符的优先级语言规定了运算符的优先级和和结合性结合性3. 算术表达式和运算符的优先级与结合性算术表达式和运算符的优先级与结合性( ) 圆括号圆括号-,+,- 单目运算符,取负、自加、自减单目运算符,取负、自加、自减*、/、% 双目运算符,乘、除、取模双目运算符,乘、除、取模+
10、、- 双目运算符,加、减双目运算符,加、减双目算术运算符:左结合双目算术运算符:左结合单目运算符取负单目运算符取负“-”、“+”、“-”:右结合:右结合高高 低低3.2.7 运算符和表达式运算符和表达式l6.运算符运算符(1) 算术运算符算术运算符 (+ - * / % + -)(2) 关系运算符关系运算符 ( !)!)(3) 逻辑运算符逻辑运算符 (!(! |)(4) 位运算符位运算符 ( | )(5) 赋值运算符赋值运算符 (及其扩展赋值运算符)(及其扩展赋值运算符)(6) 条件运算符条件运算符 (?:)(?:)写出下列式子的写出下列式子的C表达式:表达式:写出下列写出下列C表达式的值:表
11、达式的值:(x=4*5,x*5),x+25(逗号表达式逗号表达式)i=6;j=(+i)+(i+);i,j各为多少?各为多少?!2+12&15%5+2a=12;a-=a*a; 3.3 C语句语句3.3.1 C语句的作用和分类语句的作用和分类l3.3.2 最基本的语句最基本的语句-赋值语句赋值语句归纳归纳总结:总结:1.赋值运算符赋值运算符2.复合的赋值运算符复合的赋值运算符u在赋值符在赋值符“”之前加上其他运算符,可以构之前加上其他运算符,可以构成复合的运算符成复合的运算符 += -= *= /= %=ua+=b 等价于等价于 a=a+bux*=y+8 等价于等价于 x=x*(y+8)u
12、X%=y/3 等价于等价于 x=x%(y/3) 归纳归纳总结:总结:1.赋值运算符赋值运算符2.复合的赋值运算符复合的赋值运算符3.赋值表达式赋值表达式u一般形式为一般形式为: 变量变量 赋值运算符赋值运算符 表达式表达式u对赋值表达式求解的过程:对赋值表达式求解的过程:l求赋值运算符求赋值运算符右侧右侧的的“表达式表达式”的值的值l赋给赋值运算符赋给赋值运算符左侧左侧的变量的变量归纳归纳总结:总结: 3.赋值表达式赋值表达式u赋值表达式赋值表达式“a=3*5”的值为的值为15,对表达,对表达式求解后,变量式求解后,变量a的值和表达式的值都是的值和表达式的值都是15u“a=(b=5)”和和“a
13、=b=5”等价等价u“a=b”和和“b=a”含义不同含义不同例:例: a=5+(c=6) 后后 a=11 a=b=c=5 后后 a=5问:问: int a=12;a+=a-=a*a a=?归纳归纳总结:总结:1.赋值运算符赋值运算符2.复合的赋值运算符复合的赋值运算符3.赋值表达式赋值表达式4.赋值过程中的类型转换赋值过程中的类型转换u两侧类型一致两侧类型一致时时,直接赋值,直接赋值u两侧类型不一致,但都是算术类型时,两侧类型不一致,但都是算术类型时,自动将自动将右侧的右侧的类型转换类型转换为左侧类型后赋值为左侧类型后赋值u定义变量时要防止数据溢出定义变量时要防止数据溢出3.4 数据的输入输出
14、数据的输入输出3.4.1 输入输出举例输入输出举例3.4.2 有关数据输入输出的概念有关数据输入输出的概念3.4.3 用用printf函数输出数据函数输出数据l3.4.4 用用scanf函数输入数据函数输入数据3.4.5 字符数据的输入输出字符数据的输入输出3.4.2 有关数据输入输出的概念有关数据输入输出的概念几乎每一个几乎每一个C程序都包含输入输出程序都包含输入输出输入输出是程序中最基本的操作之一输入输出是程序中最基本的操作之一3.4.2 有关数据输入输出的概念有关数据输入输出的概念(1) 所谓输入输出是以计算机主机为主体所谓输入输出是以计算机主机为主体而言的而言的从计算机向输出设备从计算
15、机向输出设备(如显示器、打印机如显示器、打印机等等)输出数据称为输出输出数据称为输出从输入设备(如键盘、磁盘、光盘、扫描从输入设备(如键盘、磁盘、光盘、扫描仪等)向计算机输入数据称为输入仪等)向计算机输入数据称为输入3.4.2 有关数据输入输出的概念有关数据输入输出的概念(2) 语言本身不提供输入输出语句语言本身不提供输入输出语句输入和输出操作是由输入和输出操作是由C标准函数库中的函标准函数库中的函数来实现的数来实现的printf和和scanf不是语言的关键字,而不是语言的关键字,而只是库函数的名字只是库函数的名字putchar、getchar、puts、gets3.4.2 有关数据输入输出的
16、概念有关数据输入输出的概念(3)在使用在使用输入输出输入输出函数时,要在程序文件函数时,要在程序文件的开头用预编译指令的开头用预编译指令#include 或或#include stdio.h3.4.3 用用printf函数输出数据函数输出数据在在C程序中用来实现输出和输入的,主要程序中用来实现输出和输入的,主要是是printf函数和函数和scanf函数函数这两个函数是格式输入输出函数这两个函数是格式输入输出函数用这两个函数时,必须指定格式用这两个函数时,必须指定格式3.4.3 用用printf函数输出数据函数输出数据1.printf函数的一般格式函数的一般格式printf(格式控制,输出表列)
17、(格式控制,输出表列)例如:例如:printf(”i=%d,c=%cn”,i,c);格式声明格式声明3.4.3 用用printf函数输出数据函数输出数据1.printf函数的一般格式函数的一般格式printf(格式控制,输出表列)(格式控制,输出表列)例如:例如:printf(”i=%d,c=%cn”,i,c);普通字符普通字符3.4.3 用用printf函数输出数据函数输出数据1.printf函数的一般格式函数的一般格式printf(格式控制,输出表列)(格式控制,输出表列)例如:例如:printf(”i=%d,c=%cn”,i,c);可以是常量、变量或表达式可以是常量、变量或表达式3.4.
18、3 用用printf函数输出数据函数输出数据2. 常用常用格式字符格式字符u格式符。用来输出一个有符号的十进制整数格式符。用来输出一个有符号的十进制整数l可以在格式声明中指定输出数据的域宽可以在格式声明中指定输出数据的域宽 printf(”%5d%5dn”,12,-345);l%d输出输出int型数据型数据l%ld输出输出long型数据型数据3.4.3 用用printf函数输出数据函数输出数据2. 常用常用格式字符格式字符u格式符。用来输出一个字符格式符。用来输出一个字符 char ch=a; printf(”%c”,ch); 或或 printf(”%5c”,ch);输出字符输出字符:a3.4
19、.3 用用printf函数输出数据函数输出数据2. 常用常用格式字符格式字符u格式符。用来输出一个字符串格式符。用来输出一个字符串 printf(”%s”,”CHINA”); 输出字符串输出字符串:CHINA3.4.3 用用printf函数输出数据函数输出数据2. 常用常用格式字符格式字符uf格式符。用来输出实数,以小数形式输出格式符。用来输出实数,以小数形式输出不不指定数据宽度和小数位数,用指定数据宽度和小数位数,用%f 例例3.6 用用%f输出实数,只能得到位小数。输出实数,只能得到位小数。 double a=1.0; printf(”%fn”,a/3);3.4.3 用用printf函数输
20、出数据函数输出数据2. 常用常用格式字符格式字符uf格式符。用来输出实数,以小数形式输出格式符。用来输出实数,以小数形式输出 指定数据宽度和小数位数。用指定数据宽度和小数位数。用%m.nf printf(%20.15fn,1/3); printf(%.0fn”,10000/3.0);3.4.3 用用printf函数输出数据函数输出数据2. 常用常用格式字符格式字符uf格式符。用来输出实数,以小数形式输出格式符。用来输出实数,以小数形式输出 指定数据宽度和小数位数。用指定数据宽度和小数位数。用%m.nf float a; a=10000/3.0; printf(%fn,a);3.4.3 用用pr
21、intf函数输出数据函数输出数据2. 常用常用格式字符格式字符uf格式符。用来输出实数,以小数形式输出格式符。用来输出实数,以小数形式输出 输出的数据向左对齐,用输出的数据向左对齐,用%-m.nf3.4.3 用用printf函数输出数据函数输出数据2. 常用常用格式字符格式字符uf格式符。用来输出实数,以小数形式输出格式符。用来输出实数,以小数形式输出lfloat型数据只能保证型数据只能保证6位有效数字位有效数字ldouble型数据能保证型数据能保证15位有效数字位有效数字l计算机输出的数字计算机输出的数字不都不都是绝对精确有效的是绝对精确有效的3.4.3 用用printf函数输出数据函数输出
22、数据2. 常用常用格式字符格式字符ue格式符。指定以指数形式输出实数格式符。指定以指数形式输出实数l%e,VC+给出小数位数为位给出小数位数为位 指数部分占指数部分占5列列 小数点前必须有而且只有小数点前必须有而且只有1位非零数字位非零数字 printf(”%e”,123.456); 输出:输出:1.234560 e+0023.4.3 用用printf函数输出数据函数输出数据2. 常用常用格式字符格式字符ue格式符。指定以指数形式输出实数格式符。指定以指数形式输出实数l%m.ne printf(”%13.2e”,123.456); 输出:输出: 1.23e+002 (前面有前面有4个空格个空格
23、)3.4.4 用用scanf函数输入数据函数输入数据1. scanf 函数的一般形式函数的一般形式l scanf(格式控制,地址表列)(格式控制,地址表列)含义同含义同printf函函数数3.4.4 用用scanf函数输入数据函数输入数据1. scanf 函数的一般形式函数的一般形式 scanf(格式控制,地址表列)(格式控制,地址表列)可以是变量的地址,或字可以是变量的地址,或字符串的首地址符串的首地址3.4.4 用用scanf函数输入数据函数输入数据2. scanf函数中的格式声明函数中的格式声明与与printf函数中的格式声明相似函数中的格式声明相似以开始以开始,以一个格式字符结束,中间
24、可以以一个格式字符结束,中间可以插入附加的字符插入附加的字符scanf(a=%f,b=%f,c=%f,&a,&b,&c);3.4.4 用用scanf函数输入数据函数输入数据3.使用使用scanf函数时应注意的问题函数时应注意的问题scanf(”%f%f%f”,a,b,c); 错错scanf(”%f%f%f”,&a,&b,&c); 对对对于对于scanf(a=%f,b=%f,c=%f,&a,&b,&c); 1 3 2 错错 a=1,b=3,c=2 对对 a=1 b=3 c=2 错错3.4.4 用用scanf函数输入数据函数输
25、入数据3.使用使用scanf函数时应注意的问题函数时应注意的问题对于对于scanf(”%c%c%c”,&c1,&c2,&c3); abc 对对 a b c 错错对于对于scanf(”%d%c%f”,&a,&b,&c);若输入若输入 1234a123o.26 3.4.4 用用scanf函数输入数据函数输入数据3.使用使用scanf函数时应注意的问题函数时应注意的问题对于对于scanf(”%c%c%c”,&c1,&c2,&c3); abc 对对 a b c 错错对于对于scanf(”%d%c%f”,&a,&b,
26、&c);若输入若输入 1234a123o.26 3.4.4 用用scanf函数输入数据函数输入数据3.使用使用scanf函数时应注意的问题函数时应注意的问题对于对于scanf(”%c%c%c”,&c1,&c2,&c3); abc 对对 a b c 错错对于对于scanf(”%d%c%f”,&a,&b,&c);若输入若输入 1234a123o.26 3.4.5 字符数据的输入输出字符数据的输入输出1.用用putchar函数输出一个字符函数输出一个字符从计算机向显示器输出一个字符从计算机向显示器输出一个字符 putchar函数的一般形式为函数
27、的一般形式为: putchar(c) 3.4.5 字符数据的输入输出字符数据的输入输出2. 用用getchar函数输入一个字符函数输入一个字符向计算机输入一个字符向计算机输入一个字符getchar函数的一般形式为函数的一般形式为: getchar( )4.1 选择结构和条件判断选择结构和条件判断l4.2 用用if语句实现选择结构语句实现选择结构4.3关系运算符和关系表达式关系运算符和关系表达式l4.4 逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式4.5 条件运算符和条件表达式条件运算符和条件表达式4.6 选择结构的嵌套选择结构的嵌套l4.7 用用switch语句实现多分支选择结构语句实现多分支
28、选择结构4.8选择结构程序综合举例选择结构程序综合举例C语言有两种选择语句语言有两种选择语句:(1)if语句语句,实现两个分支的选择结构,实现两个分支的选择结构(2)switch语句语句,实现多分支的选择结构,实现多分支的选择结构 if (表达式表达式) 语句语句1 else 语句语句2 关系表达式关系表达式逻辑表达式逻辑表达式数值表达式数值表达式方括号内的部分为可选的方括号内的部分为可选的 if (表达式表达式) 语句语句1 else 语句语句2 简单的语句简单的语句复合语句复合语句另一个另一个if语句语句等等最常用的最常用的3种种if语句语句形式形式:1. if (表达式表达式) 语句语句
29、1 (没有没有else子句子句)2. if (表达式表达式) 语句语句1 else 语句语句2 (有有else子句子句)3. if(表达式)(表达式) 语句语句 else if(表达式)(表达式) 语句语句 else if(表达式)(表达式) 语句语句 else if(表达式)(表达式) 语句语句 else 语句语句m+1 (在在else部分又嵌套了多层的部分又嵌套了多层的if语句语句)if(number 500) cost = 0.15;else if (number 300) cost = 0.10;else if (number 100) cost = 0.075;else if (nu
30、mber 50) cost = 0.05;else cost=0;if (number 500) cost = 0.15;else if (number 300) cost = 0.10; else if (number 100) cost = 0.075; else if (number 50) cost = 0.05; else cost = 0;等价于等价于分号不能丢分号不能丢说明:说明:(1)整个整个if语句可写在多行上,也可写在一行上语句可写在多行上,也可写在一行上 但但都是一个整体,属于同一个语句都是一个整体,属于同一个语句(2)“语句语句1”“语句语句m”是是if中的内嵌语句中的
31、内嵌语句 内嵌语句也可以是一个内嵌语句也可以是一个if语句语句(3)“语句语句1”“语句语句m”可以是简单的语句可以是简单的语句,也可以是复合语句,也可以是复合语句4.3.1关系运算符及其优先次序关系运算符及其优先次序4.3.2 关系表达式关系表达式关系运算符关系运算符:用来对两个数值进行比较用来对两个数值进行比较的的比较运算符比较运算符语言提供种关系运算符:语言提供种关系运算符: (小于小于) = (小于或等于小于或等于) (大于大于) = (大于或等于大于或等于) = (等于等于) != (不等于不等于) 优先级相同优先级相同 (高高)优先级相同优先级相同 (低低)关系关系、算术算术、赋值
32、运算符赋值运算符的优先级的优先级算术运算符算术运算符 (高高)赋值运算符赋值运算符 (低低)关系运算符关系运算符 ca+b 等效于等效于 c(a+b)ab=c 等效于等效于 (ab)=ca=bc 等效于等效于 a=(bc 等效于等效于 a=(bc)关系表达式关系表达式u用关系运算符将两个数值或数值表达式连用关系运算符将两个数值或数值表达式连接起来的式子接起来的式子u关系表达式的值是一个逻辑值,即关系表达式的值是一个逻辑值,即“真真”或或“假假”u在在C的逻辑运算中,以的逻辑运算中,以“”代表代表“真真”,以,以“”代表代表“假假”4.4.1 逻辑运算符及其优先次序逻辑运算符及其优先次序4.4.
33、2 逻辑表达式逻辑表达式4.4.3 逻辑型变量逻辑型变量3种逻辑运算符:种逻辑运算符:&(逻辑与逻辑与) |(逻辑或逻辑或) !(逻辑非逻辑非)&和和|是双目是双目(元元)运算符运算符!是一目是一目(元元)运算符运算符逻辑表达式逻辑表达式u用逻辑运算符将关系表达式或其他逻辑量连用逻辑运算符将关系表达式或其他逻辑量连接起来的式子接起来的式子ab! a! ba & ba | b 真真真真假假假假真真真真真真假假假假真真假假真真假假真真真真假假假假真真假假假假真真真真假假假假逻辑运算的真值表逻辑运算的真值表逻辑运算符的优先次序逻辑运算符的优先次序! & | (!为三者
34、中最高为三者中最高)与其他运算符的优先次序与其他运算符的优先次序 ! (高)(高)算术运算符算术运算符关系运算符关系运算符 & 和和 |赋值运算符赋值运算符 (低)(低)逻辑表达式的值应该是逻辑量逻辑表达式的值应该是逻辑量“真真”或或“假假”编译系统在编译系统在表示表示逻辑运算逻辑运算结果结果时时u以数值以数值1代表代表“真真”,以,以0代表代表“假假”但在但在判断判断一个量是否为一个量是否为“真真”时时u以以0代表代表“假假”,以非,以非0代表代表“真真”注意:注意:将一个非零的数值认作为将一个非零的数值认作为“真真”(1) 若若a=4,则,则!a的值为的值为0(2) 若若a=4,b
35、=5,则,则a & b的值为的值为1(3) a和和b值分别为值分别为4和和5,则则a|b的值为的值为1(4) a和和b值分别为值分别为4和和5,则则!a|b的值为的值为1(5) 4 & 0 | 2的值为的值为1修改后的修改后的逻辑运算真值表逻辑运算真值表ab! a! ba & ba | b 非非0非非00011非非000101假假非非01001假假01100有一种有一种if语句,当被判别的表达式的值语句,当被判别的表达式的值为为“真真”或或“假假” 时,都执行一个赋值时,都执行一个赋值语句且向同一个变量赋值语句且向同一个变量赋值如:如:if (ab) max=a; el
36、se max=b;max = (a b) ? a : b;条件运算符条件运算符有一种有一种if语句,当被判别的表达式的值语句,当被判别的表达式的值为为“真真”或或“假假” 时,都执行一个赋值时,都执行一个赋值语句且向同一个变量赋值语句且向同一个变量赋值如:如:if (ab) max=a; else max=b;max = (a b) ? a : b;条件条件表达式表达式条件表达式的一般形式为条件表达式的一般形式为表达式表达式?表达式表达式: 表达式表达式条件运算符的执行顺序:条件运算符的执行顺序:u求解表达式求解表达式1u若为非若为非0(真)则求解表达式(真)则求解表达式2,此时表达,此时表达
37、式式2的值就作为整个条件表达式的值的值就作为整个条件表达式的值u若表达式若表达式1的值为的值为0(假),则求解表达式(假),则求解表达式3,表达式,表达式3的值就是整个条件表达式的值的值就是整个条件表达式的值条件运算符优先于赋值运算符条件运算符优先于赋值运算符条件运算符的结合方向为条件运算符的结合方向为“自右至左自右至左”以下为合法的使用方法:以下为合法的使用方法:uab ? (max=a):(max=b);uab ? printf(“%d”,a): printf(“%d”,b);switch语句用来实现多分支选择结构语句用来实现多分支选择结构u学生成绩分类学生成绩分类85分以上为分以上为A等
38、等7084分为分为B等等6069分为分为C等等u人口统计分类人口统计分类 按年龄分为老、中、青、少、儿童按年龄分为老、中、青、少、儿童switch语句的作用是根据表达式的值,语句的作用是根据表达式的值,使流程跳转到不同的语句使流程跳转到不同的语句switch语句的一般形式语句的一般形式:switch(表达式)(表达式) case 常量常量1 :语句:语句1 case 常量常量2 :语句:语句2 case 常量常量n :语句:语句n default : 语句语句n+1整数类型整数类型(包括字符型包括字符型)switch语句的作用是根据表达式的值,语句的作用是根据表达式的值,使流程跳转到不同的语句
39、使流程跳转到不同的语句switch语句的一般形式语句的一般形式:switch(表达式)(表达式) case 常量常量1 :语句:语句1 case 常量常量2 :语句:语句2 case 常量常量n :语句:语句n default : 语句语句n+1不能相同不能相同分段函数分段函数例:例:例:读程序,给出程序的运行结果例:读程序,给出程序的运行结果5.1 为什么需要循环控制为什么需要循环控制5.2 用用while语句实现循环语句实现循环5.3 用用do-while语句实现循环语句实现循环5.4 用用for 语句实现循环语句实现循环5.5 循环的嵌套循环的嵌套5.6 几种循环的比较几种循环的比较5.
40、7 改变循环执行的状态改变循环执行的状态5.8 循环程序举例循环程序举例重点重点:三种基本循环结构的使用,三种基本循环结构的使用,while和和dowhile的区别,的区别,for结构中三个表达式的作结构中三个表达式的作用用判断素数算法判断素数算法递推算法递推算法求求n个数的和,平均值,最大值,最小值等个数的和,平均值,最大值,最小值等拆数算法:如数值转换(学会使用拆数算法:如数值转换(学会使用 n=n/d和和r=n%d)穷举算法,如水仙花数穷举算法,如水仙花数实现循环的语句(四种)实现循环的语句(四种)1、用、用goto语句和语句和if语句构成循环;语句构成循环; (不提倡)(不提倡)2、用
41、、用while语句;语句; (当型循环(当型循环先判断后执行)先判断后执行)3、用、用do-while语句;语句; (直到型循环(直到型循环先执行后判断)先执行后判断)4、用、用for语句。语句。 (多功能)(多功能) while语句的一般形式如下:语句的一般形式如下: while (表达式表达式) 语句语句;循环体循环体表达式语句N-S图 while语句的一般形式如下:语句的一般形式如下: while (表达式表达式) 语句语句“真真”时时执行循环体语句执行循环体语句“假假”时不执行时不执行循环条件表达式循环条件表达式while循环的特点是:循环的特点是:先判断条件表达式,后执行循环体语句先
42、判断条件表达式,后执行循环体语句注意:注意:u若循环体包含一条以上的语句,应以复合语句的形式出若循环体包含一条以上的语句,应以复合语句的形式出现;现;u循环循环前,必须给循环控制变量赋初值;前,必须给循环控制变量赋初值;u循环体循环体中,必须有改变循环控制变量值的语句(使循环中,必须有改变循环控制变量值的语句(使循环趋于结束的语句);趋于结束的语句);u循环体可以为空。循环体可以为空。例:例:while((c=getchar()!=A);等价等价于于 c=getchar();while(c!=A) c=getchar();do-while语句的特点:先无条件地语句的特点:先无条件地执行循环体,
43、然后判断循环条件是否成执行循环体,然后判断循环条件是否成立立do-while语句的一般形式为:语句的一般形式为: do 语句语句 while (表达式表达式);表达式表达式YN循环体语句循环体语句分号不能省略, 切记for语句的一般形式为语句的一般形式为 for(表达式表达式1;表达式;表达式2;表达式;表达式3) 语句语句设置初始条件,只执行一设置初始条件,只执行一次。可以为零个、一个或次。可以为零个、一个或多个变量设置初值多个变量设置初值执行执行for语句的一般形式为语句的一般形式为 for(表达式表达式1;表达式;表达式2;表达式;表达式3) 语句语句循环条件表达式,用来判定是否继续循环
44、条件表达式,用来判定是否继续循环。在每次执行循环体前先执行此循环。在每次执行循环体前先执行此表达式,决定是否继续执行循环表达式,决定是否继续执行循环for语句的一般形式为语句的一般形式为 for(表达式表达式1;表达式表达式2;表达式;表达式3) 语句语句作为循环的调整器,例如作为循环的调整器,例如使循环变量增值,它是在使循环变量增值,它是在执行完循环体后才进行的执行完循环体后才进行的for语句的执行过程语句的执行过程:(1) 先求解表达式先求解表达式1(2) 求解表达式求解表达式2,若,若其其值为真,执行循环体,值为真,执行循环体,然后执行下面第然后执行下面第(3)步。若为假,则结束循环,步
45、。若为假,则结束循环,转到第转到第(5)步步(3) 求解表达式求解表达式3(4) 转回上面步骤转回上面步骤(2)继续执行继续执行(5) 循环结束,执行循环结束,执行for语句下面的一个语句语句下面的一个语句求解表达式1表达式2语句求解表达式3for语句不仅可以用于循环次数已经确语句不仅可以用于循环次数已经确定的情况,还可以用于循环次数不确定定的情况,还可以用于循环次数不确定而只给出循环结束条件的情况而只给出循环结束条件的情况for语句完全可以代替语句完全可以代替while语句语句5.7.1 用用break语句提前终止循环语句提前终止循环5.7.2 用用continue语句提前结束本次循环语句提
46、前结束本次循环5.7.3 break语句和语句和continue语句的区别语句的区别break语句可以用来从循环体内跳出语句可以用来从循环体内跳出循环体,即提前结束循环,接着执行循环体,即提前结束循环,接着执行循环下面的语句循环下面的语句l 例例判断判断m是否为素数是否为素数输入mk=sqrt(m)i=2i=k+1 是 否 m是素数 m不是素数#include”math.h”void main()int m,i,k; scanf(“%d”,&m); k=sqrt(m); for(i=2;ik)printf(“%d是素数是素数”,m) else printf(“%d是合数是合数”,m);
47、结束循环,即转到for循环的下一语句。Break总是作if的内嵌语句flag=1flag=0;break;flag有时并不希望终止整个循环的操作,而有时并不希望终止整个循环的操作,而只希望提前结束本次循环,而接着执行只希望提前结束本次循环,而接着执行下次循环。这时可以用下次循环。这时可以用continue语句语句l 例例5.5 要求输出要求输出100200之间的不之间的不能被能被3整除的数。整除的数。(不能被不能被3也不能被也不能被7)编程思路:编程思路:u对对100到到200之间的每一个整数进行检查之间的每一个整数进行检查u如果不能被如果不能被3整除,输出,整除,输出,否则否则不输出不输出u
48、无论是否输出此数,都要接着检查下一个无论是否输出此数,都要接着检查下一个数数(直到直到200为止为止)。Nn=100n200Yn能被能被3整除整除Nn=n+1输出输出nYfor(n=100;n=200;n+) if (n%3=0) continue; printf(%d ,n); If(n%3)printf(“%d”,n);continue语句只结束本次循环,而不语句只结束本次循环,而不是终止整个循环的执行是终止整个循环的执行break语句结束整个循环过程,不再判语句结束整个循环过程,不再判断执行循环的条件是否成立断执行循环的条件是否成立N表达式表达式1Y表达式表达式2NYN表达式表达式1Y表
49、达式表达式2NYbreak语句语句continue语句语句强行退出循环强行退出循环只结束本次循环只结束本次循环 例例5.9输入一个大于输入一个大于3的整数的整数n,判定它,判定它是否素数是否素数(prime,又称质数,又称质数)。解题思路:解题思路:u让让n被被i整整除除(i的值从的值从2变到变到n-1)u如果如果n能被能被2(n-1)之中任何一个整数整除之中任何一个整数整除,则表示,则表示n肯定不是素数,不必再继续被后面肯定不是素数,不必再继续被后面的整数除,因此,可以提前结束循环的整数除,因此,可以提前结束循环u注意:此时注意:此时i的值必然小于的值必然小于nNNYn=i+1输入输入ni=
50、2i n-1Yn被被i整除整除i a输出不是素数输出不是素数Y输出是素数输出是素数N#include int main() int n,i; printf(“n=?); scanf(%d,&n); for (i=2;i=n-1;i+) if(n%i=0) break; if(in) printf(%d is notn,n); else printf(%d isn,n); return 0;#include int main() int n,i; printf(“n=?); scanf(%d,&n); for (i=2;i=n-1;i+) if(n%i=0) break; if(
51、in) printf(%d is notn,n); else printf(%d isn,n); return 0;nk=sqrt(n);#include int main() int n,i,k; printf(“n=?); scanf(%d,&n); for (i=2; i=k; i+) if(n%i=0) break; if(in) printf(%d is notn,n); else printf(%d isn,n); return 0;k=sqrt(n);#include #include int main() int n,i,k; printf(“n=?); scanf(%
52、d,&n); for (i=2; i=k; i+) if(n%i=0) break; if(i=k) printf(%d is notn,n); else printf(%d isn,n); return 0;k=sqrt(n);#include 例例5.10 求求100200间的全部素数。间的全部素数。(非非素数之和素数之和)解题思路:解题思路:u使用使用例例5.9的的算法算法u在在例例5.9程序中程序中只要增加一个外循环,先后对只要增加一个外循环,先后对100200间的全部整数一一进行判定即可间的全部整数一一进行判定即可 for(n=101;n=200;n=n+2) k=sqrt(
53、n); for (i=2;i=k+1) printf(%d ,n); m=m+1; if(m%10=0) printf(“n”); 只对奇数进行检查只对奇数进行检查控制每行输出控制每行输出10个数据个数据例:求例:求1001000之间的之间的“水仙花水仙花”数。数。如:如:153=13+53+33“水仙花水仙花”数:水仙花数是指一个数:水仙花数是指一个 n 位数位数 ( n3 ),它的每个位上的数字的,它的每个位上的数字的 n 次幂之次幂之和等于它本身。和等于它本身。水仙花数只是自幂数的一种,严格来说三位水仙花数只是自幂数的一种,严格来说三位数的数的3次幂数才成为水仙花数。次幂数才成为水仙花数
54、。例:读程序,写出程序运行结果例:读程序,写出程序运行结果7c98例:猴子吃桃例:猴子吃桃。猴子第一天摘下若干个桃子,当即吃了一半。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃一个。以后每天早上都吃了前一天剩下的一掉一半,又多吃一个。以后每天早上都吃了前一天剩下的一半零一个。到第半零一个。到第10天早上想再吃时,见只剩下一个桃子了天早上想再吃时,见只剩下一个桃子了。求第一天共摘多少桃子。求第一天共摘多少桃子。 分析:由到第10天早上想再吃时,见只剩下一个桃子了可知,事实上在第九天吃过
55、后就只有一个了.我们用total(day)来表示每一天的桃子数,这样由题意,total(10)=1,那么total(9)=(total(10)+1)*2,total(8)=(total(9)+1)*2. #include total(int day) int sum; if(day=10) sum=1; else if(day=2*n并并m3*n则则n为满足条件的为满足条件的三位数三位数void main()int I,j,k,n,m,s=0; for(i=0;i=2;+i) for(j=0;j=9;+j) for(k=2;k=2*n&m=2*i并并m3*i则则i为为满足条满足条件的三
56、位数件的三位数For(i=101;i=299;+i) n1=i/100 n2=(i-n1*100)/10 n3=i-100*n1-10*n2 m=100*n3+10*n2+n1例:例:1100中其各位数字的平方等于其本中其各位数字的平方等于其本身的所有整数。身的所有整数。数组是一组数组是一组有序数据的集合有序数据的集合。数组中。数组中各数据的排列是有一定规律的,下标各数据的排列是有一定规律的,下标代表数据在数组中的序号代表数据在数组中的序号用一个用一个数组名数组名和和下标下标惟一确定数组中惟一确定数组中的元素的元素数组中的每一个元素都属于数组中的每一个元素都属于同一个数同一个数据类型据类型6.
57、1 怎样定义和引用一维数组怎样定义和引用一维数组6.2 怎样定义和引用二维数组怎样定义和引用二维数组6.3 字符数组字符数组6.1.1 怎样定义一维数组怎样定义一维数组6.1.2 怎样引用一维数组元素怎样引用一维数组元素6.1.3 一维数组的初始化一维数组的初始化6.1.4 一维数组程序举例一维数组程序举例定义一维数组的一般形式为:定义一维数组的一般形式为: 类型符类型符 数组名数组名常量表达式常量表达式;数组名的命名规则和变量名相同数组名的命名规则和变量名相同如如 int a10;数组名数组名定义一维数组的一般形式为:定义一维数组的一般形式为: 类型符类型符 数组名数组名常量表达式常量表达式
58、;数组名的命名规则和变量名相同数组名的命名规则和变量名相同如如 int a10;数组数组长度长度定义一维数组的一般形式为:定义一维数组的一般形式为: 类型符类型符 数组名数组名常量表达式常量表达式;数组名的命名规则和变量名相同数组名的命名规则和变量名相同如如 int a10;10个元素个元素:a0,a1,a2,a9每个元素的数据类型每个元素的数据类型a0 a1 a2 a3a7 a8 a9定义一维数组的一般形式为:定义一维数组的一般形式为: 类型符类型符 数组名数组名常量表达式常量表达式;int a4+6; 合法合法int n=10; int an;int A10,b5; char c8; fl
59、oat X20,y4*M+1,w5; &(M是符号常量是符号常量)不合法不合法引用数组元素的表示形式为:引用数组元素的表示形式为: 数组名下标数组名下标如如a0=a5+a7-a2*3 合法合法int n=5,a10;an=20;合法合法在定义数组的同时,给各数组元素赋值在定义数组的同时,给各数组元素赋值int a10=0,1,2,3,4,5,6,7,8,9;int a10=0,1,2,3,4;相当于相当于 int a10=0,1,2,3,4,0,0,0,0,0;int a10=0,0,0,0,0,0,0,0,0,0;相当于相当于 int a10=0;int a5=1,2,3,4,5;可
60、写为可写为 int a =1,2,3,4,5;6.3.1怎样定义字符数组怎样定义字符数组6.3.2字符数组的初始化字符数组的初始化6.3.3怎样引用字符数组中的元素怎样引用字符数组中的元素6.3.4字符串和字符串结束标志字符串和字符串结束标志6.3.5 字符数组的输入输出字符数组的输入输出l6.3.6善于使用善于使用字符串处理函数字符串处理函数6.3.7字符数组应用举例字符数组应用举例一、字符数组的定义一、字符数组的定义 在在C语言中,没有专门的字符串变量,而是将字符串存入语言中,没有专门的字符串变量,而是将字符串存入字符数组来处理字符数组来处理 即用一个一维数组来存放一个字符串,每个元素存放一个即用一个一维数组来存放一个字符串,每个元素存放一个字符字符 字符数组是数组的一个特殊情况,但它的定义方法与上述字符数组是数组的一个特殊情况,但它的定义方法与上述介绍的类似;引用方法可以与上述介绍类同,也有其独特的介绍的类似;引用方法可以与上述介绍类同,也有其独特的引用方法引用方法 由于字符型与整型是互相通用的,因此上面
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安徽省宣城市2023-2024学年九年级上学期期末数学试题
- 2024年版:高端装备制造生产线融资租赁合同
- 2024-2030年中国双槽式清洗机项目可行性研究报告
- 2024全新年度企业师徒传承与品牌价值提升合同3篇
- 2024年特许经营合同的特许经营范围及权利义务
- 2024年玻璃幕墙制作安装合同
- 2024年标准化系统安装服务协议范本版B版
- 吕梁学院《会计学原理》2023-2024学年第一学期期末试卷
- 2024年度事业单位与境外专家劳动合同规范9篇
- 2024年桃树果苗采购合同样本3篇
- 区块链技术与应用学习通超星期末考试答案章节答案2024年
- 新质生产力背景下高质量职业教育教材建设的创新实践
- GB/T 22517.2-2024体育场地使用要求及检验方法第2部分:游泳场地
- 2024-2030年生命科学中的工业自动化行业市场现状供需分析及投资评估规划分析研究报告
- 三角形的高、中线与角平分线课件
- 在线教育平台行业五年发展洞察及发展预测分析报告
- 2023年部编版道德与法治五年级下册全册单元复习课教案
- 2024年江苏苏州市事业单位专业化青年人才定岗特选444人历年高频500题难、易错点模拟试题附带答案详解
- 学校食堂舆情处置预案
- 一年级心理健康课件生命真美好苏科版
- 2024年大学生信息素养大赛(省赛)考试题库(含答案)
评论
0/150
提交评论