一教学对象计算机科学与技术系新生第二学期二教ppt课件_第1页
一教学对象计算机科学与技术系新生第二学期二教ppt课件_第2页
一教学对象计算机科学与技术系新生第二学期二教ppt课件_第3页
一教学对象计算机科学与技术系新生第二学期二教ppt课件_第4页
一教学对象计算机科学与技术系新生第二学期二教ppt课件_第5页
已阅读5页,还剩180页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C语言程序设计语言程序设计一、教学对象 计算机科学与技术系新生(第二学期 二、教学目的 程序设计的重要性 程序设计的根本概念与根本方法 编程解题的思绪与典型方法 数学模型简介 算法及算法步骤 程序构造与相应语句 编码与上机调试C语言程序设计语言程序设计 三、教学重点 1. 程序设计的根本概念,根本方法; 2.在 C言语的环境下,学会如何针对问题进展分析,得出数学模型,理出算法并编程实现; 3.有条有理有根有据的编程实际; 4.养成良好的编程风格与习惯; 5.重在思想方法的学习,鼓励创新。C语言程序设计语言程序设计四、指点思想四、指点思想1. 1. 立足改革,以培育高素质有发明精神的人才为这门课

2、立足改革,以培育高素质有发明精神的人才为这门课的教学目的。的教学目的。2. 2. 以学生为中心,采用与现实生活贴切和具有兴趣性的以学生为中心,采用与现实生活贴切和具有兴趣性的实例进展讲解,有利于调动学生学习的积极性,引导学实例进展讲解,有利于调动学生学习的积极性,引导学生自动学习。生自动学习。 3. 3. 强化实际,这门课主张程序设计是高强度的脑力劳动,强化实际,这门课主张程序设计是高强度的脑力劳动,不是听会的、也不是看会的,而是练会的。引导学生在不是听会的、也不是看会的,而是练会的。引导学生在解题编程的实际中探求其中带规律性的认识。将感性认解题编程的实际中探求其中带规律性的认识。将感性认识升

3、华到理性高度。识升华到理性高度。C语言程序设计语言程序设计五、学习方法五、学习方法 1.1.动手动脑,实际指点下的实际动手动脑,实际指点下的实际 有条有理的实际。有条有理的实际。 2.2.在编写大量程序之后,才干感到运用自若。在编写大量程序之后,才干感到运用自若。C语言程序设计语言程序设计六、教学内容安排六、教学内容安排 1. 1. 简单简单C C程序设计;程序设计; 2. 2. 分支构造程序设计;分支构造程序设计; 3. 3. 循环构造程序设计;循环构造程序设计; 4. 4. 数组;数组; 5. 5. 函数;函数; 6. 6. 递归及其实现方法递归及其实现方法 7. 7. 指针;指针; 8.

4、 8. 构造体与链表。构造体与链表。C语言程序设计语言程序设计1.1 1.1 认识认识C C言语程序言语程序 1.1.程序实例程序实例#include /#include /预编译命令预编译命令, ,将规范输入输出函数将规范输入输出函数 / /作为头文件包扩到用户源文件中作为头文件包扩到用户源文件中 #include /#include /预编译命令预编译命令, ,将系统提供的数学函数将系统提供的数学函数 / /作为头文件包扩到用户源文件中作为头文件包扩到用户源文件中 main( )main( ) / /主函数,名为主函数,名为mainmain, / /函数体函数体. .开场开场 float

5、a,b,c;float a,b,c; / /声明部分声明部分. .定义变量类型定义变量类型 b=30.0;b=30.0; / /执行部分执行部分. .赋值语句赋值语句 a=sin(ba=sin(b* *3.14159/180); /3.14159/180); /执行部分执行部分. .赋值语句赋值语句 printf(printf(“%fn%fn,a);,a);/执行部分执行部分. .输出语句输出语句 / /函数体函数体. .终了终了第一讲第一讲 简单的简单的C C程序设计程序设计C语言程序设计语言程序设计1.2 实例总结实例总结 1.C程序构造程序构造预编译命令预编译命令主函数主函数 main(

6、 ) 函数体开场函数体开场 声明部分声明部分 执行部分执行部分 函数体终了函数体终了第一讲第一讲 简单的简单的C C程序设计程序设计C语言程序设计语言程序设计2.2.变量的类型变量的类型 整型:整型:int int 长整型:长整型:longlong 浮点型:浮点型:floatfloat 双精度型:双精度型:doubledouble 字符型:字符型:charchar 用户自定义类型用户自定义类型第一讲第一讲 简单的简单的C C程序设计程序设计C语言程序设计语言程序设计 3.3.声明的作用声明的作用 为变量分配内存单元,变量名作为内存单元的符为变量分配内存单元,变量名作为内存单元的符号地址,这件事

7、是在程序编译链接时完成的。号地址,这件事是在程序编译链接时完成的。 4. 4. 变量变量 其值可以改动的量,是内存单元的符号地址。其值可以改动的量,是内存单元的符号地址。 经过符号经过符号b b可以找到相应的存储单元地址,假设为可以找到相应的存储单元地址,假设为10001000。 语句语句 b=30.0b=30.0; 是将值是将值30.030.0存放在地址为存放在地址为10001000的存储单元。的存储单元。第一讲第一讲 简单的简单的C C程序设计程序设计C语言程序设计语言程序设计5.5.对变量的赋值对变量的赋值 赋值符号赋值符号“= = b = 30.0; b = 30.0;/ / 读作将表

8、达式的值读作将表达式的值30.030.0赋给变赋给变量量b b a=sin(b a=sin(b* *3.14159/180);3.14159/180); / / 读作将表达式正弦函数的值赋给变量读作将表达式正弦函数的值赋给变量a a 第一讲第一讲 简单的简单的C C程序设计程序设计C语言程序设计语言程序设计6.6.变量赋值特点变量赋值特点 1 1先定义,后运用先定义,后运用 int d,e,f; int d,e,f;定义三个变量为整数类型定义三个变量为整数类型 如未定义,那么在编译时被查出,以为非法如未定义,那么在编译时被查出,以为非法 2 2变量未被赋值前,值为未知变量未被赋值前,值为未知

9、3 3对变量赋值过程是对变量赋值过程是“覆盖过程,用新值去交换旧覆盖过程,用新值去交换旧4 4读出变量的值,该变量坚持不变读出变量的值,该变量坚持不变 5 5参与表达式运算的一切变量都坚持原来的值不变参与表达式运算的一切变量都坚持原来的值不变第一讲第一讲 简单的简单的C C程序设计程序设计C语言程序设计语言程序设计变量赋值过程变量赋值过程 d e fd e f未赋值前未赋值前执行执行d=7d=7执行执行 e=d e=d 执行执行 f=d+ef=d+e执行执行 d=d+1 000d=d+1 000-12349723431607234316077077148714第一讲第一讲 简单的简单的C C程

10、序设计程序设计C语言程序设计语言程序设计7. 7. 输出语句输出语句 printf printf函数格式输出函数函数格式输出函数 普通方式为普通方式为 printf( printf(参数参数1 1,参数,参数2 2,参数,参数3 3,参数,参数n n 其中参数其中参数11格式控制格式控制 参数参数2 2,参数,参数3 3,参数,参数nn输出表列输出表列 举例:举例: float a; float a; int b; int b; a = 85.56; a = 85.56; b = 100; b = 100; printf(%f %d, a, b); printf(%f %d, a, b);第一

11、讲第一讲 简单的简单的C C程序设计程序设计C语言程序设计语言程序设计格式控制是用双引号括起来的字符串,称格式控制是用双引号括起来的字符串,称“转换控制字符转换控制字符串串%f %f 第一个输出表列的格式阐明,以小数方式输出单、第一个输出表列的格式阐明,以小数方式输出单、双精度实数,隐含输出双精度实数,隐含输出6 6位小数位小数 %d %d 第二个输出表列的格式阐明,以带有符号的十进第二个输出表列的格式阐明,以带有符号的十进制方式输出整数正数不输出符号制方式输出整数正数不输出符号 显然,显然,%f%f是控制实数是控制实数a a的;的;%d%d是控制整数是控制整数b b的的第一讲第一讲 简单的简

12、单的C C程序设计程序设计C语言程序设计语言程序设计为了醒目,格式控制项中除格式阐明之外可以有为了醒目,格式控制项中除格式阐明之外可以有普通字符普通字符例例: printf(: printf(“a=%f b=%d, a, b); a=%f b=%d, a, b); 输出结果为:输出结果为: a=85.560000 b=100 a=85.560000 b=100换行符号换行符号 例例: printf(: printf(“a=%fnb=%da=%fnb=%d,a,b);,a,b);输出结果为:输出结果为: a=85.560000 a=85.560000 b=100 b=100域宽和精度域宽和精度例

13、:例:printfprintf%5.3f%5.3f,a a;第一讲第一讲 简单的简单的C C程序设计程序设计C语言程序设计语言程序设计8. 数学函数数学函数 sin(x)x为弧度,为弧度,double x,double sin(x) cos(x) cos(x)exp(x) exlog(x) logexlog10(x) log10 xfabs(x) xfmod(x,y) 整除整除x/y的余数的余数floor(x) 求不大于求不大于x的最大整数的最大整数pow(x, y) xysqrt(x) x1/2第一讲第一讲 简单的简单的C C程序设计程序设计C语言程序设计语言程序设计9. 算术运算符算术运算

14、符 加加 减减 *乘乘 / 除除 % 模取余数模取余数第一讲第一讲 简单的简单的C C程序设计程序设计C语言程序设计语言程序设计1.3 1.3 作业作业第一讲第一讲 简单的简单的C C程序设计程序设计C语言程序设计语言程序设计 我们在日常生活中经常需求处置具有两个分支的问题,例我们在日常生活中经常需求处置具有两个分支的问题,例如,假设明天下雨,那么在教室内组织活动,否那么去野游。如,假设明天下雨,那么在教室内组织活动,否那么去野游。 在在C C言语中,这类问题需求运用言语中,这类问题需求运用ifif语句处理,而判别操语句处理,而判别操作通常运用关系运算符。作通常运用关系运算符。关系运算符和关系

15、表达式关系运算符和关系表达式 大于大于 =大于等于大于等于 = = 小于等于小于等于 =等于等于 !=!=不等于不等于第二讲第二讲 分支构造分支构造C语言程序设计语言程序设计2.1 2.1 掌握掌握ifif语句的运用方法语句的运用方法【实例】编写程序,判别输入的整数能否为【实例】编写程序,判别输入的整数能否为6 6,假设是,显示,假设是,显示“RightRight!和!和“Great!Great!,否那么显示,否那么显示“WrongWrong!和!和“SorrySorry!。!。 1 1编程思绪:编程思绪: 要显示要显示“RightRight!和!和“GreatGreat!,应执行两条语句!,

16、应执行两条语句“printf(printf(RightRight!nn“););和和“printf(printf(GreatGreat!nn“););,要显示,要显示“WrongWrong!和!和“SorrySorry!,执行两条语句!,执行两条语句“printf(printf(WrongWrong! n n“););和和“printf(printf(SorrySorry!nn“););。此题需求根据所输入的值假设赋给。此题需求根据所输入的值假设赋给a a能否为能否为6 6来选择来选择执行相应的两条语句。执行相应的两条语句。 在在C C言语中判别言语中判别a a中的值能否为中的值能否为6 6,

17、运用,运用“if(a=6)if(a=6)方式。方式。 第二讲第二讲 分支构造分支构造C语言程序设计语言程序设计本实例的流程图如下图 开场输入a值a=6显示“Right!显示“Great!显示“Wrong!显示“Sorry!终了假真第二讲第二讲 分支构造分支构造C语言程序设计语言程序设计本实例的N-S流程图如下图输入a的值a=6显示“Right! 显示“Great! 显示“Wrong! 显示“Sorry! 第二讲第二讲 分支构造分支构造C语言程序设计语言程序设计2 2程序代码:程序代码:#include #include main()main() int a=0; int a=0; printf

18、(Input a:); scanf(%d,&a); printf(Input a:); scanf(%d,&a); printf(a=%dn,a); printf(a=%dn,a); if(a=6) if(a=6)/ /* * if if语句开场语句开场 * */ / printf(Rightprintf(Right!n);n); printf(Great printf(Great!n);n); else else printf(Wrongprintf(Wrong!n);n); printf(Sorry printf(Sorry!n); /n); /* * if if语句终了语

19、句终了 * */ / 第二讲第二讲 分支构造分支构造C语言程序设计语言程序设计3 3运转结果:运转结果: 第第1 1次运转结果:次运转结果: Input a:6Input a:6 a=6 a=6 Right Right! GreatGreat! 第第2 2次运转结果:次运转结果: Input a:5Input a:5 a=5 a=5 Wrong Wrong! SorrySorry!第二讲第二讲 分支构造分支构造C语言程序设计语言程序设计4 4归纳分析:归纳分析: 1 1程序中的程序中的“a=6a=6是关系表达式。是关系表达式。用关系运算符把两个用关系运算符把两个C C言语表达式衔接起来的表达式

20、称为关系言语表达式衔接起来的表达式称为关系表达式。关系运算的判别结果只需表达式。关系运算的判别结果只需“真或真或“假两种能假两种能够,关系成立时为够,关系成立时为“真,不成立时为真,不成立时为“假。假。关系表达式的值只能是关系表达式的值只能是1 1或或0 0,当关系运算的判别结果为,当关系运算的判别结果为“真真时,关系表达式的值为时,关系表达式的值为 1 1,否那么,关系表达式的值为,否那么,关系表达式的值为0 0。例如,当例如,当a a的值为的值为6 6时,关系表达式时,关系表达式“a=6a=6的值为的值为1 1,当,当a a的值为的值为5 5时,关系表达式时,关系表达式“a=6a=6的值为

21、的值为0 0。第二讲第二讲 分支构造分支构造C语言程序设计语言程序设计2 2程序中的程序中的“if(a=6)if(a=6)是是ifif语句的开场部分。语句的开场部分。 本例题需求根据本例题需求根据“a=6a=6能否为能否为“真来选择执行不同的真来选择执行不同的两个输出语句。处置两个分支的问题时常运用两个输出语句。处置两个分支的问题时常运用ifif语句。语句。ifif语句语句根据其后面括号中表达式的结果,选择执行某个分支程序段。根据其后面括号中表达式的结果,选择执行某个分支程序段。 if if语句的普通方式如下:语句的普通方式如下: if( if(表达式表达式) ) 语句组语句组1 1 else

22、 else 语句组语句组2 2 “ifif和和“elseelse是关键字。当表达式结果为是关键字。当表达式结果为“真即不等真即不等于于0 0时,执行语句组时,执行语句组1 1,表达式结果为,表达式结果为“假即等于假即等于0 0时,时,执行语句组执行语句组2 2。在语句组。在语句组1 1和语句组和语句组2 2中只能选择执行一组,而中只能选择执行一组,而后执行整个后执行整个ifif语句后面的语句。语句后面的语句。 第二讲第二讲 分支构造分支构造C语言程序设计语言程序设计3 C言语中允许程序中的if语句不带else部分。省略else的if语句普通方式如下: if(表达式) 语句组 此if语句的执行过

23、程: 当表达式结果为“真时,执行语句组,表达式结果为“假时,不处置。 第二讲第二讲 分支构造分支构造C语言程序设计语言程序设计2.2学会运用逻辑运算符 处置问题时经常需求同时判别多个条件。例如,在某学生数学和英语成果中判别能否至少有一门课程是不及格。这时运用逻辑运算符。逻辑运算符共有三种: & 逻辑与 | 逻辑或 ! 逻辑非这3个运算符按高到低的优先级顺序是“!、“&、“| 普通而言,单目运算符优先级较高,赋值运算符优先级低。 算术运算符优先级较高,关系和逻辑运算符优先级较低。 第二讲第二讲 分支构造分支构造C语言程序设计语言程序设计【实例】编写程序,判别某人的体重能否在50公

24、斤至55公斤之间,假设在此范围之内,显示“Ok,否那么显示“No。1编程思绪: 先将体重存放在变量w中,要使w的值在50至55范围内,应同时满足“w=50和“w=50 & w=50和“w=50 & w=50 & w=55显示“Ok显示“No第二讲第二讲 分支构造分支构造C语言程序设计语言程序设计2 2程序代码:程序代码: #include #include main()main() float w=0.0; float w=0.0; printf(Input w:); printf(Input w:); scanf(%f,&w); scanf(%f,&w

25、); printf(w=%.1fn,w); printf(w=%.1fn,w); if(w=50&w=50&w=55) printf(Okn); printf(Okn); else else printf(Non); printf(Non); 第二讲第二讲 分支构造分支构造C语言程序设计语言程序设计3.运转结果:第1次运转结果:Input w:53.5w=53.5Ok第2次运转结果:Input w:60.7w=60.7No第二讲第二讲 分支构造分支构造C语言程序设计语言程序设计4 4归纳分析:归纳分析: 程序中的程序中的“w=50 & w=50 & w0且w0

26、& w0 & w=50 w=50 w=55) / /* * 内嵌内嵌ifif语句开场语句开场 * */ /printf(printf(“Okn);Okn);elseelseprintf(Non);/printf(Non);/* * 内嵌内嵌ifif语句终了语句终了 * */ / else elseprintf(Data over!n);/printf(Data over!n);/* * 外嵌外嵌ifif语句终了语句终了 * */ / 第二讲第二讲 分支构造分支构造C语言程序设计语言程序设计3 3运转结果:运转结果:第第1 1次运转结果:次运转结果:Input w:53.5Inp

27、ut w:53.5 w=53.5w=53.5OkOk第第2 2次运转结果:次运转结果:Input w:60.7Input w:60.7 w=60.7w=60.7NoNo第第3 3次运转结果:次运转结果:Input w:201.7Input w:201.7 w=201.7w=201.7Data over!Data over!第二讲第二讲 分支构造分支构造C语言程序设计语言程序设计4归纳分析:1本程序在一个if语句中包含了另一个if语句。在if语句的语句组1或语句组2中又包含另一个分支构造的if语句称为嵌套的if语句。2本程序中出现了两次else。 C语法规定,在if语句中,假设多次出现else,

28、那么每一个else总是与前面最近的if配对,所以本例题中第一个else与内嵌的if配对,第二个else与最上面的if配对。程序中由于采用了缩进格式,if与else的配对关系一目了然。 第二讲第二讲 分支构造分支构造C语言程序设计语言程序设计2.42.4学会运用学会运用if-else ifif-else if方式的嵌套方式的嵌套ifif语句语句 【实例】编写程序,求下面分段函数的值,要求【实例】编写程序,求下面分段函数的值,要求x x的值从键盘输的值从键盘输入。入。 x+2 (0 x5)y=0 (x0)x2-3 (5x10)10 (x10)第二讲第二讲 分支构造分支构造C语言程序设计语言程序设计

29、1 1编程思绪:编程思绪: 开场开场输入输入x值值x0终了终了假假真真真真假假显示显示x x和和y y的值的值x5真真假假x10y=x+2y=10y=x2-3y=0第二讲第二讲 分支构造分支构造C语言程序设计语言程序设计2 2程序代码:程序代码:#include #include main()main() float x=0,y=0;float x=0,y=0;printf(Input x:);printf(Input x:); scanf(%f,&x); scanf(%f,&x); if(x0) if(x0)y=0;y=0; else else if(x5) y=x+2; i

30、f(x5) y=x+2; else else if(x10) y=x if(x10) y=x* *x-3;x-3; else y=10; else y=10; printf(x=%f,y=%fn,x,y); printf(x=%f,y=%fn,x,y); 第二讲第二讲 分支构造分支构造C语言程序设计语言程序设计2.5 switch语句 在日常生活中经常遇到菜单项选择择操作,例如,用ATM自动取款机取钱时,从菜单中可以选择语种、取款额;用自动效力系统给手机充值时,可以选择查余额还是充值,对本机充值还是对其他号码充值等。这些问题普通运用switch语句处理。 总之,这些问题都是多分支情况。第二讲第

31、二讲 分支构造分支构造C语言程序设计语言程序设计【实例】编写程序,在如下菜单中选择一个运算类型,并【实例】编写程序,在如下菜单中选择一个运算类型,并进展相应的运算。如选择了加法,那么进展求和运算。进展相应的运算。如选择了加法,那么进展求和运算。Please choose Please choose + : addition+ : addition- : subtraction- : subtraction* * : multiplication : multiplication/ : division/ : division第二讲第二讲 分支构造分支构造C语言程序设计语言程序设计1 1程序代码

32、:程序代码:#include #include main()main()float a=5.0,b=2.0,c=0.0;float a=5.0,b=2.0,c=0.0;char sym=0;char sym=0;printf(Please choosen);printf(Please choosen);printf(+ : additionn);printf(+ : additionn);printf(- : subtractionn);printf(- : subtractionn);printf(printf(* * : multiplicationn); : multiplication

33、n);printf(/ : divisionn);printf(/ : divisionn);sym=getchar();sym=getchar();printf(%f%c%f=,a,sym,b); printf(%f%c%f=,a,sym,b); / /* * 显示算式显示算式 * */ /第二讲第二讲 分支构造分支构造C语言程序设计语言程序设计switch(sym) switch(sym) / /* * 计算算式计算算式 * */ / case +: c=a+b; break; case +: c=a+b; break; case -: c=a-b; break; case -: c=a-

34、b; break; case case * *: c=a: c=a* *b; break;b; break; case /: c=a/b; break; case /: c=a/b; break; printf(%fn,c); printf(%fn,c); / /* * 显示结果显示结果 * */ / 第二讲第二讲 分支构造分支构造C语言程序设计语言程序设计2 2运转结果:运转结果:Please choosePlease choose+ : addition+ : addition- : subtraction- : subtraction* * : multiplication : mult

35、iplication/ : division/ : division/ 5.000000/2.000000=2.500000 5.000000/2.000000=2.500000 第二讲第二讲 分支构造分支构造C语言程序设计语言程序设计3 3归纳分析:归纳分析:switchswitch语句的普通方式为:语句的普通方式为:switch(switch(表达式表达式) ) case case 表达式表达式1: 1: 语句组语句组1 break;1 break; case case 表达式表达式2: 2: 语句组语句组2 break;2 break; case case 表达式表达式n: n: 语句组

36、语句组n break;n break; default: default: 语句组语句组n+1 break;n+1 break; 其中其中switchswitch、casecase、defaultdefault和和breakbreak是关键字,一切表达式均是关键字,一切表达式均为整型或字符型。在表达式为整型或字符型。在表达式1 1、表达式、表达式2 2、表达式、表达式n n中只能中只能出现常量和运算符,而且每个表达式的值不能相等。出现常量和运算符,而且每个表达式的值不能相等。 第二讲第二讲 分支构造分支构造C语言程序设计语言程序设计2.6 2.6 条件运算符及其表达式条件运算符及其表达式 C

37、C言语中条件运算符由言语中条件运算符由“? ?和和“: :组成,例如组成,例如“ab ? a : ab ? a : b b。条件表达式的普通方式为:条件表达式的普通方式为:表达式表达式1 1 ?表达式?表达式2 2 :表达式:表达式3 3当表达式当表达式1 1的值为非的值为非0 0时,以表达式时,以表达式2 2的值作为条件表达式的值,的值作为条件表达式的值,否那么,以表达式否那么,以表达式3 3的值作为条件表达式的值。例如,当的值作为条件表达式的值。例如,当abab成立时,条件表达式成立时,条件表达式“ab ? a : bab ? a : b的值为的值为a a中的值,中的值,否那么为否那么为b

38、 b中的值。中的值。 运用条件表达式也可以实现分支构造。运用条件表达式也可以实现分支构造。 第二讲第二讲 分支构造分支构造C语言程序设计语言程序设计课堂讨论:谁做的好事?课堂讨论:谁做的好事? 忻州师院有四位同窗中的一位做了好事,不留名,表扬信来忻州师院有四位同窗中的一位做了好事,不留名,表扬信来了之后,校长问这四位是谁做的好事。了之后,校长问这四位是谁做的好事。 A说:不是我。说:不是我。 B说:说:是是C。 C说:是说:是D。 D说:说:C胡说。胡说。 知三个人说的是真话,知三个人说的是真话,一个人说的是假话。如今要根据这些信息,找出做了好事的一个人说的是假话。如今要根据这些信息,找出做了

39、好事的人。画出人。画出N-S流程图并写出程序。流程图并写出程序。第二讲第二讲 分支构造分支构造C语言程序设计语言程序设计第二讲第二讲 分支构造分支构造C语言程序设计语言程序设计第二讲第二讲 分支构造分支构造C语言程序设计语言程序设计第二讲第二讲 分支构造分支构造C语言程序设计语言程序设计 循环构造是程序中一种很重要的构造。其特点循环构造是程序中一种很重要的构造。其特点是,是, 在给定条件成立时,反复执行某程序段,直到在给定条件成立时,反复执行某程序段,直到条件不成立为止。条件不成立为止。 给定的条件称为循环条件,反复给定的条件称为循环条件,反复执行的程序段称为循环体。执行的程序段称为循环体。

40、言语提供了三种循环言语提供了三种循环语句,可以组成各种不同方式的循环构造语句,可以组成各种不同方式的循环构造, ,它们是它们是: : 语句语句 语句语句 语句语句第三讲第三讲 循环构造循环构造C语言程序设计语言程序设计3.1 3.1 简单循环简单循环【实例】古典问题:有一对兔子,从出生后第【实例】古典问题:有一对兔子,从出生后第3 3个月起个月起每个月都生一对兔子,小兔子长到第三个月后每个月每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假设兔子都不死,问每个月的兔子总又生一对兔子,假设兔子都不死,问每个月的兔子总数为多少?数为多少?1.1.程序分析:兔子的规律为数列程序分析:兔子

41、的规律为数列1,1,2,3,5,8,13,21.1,1,2,3,5,8,13,21.该数列的规律为该数列的规律为 a1=1a1=1 a2=1 a2=1 an=an-1+an-2 an=an-1+an-2 这里求前这里求前2020项项第三讲第三讲 循环构造循环构造C语言程序设计语言程序设计i=20a1=1;a2=1; i=3an=a1+a2输出ani=i+1;a1=a2;a2=an;YendbeginN第三讲第三讲 循环构造循环构造C语言程序设计语言程序设计该标题的该标题的N-SN-S流程图流程图a1=1;a2=1;an=0;i=20an=a1+a2输出ani=i+1a1=a2a2=an第三讲第

42、三讲 循环构造循环构造C语言程序设计语言程序设计2.程序源代码:方法一:for循环语句#include stdio.hmain( ) long a1,a2,an; int i; a1=a2=1; for(i=3;i=20;i+) an=a1+a2; printf(“a%d=%ld,i,an); a1=a2; a2=an; 可否互换?第三讲第三讲 循环构造循环构造C语言程序设计语言程序设计方法二:while循环语句#include stdio.hmain( ) long a1,a2,an; int i; a1=a2=1;i=3; whilei=20 an=a1+a2; printf(“a%d=%

43、ld,i,an); a1=a2; a2=an; i+; 第三讲第三讲 循环构造循环构造C语言程序设计语言程序设计方法三:do-while循环语句#include stdio.hmain( ) long a1,a2,an; int i; a1=a2=1;i=3; do an=a1+a2; printf(“a%d=%ld,i,an); a1=a2; a2=an; i+; whilei=20); 第三讲第三讲 循环构造循环构造C语言程序设计语言程序设计3.3.归纳分析归纳分析1 1forfor语句格式:语句格式: for ( for ( 表达式表达式1 ; 1 ; 表达式表达式2 ; 2 ; 表达式

44、表达式3 ) 3 ) 语句语句 即:即: for (for (循环变量赋初值循环变量赋初值 , , 循环终了条件循环终了条件 , , 循环循环变量增值变量增值 ) ) 语句语句 第三讲第三讲 循环构造循环构造C语言程序设计语言程序设计ForFor语句执行过程语句执行过程表达式1 表达式2 表达式3 语 句 YN第三讲第三讲 循环构造循环构造C语言程序设计语言程序设计表达式可以省略,但分号不能省略表达式可以省略,但分号不能省略a) a) 省略表达式省略表达式1 1 i=1 i=1 for ( for ( ;i=50 i=50 ;i+ ) sum=sum+2i+ ) sum=sum+2* *i i

45、b) b) 省略表达式省略表达式22产生死循环产生死循环 for ( i=1 for ( i=1; ;i+ ) sum=sum+2i+ ) sum=sum+2* *i ic) c) 省略表达式省略表达式3 3 for ( i=1 for ( i=1;i=50 i=50 ;) ) sum=sum+2 sum=sum+2* *i; i+;i; i+;d) d) 省略表达式省略表达式1 , 1 , 省略表达式省略表达式3 3 i=1 i=1 for ( for ( ;i=50 i=50 ;) ) sum=sum+2 sum=sum+2* *i; i+; i; i+; 第三讲第三讲 循环构造循环构造C

46、语言程序设计语言程序设计表达式表达式1 1,表达式,表达式3 3可以是:可以是: a) a) 简单的表达式简单的表达式 b)b)逗号表达式逗号表达式表达式表达式2 2 普通是关系表达式或逻辑表达式普通是关系表达式或逻辑表达式例:例:for ( sum=0 , i=1 ; i=50 ; i+,i+ )for ( sum=0 , i=1 ; i=50 ; i+,i+ ) sum=sum+2 sum=sum+2* *i;i;或:或:for ( sum=0 , i=1 ; i=50 ; i=i+2 )for ( sum=0 , i=1 ; i=50 ; i=i+2 ) sum=sum+2 sum=su

47、m+2* *i i第三讲第三讲 循环构造循环构造C语言程序设计语言程序设计(2) while(2) while语句的普通方式为:语句的普通方式为: while(while(表达式表达式) ) 语句;语句; 其中表达式是循环条件,语句为循环体。其中表达式是循环条件,语句为循环体。whilewhile语句的语义是:语句的语义是: 计算表达式的值,当值为真计算表达式的值,当值为真( (非非0)0)时,执行循环体语句。时,执行循环体语句。第三讲第三讲 循环构造循环构造C语言程序设计语言程序设计运用运用whilewhile语句应留意以下几点:语句应留意以下几点:1.while1.while语句中的表达式

48、普通是关系表达或逻辑表达式,只语句中的表达式普通是关系表达或逻辑表达式,只需表达式的值为真需表达式的值为真( (非非0)0)即可继续循环。即可继续循环。2.2.循环体如包括有一个以上的语句,那么必需用循环体如包括有一个以上的语句,那么必需用括起来,括起来, 组成复合语句。组成复合语句。3.3.应留意循环条件的选择以防止死循环应留意循环条件的选择以防止死循环, ,普通需求在循环体普通需求在循环体中动态改动循环条件的值。中动态改动循环条件的值。第三讲第三讲 循环构造循环构造C语言程序设计语言程序设计(3) do-while(3) do-while语句的普通方式为:语句的普通方式为: dodo语句;

49、语句; while(while(表达式表达式) ); 其中语句是循环体,表达式是循环条件。其中语句是循环体,表达式是循环条件。do-whiledo-while语句的语义是:语句的语义是:先执行循环体语句一次,先执行循环体语句一次, 再判别表达式的值,假设为真再判别表达式的值,假设为真( (非非0)0)那么继续循环,否那么终止循环。那么继续循环,否那么终止循环。do-whiledo-while语句和语句和whilewhile语句的区别在于语句的区别在于do-whiledo-while是先执行后是先执行后判别,因此判别,因此do-whiledo-while至少要执行一次循环体。而至少要执行一次循环

50、体。而whilewhile是先是先判别后执行,假设条件不满足,那么一次循环体语句也不判别后执行,假设条件不满足,那么一次循环体语句也不执行。执行。第三讲第三讲 循环构造循环构造C语言程序设计语言程序设计(4)(4)循环体语句可运用循环体语句可运用break break 和和continuecontinue语句语句breakbreak:可以用来从循环体内跳出循环体提早终了循环:可以用来从循环体内跳出循环体提早终了循环continuecontinue:用于跳过循环体中下面尚未执行的语句,接着重:用于跳过循环体中下面尚未执行的语句,接着重新执行循环的判别新执行循环的判别例例: :输出输出100100

51、以内能被以内能被7 7整除的数。整除的数。 int n;int n;for(n=7;n=100;n+)for(n=7;n=100;n+) if (n%7!=0)if (n%7!=0)continue;continue;printf(%d ,n);printf(%d ,n); 第三讲第三讲 循环构造循环构造C语言程序设计语言程序设计练习:练习:1.1.有一分数序列:有一分数序列:2/12/1,3/23/2,5/35/3,8/58/5,13/813/8,21/13.21/13.求出这个数列的前求出这个数列的前2020项之和。项之和。2.2.求求1+2!+3!+.+20!1+2!+3!+.+20!的

52、和。的和。3.3.用牛顿切线法求用牛顿切线法求x-sin(x)=0 x-sin(x)=0在区间在区间0 0,之之间的解。间的解。4.4.恣意输入两个数,求这两个数的最大公约数。恣意输入两个数,求这两个数的最大公约数。5.5.从键盘输入一个数判别其能否为素数。从键盘输入一个数判别其能否为素数。第三讲第三讲 循环构造循环构造C语言程序设计语言程序设计作业:作业:求求s=a+aa+aaa+aaaa+aa.as=a+aa+aaa+aaaa+aa.a的值,其中的值,其中a a是一个数字。例如是一个数字。例如2+22+222+2222+22222(2+22+222+2222+22222(此时共有此时共有5

53、 5个数相加个数相加) ),几个数相加,几个数相加由键盘输入控制。由键盘输入控制。一球从一球从100100米高度自在落下,每次落地后反跳回原高度的一半;米高度自在落下,每次落地后反跳回原高度的一半;再落下,求它在第再落下,求它在第1010次落地时,共经过多少米?第次落地时,共经过多少米?第1010次反次反弹多高?弹多高?求求1+2!+3!+.+20!1+2!+3!+.+20!的和的和猴子吃桃问题:猴子第一天摘下假设干个桃子,当即吃了一半,猴子吃桃问题:猴子第一天摘下假设干个桃子,当即吃了一半,还不瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉还不瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一

54、半,又多吃了一个。以后每天早上都吃了前一天剩下的一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第一半零一个。到第1010天早上想再吃时,见只剩下一个桃子天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少?了。求第一天共摘了多少?第三讲第三讲 循环构造循环构造C语言程序设计语言程序设计3.23.2循环的嵌套运用循环的嵌套运用【实例】【实例】 搬砖问题。搬砖问题。3636块砖,块砖,3636人搬,男搬人搬,男搬4 4,女搬,女搬3 3,两,两个小孩抬一砖,要求一次全搬完,问男、女、小孩各假设个小孩抬一砖,要求一次全搬完,问男、女、小孩各假设干?干?1.1.分析分析: : 列方

55、程列方程, ,得出问题条件得出问题条件: : w+m+c=36 w+m+c=36 4 4* *m+3m+3* *w+c/2=36w+c/2=36 可以用枚举的方法,让变量可以用枚举的方法,让变量w w在在09 09 、m m在在012 012 、c c在在036036的偶数中取值,构成满足上述条件的的偶数中取值,构成满足上述条件的w w 、m m、c c的组合的组合第三讲第三讲 循环构造循环构造C语言程序设计语言程序设计N-SN-S流程图流程图m9w12c=36-m-w且c%2=04*m+3*w+c/2=36输出m、w、cTrueFalsew=0w=w+1;m=m+1;m=0第三讲第三讲 循环

56、构造循环构造C语言程序设计语言程序设计2.2.程序程序mainmainint m,w,c;int m,w,c; for(m=0;m9;m+) for(m=0;m9;m+) for(w=0;w12;w+) for(w=0;w12;w+) c=36-w-m; c=36-w-m; if(c%2!=0)continue; if(c%2!=0)continue; if(4 if(4* *m+3m+3* *w+c/2=36)w+c/2=36) printf( printf(“m=%d,w=%d,c=%dm=%d,w=%d,c=%d,m,w,c);,m,w,c); 第三讲第三讲 循环构造循环构造C语言程序设

57、计语言程序设计练习:练习:1.1.输出输出9 9* *9 9口诀。口诀。2.2.判别判别101-200101-200之间有多少个素数,并输出一切素之间有多少个素数,并输出一切素数。数。3.3.打印出一切的打印出一切的“水仙花数,所谓水仙花数,所谓“水仙花数水仙花数是指一个三位数,其各位数字立方和等于该是指一个三位数,其各位数字立方和等于该数本身。例如:数本身。例如:153153是一个是一个“水仙花数,由于水仙花数,由于153=1153=1的三次方的三次方5 5的三次方的三次方3 3的三次方。的三次方。第三讲第三讲 循环构造循环构造C语言程序设计语言程序设计作业:作业:1.1.将一个正整数分解质

58、因数。例如:输入将一个正整数分解质因数。例如:输入90,90,打印出打印出90=290=2* *3 3* *3 3* *5 5。程序分析:对程序分析:对n n进展分解质因数,应先找到一个最小的进展分解质因数,应先找到一个最小的质数质数k k,然后按下述步骤完成:,然后按下述步骤完成: (1)(1)假设这个质数恰等于假设这个质数恰等于n n,那么阐明分解质因数的过,那么阐明分解质因数的过程曾经终了,打印出即可。程曾经终了,打印出即可。(2)(2)假设假设nknk,但,但n n能被能被k k整除,那么应打印出整除,那么应打印出k k的值,的值,并用并用n n除以除以k k的商的商, ,作为新的正整

59、数他作为新的正整数他n,n,反复执行第一步。反复执行第一步。(3)(3)假设假设n n不能被不能被k k整除,那么用整除,那么用k+1k+1作为作为k k的值的值, ,反复执反复执行第一步。行第一步。2.2.一个数假设恰好等于它的因子之和,这个数就称为一个数假设恰好等于它的因子之和,这个数就称为“完数。例如完数。例如6=16=12 23.3.编程找出编程找出10001000以内的一切以内的一切完数。完数。第三讲第三讲 循环构造循环构造C语言程序设计语言程序设计课堂讨论:课堂讨论:五位跳水高手将参与十米高台跳水决赛,有好事者让五位跳水高手将参与十米高台跳水决赛,有好事者让五个人据实力预测竞赛结果

60、。五个人据实力预测竞赛结果。 A选手说:选手说:B第二,我第三;第二,我第三;B选手说:我第二,选手说:我第二,E第四;第四;C选手说:我第一,选手说:我第一,D第二;第二;D选手说:选手说:C最后,我第三;最后,我第三;E选手说:我第四,选手说:我第四,A第一;第一; 决赛成果公布之后,每位选手的预测都只说对了一半,决赛成果公布之后,每位选手的预测都只说对了一半,即一对一错,请编程解出竞赛的实践名次。即一对一错,请编程解出竞赛的实践名次。第三讲第三讲 循环构造循环构造C语言程序设计语言程序设计第三讲第三讲 循环构造循环构造C语言程序设计语言程序设计2 2 思索到每个人说的话是一对一错,即一真一假,比如思索到每个人说的话是一对一错,即一真一假,比如A A说说的,假设的,假设B=2B=2为真,那么为真,那么A=3A=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论