C语言教程基础篇【全免费】_第1页
C语言教程基础篇【全免费】_第2页
C语言教程基础篇【全免费】_第3页
C语言教程基础篇【全免费】_第4页
C语言教程基础篇【全免费】_第5页
已阅读5页,还剩180页未读 继续免费阅读

下载本文档

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

文档简介

1、C语言程序设计语言程序设计 一、教学对象 计算机科学与技术系新生(第二学期) 二、教学目标 程序设计的重要性 程序设计的基本概念与基本方法 编程解题的思路与典型方法 数学模型简介 算法及算法步骤 程序结构与相应语句 编码与上机调试 C语言程序设计语言程序设计 C语言程序设计语言程序设计 四、指导思想四、指导思想 1. 1. 立足改革,以培养高素质有创造精神的人才为这门课立足改革,以培养高素质有创造精神的人才为这门课 的教学目标。的教学目标。 2. 2. 以学生为中心,采用与现实生活贴切和具有趣味性的以学生为中心,采用与现实生活贴切和具有趣味性的 实例进行讲解,有利于调动学生学习的积极性,引导学

2、实例进行讲解,有利于调动学生学习的积极性,引导学 生主动学习。生主动学习。 3. 3. 强化实践,这门课主张程序设计是高强度的脑力劳动,强化实践,这门课主张程序设计是高强度的脑力劳动, 不是听会的、也不是看会的,而是练会的。引导学生在不是听会的、也不是看会的,而是练会的。引导学生在 解题编程的实践中探索其中带规律性的认识。将感性认解题编程的实践中探索其中带规律性的认识。将感性认 识升华到理性高度。识升华到理性高度。 C语言程序设计语言程序设计 五、学习方法五、学习方法 1.1.动手动脑,理论指导下的实践动手动脑,理论指导下的实践 有条有理的实践。有条有理的实践。 2.2.在编写大量程序之后,才

3、能感到运用自如。在编写大量程序之后,才能感到运用自如。 C语言程序设计语言程序设计 六、教学内容安排六、教学内容安排 1. 1. 简单简单C C程序设计;程序设计; 2. 2. 分支结构程序设计;分支结构程序设计; 3. 3. 循环结构程序设计;循环结构程序设计; 4. 4. 数组;数组; 5. 5. 函数;函数; 6. 6. 递归及其实现方法递归及其实现方法 7. 7. 指针;指针; 8. 8. 结构体与链表。结构体与链表。 C语言程序设计语言程序设计 1.1 1.1 认识认识C C语言程序语言程序 1.1.程序实例程序实例 #include /#include /预编译命令预编译命令, ,

4、将标准输入输出函数将标准输入输出函数 /作为头文件包扩到用户源文件中作为头文件包扩到用户源文件中 #include /#include /预编译命令预编译命令, ,将系统提供的数学函数将系统提供的数学函数 /作为头文件包扩到用户源文件中作为头文件包扩到用户源文件中 main( )main( ) / /主函数,名为主函数,名为mainmain, / /函数体函数体. .开始开始 float a,b,c;float a,b,c; / /声明部分声明部分. .定义变量类型定义变量类型 b=30.0;b=30.0; / /执行部分执行部分. .赋值语句赋值语句 a=sin(ba=sin(b* *3.1

5、4159/180); /3.14159/180); /执行部分执行部分. .赋值语句赋值语句 printf(printf(“%fn%fn”,a);,a);/执行部分执行部分. .输出语句输出语句 / /函数体函数体. .结束结束 第一讲第一讲 简单的简单的C C程序设计程序设计 C语言程序设计语言程序设计 1.2 实例总结实例总结 1.C程序结构程序结构 预编译命令预编译命令 主函数主函数 main( ) 函数体开始函数体开始 声明部分声明部分 执行部分执行部分 函数体结束函数体结束 第一讲第一讲 简单的简单的C C程序设计程序设计 C语言程序设计语言程序设计 2.2.变量的类型变量的类型 整

6、型:整型:int int 长整型:长整型:longlong 浮点型:浮点型:floatfloat 双精度型:双精度型:doubledouble 字符型:字符型:charchar 用户自定义类型用户自定义类型 第一讲第一讲 简单的简单的C C程序设计程序设计 C语言程序设计语言程序设计 3.3.声明的作用声明的作用 为变量分配内存单元,变量名作为内存单元的符为变量分配内存单元,变量名作为内存单元的符 号地址,这件事是在程序编译链接时完成的。号地址,这件事是在程序编译链接时完成的。 4. 变量变量 其值可以改变的量,是内存单元的符号地址。其值可以改变的量,是内存单元的符号地址。 通过符号通过符号b

7、可以找到相应的存储单元地址,假设可以找到相应的存储单元地址,假设 为为1000。 语句语句 b=30.0b=30.0; 是将值是将值30.030.0存放在地址存放在地址为为1000的的存储单元存储单元。 第一讲第一讲 简单的简单的C C程序设计程序设计 C语言程序设计语言程序设计 5.5.对变量的赋值对变量的赋值 赋值符号赋值符号“=” b = 30.0;/ 读作将表达式的值读作将表达式的值30.0赋给变量赋给变量b a=sin(b*3.14159/180); / 读作将表达式(正弦函数)的值赋给变量读作将表达式(正弦函数)的值赋给变量a 第一讲第一讲 简单的简单的C C程序设计程序设计 C语

8、言程序设计语言程序设计 6.6.变量赋值特点变量赋值特点 (1)先定义,后使用)先定义,后使用 int d,e,f; 定义三个变量为整数类型定义三个变量为整数类型 如未定义,则在编译时被查出,认为非法如未定义,则在编译时被查出,认为非法 (2)变量未被赋值前,值为)变量未被赋值前,值为未知未知 (3)对变量赋值过程是)对变量赋值过程是“覆盖覆盖”过程,用新值去替换旧过程,用新值去替换旧 (4)读出变量的值,该变量保持不变)读出变量的值,该变量保持不变 (5)参与表达式运算的所有变量都保持原来的值不变)参与表达式运算的所有变量都保持原来的值不变 第一讲第一讲 简单的简单的C C程序设计程序设计

9、C语言程序设计语言程序设计 变量赋值过程变量赋值过程 d e fd e f 未赋值前未赋值前 执行执行d=7 执行执行 e=d 执行执行 f=d+e 执行执行 d=d+1 000 -1234972343160 72343160 770 7714 8714 第一讲第一讲 简单的简单的C C程序设计程序设计 C语言程序设计语言程序设计 7. 7. 输出语句输出语句 printfprintf函数(格式输出函数)函数(格式输出函数) 一般形式为一般形式为 printf(printf(参数参数1 1,参数,参数2 2,参数,参数3 3,参数,参数n n) 其中参数其中参数1 1格式控制格式控制 参数参数

10、2 2,参数,参数3 3,参数,参数n n输出表列输出表列 举例:举例: 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); 第一讲第一讲 简单的简单的C C程序设计程序设计 C语言程序设计语言程序设计 格式控制是用双引号括起来的字符串,称格式控制是用双引号括起来的字符串,称“转换控制字符转换控制字符 串串” %f 第一个输出表列的格式说明,以小数形式输出单、第一个输出表列的格式说明,以小数形式输出单、 双精度实数,隐含

11、输出双精度实数,隐含输出6位小数位小数 %d 第二个输出表列的格式说明,以带有符号的十进第二个输出表列的格式说明,以带有符号的十进 制形式输出整数(正数不输出符号)制形式输出整数(正数不输出符号) 显然,显然,%f是控制实数是控制实数a的;的;%d是控制整数是控制整数b的的 第一讲第一讲 简单的简单的C C程序设计程序设计 C语言程序设计语言程序设计 为了醒目,格式控制项中除格式说明之外可以有为了醒目,格式控制项中除格式说明之外可以有 普通字符普通字符 例例: printf(: printf(“a=%f b=%d, a, b);a=%f b=%d, a, b); 输出结果为:输出结果为: a=

12、85.560000 b=100a=85.560000 b=100 换行符号换行符号 例例: printf(: printf(“a=%fnb=%da=%fnb=%d”,a,b);,a,b); 输出结果为:输出结果为: a=85.560000a=85.560000 b=100 b=100 域宽和精度域宽和精度 例:例:printfprintf(”%5.3f%5.3f”,a a); 第一讲第一讲 简单的简单的C C程序设计程序设计 C语言程序设计语言程序设计 8. 数学函数数学函数 sin(x)x x为弧度,为弧度,double xdouble x,double sin(x)double sin(x

13、) cos(x) cos(x) exp(x) ex log(x) logex log10(x) log10 x fabs(x) x fmod(x,y) 整除整除x/y的余数的余数 floor(x) 求不大于求不大于x的最大整数的最大整数 pow(x, y) xy sqrt(x) x1/2 第一讲第一讲 简单的简单的C C程序设计程序设计 C语言程序设计语言程序设计 9. 算术运算符算术运算符 加加 减减 *乘乘 / 除除 % 模(取余数)模(取余数) 第一讲第一讲 简单的简单的C C程序设计程序设计 C语言程序设计语言程序设计 1.3 1.3 作业作业 第一讲第一讲 简单的简单的C C程序设计

14、程序设计 C语言程序设计语言程序设计 我们在日常生活中经常需要处理具有两个分支的问题,例我们在日常生活中经常需要处理具有两个分支的问题,例 如,如果明天下雨,则在教室内组织活动,否则去野游。如,如果明天下雨,则在教室内组织活动,否则去野游。 在在C C语言中,这类问题需要使用语言中,这类问题需要使用ifif语句解决,而判断操语句解决,而判断操 作通常使用关系运算符。作通常使用关系运算符。 关系运算符和关系表达式关系运算符和关系表达式 大于大于 =大于等于大于等于 = = 小于等于小于等于 =等于等于 !=!=不等于不等于 第二讲第二讲 分支结构分支结构 C语言程序设计语言程序设计 2.1 2.

15、1 掌握掌握ifif语句的使用方法语句的使用方法 【实例实例】编写程序,判断输入的整数是否为编写程序,判断输入的整数是否为6 6,若是,显示,若是,显示 “RightRight!”和和“Great!Great!”,否则显示,否则显示“WrongWrong!”和和 “SorrySorry!”。 1编程思路:编程思路: 要显示要显示“RightRight!”和和“GreatGreat!”,应执行两条语句,应执行两条语句 “printf(printf(”RightRight!nn“););”和和“printf(printf(”GreatGreat!nn“););”,要,要 显示显示“WrongWro

16、ng!”和和“SorrySorry!”,执行两条语句,执行两条语句 “printf(printf(”WrongWrong! nn“););”和和“printf(printf(”SorrySorry!nn“););”。本。本 题需要根据所输入的值(假设赋给题需要根据所输入的值(假设赋给a a)是否为)是否为6 6来选择执行相来选择执行相 应的两条语句。应的两条语句。 在在C C语言中判断语言中判断a a中的值是否为中的值是否为6 6,使用,使用“if(a=6)if(a=6)”形式。形式。 第二讲第二讲 分支结构分支结构 C语言程序设计语言程序设计 本实例的流程图如图所示 开始 输入a值 a=6

17、显示“Right! ” 显示“Great! ” 显示“Wrong! ” 显示“Sorry! ” 结束 假真 第二讲第二讲 分支结构分支结构 C语言程序设计语言程序设计 本实例的N-S流程图如图所示 输入a的值 a=6 显示“Right!” 显示“Great!” 显示“Wrong!” 显示“Sorry! ” 第二讲第二讲 分支结构分支结构 C语言程序设计语言程序设计 2 2程序代码程序代码: #include main() int a=0; printf(Input a:); scanf(%d, printf(a=%dn,a); if(a=6)/* if语句开始语句开始 */ printf(Ri

18、ght!n); printf(Great!n); else printf(Wrong!n); printf(Sorry!n); /* if语句结束语句结束 */ 第二讲第二讲 分支结构分支结构 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归纳

19、分析:归纳分析: (1 1)程序中的)程序中的“a=6a=6”是关系表达式。是关系表达式。 用关系运算符把两个用关系运算符把两个C C语言表达式连接起来的表达式称为关系语言表达式连接起来的表达式称为关系 表达式。关系运算的判断结果只有表达式。关系运算的判断结果只有“真真”或或“假假”两种可两种可 能,关系成立时为能,关系成立时为“真真”,不成立时为,不成立时为“假假”。 关系表达式的值只能是关系表达式的值只能是1 1或或0 0,当关系运算的判断结果为,当关系运算的判断结果为“真真” 时,关系表达式的值为时,关系表达式的值为 1 1,否则,关系表达式的值为,否则,关系表达式的值为0 0。例。例

20、如,当如,当a a的值为的值为6 6时,关系表达式时,关系表达式“a=6a=6”的值为的值为1 1,当,当a a的值的值 为为5 5时,关系表达式时,关系表达式“a=6a=6”的值为的值为0 0。 第二讲第二讲 分支结构分支结构 C语言程序设计语言程序设计 (2 2)程序中的)程序中的“if(a=6)if(a=6)”是是ifif语句的开始部分。语句的开始部分。 本例题需要根据本例题需要根据“a=6a=6”是否为是否为“真真”来选择执行不同的来选择执行不同的 两个输出语句。处理两个分支的问题时常使用两个输出语句。处理两个分支的问题时常使用ifif语句。语句。ifif语句语句 根据其后面括号中表达

21、式的结果,选择执行某个分支程序段。根据其后面括号中表达式的结果,选择执行某个分支程序段。 ifif语句的一般形式如下:语句的一般形式如下: if(if(表达式表达式) ) 语句组语句组1 1 else else 语句组语句组2 2 “ifif”和和“elseelse”是关键字。当表达式结果为是关键字。当表达式结果为“真真”(即(即不等于不等于0 0) 时,执行语句组时,执行语句组1 1,表达式结果为,表达式结果为“假假”(即等于(即等于0 0)时,执行)时,执行 语句组语句组2 2。在语句组。在语句组1 1和语句组和语句组2 2中只能选择执行一组,而后执中只能选择执行一组,而后执 行整个行整个

22、ifif语句后面的语句。语句后面的语句。 第二讲第二讲 分支结构分支结构 C语言程序设计语言程序设计 (3) C语言中允许程序中的if语句不带else部分。 省略else的if语句一般形式如下: if(表达式) 语句组 此if语句的执行过程: 当表达式结果为“真”时,执行语句组,表达式结果为 “假”时,不处理。 第二讲第二讲 分支结构分支结构 C语言程序设计语言程序设计 2.2学会使用逻辑运算符 处理问题时经常需要同时判断多个条件。例如,在某 学生数学和英语成绩中判断是否至少有一门课程是不及格。 这时使用逻辑运算符。 逻辑运算符共有三种: printf(Input w:); scanf(%f,

23、 printf(w=%.1fn,w); if(w=50 else printf(Non); 第二讲第二讲 分支结构分支结构 C语言程序设计语言程序设计 3.运行结果: 第1次运行结果: Input w:53.5 w=53.5 Ok 第2次运行结果: Input w:60.7 w=60.7 No 第二讲第二讲 分支结构分支结构 C语言程序设计语言程序设计 4 4归纳分析归纳分析: 程序中的“w=50 n); elseelse printf(Non);/printf(Non);/* * 内嵌内嵌ifif语句结束语句结束 * */ / elseelse printf(Data over!n);/pr

24、intf(Data over!n);/* * 外嵌外嵌ifif语句结束语句结束 * */ / 第二讲第二讲 分支结构分支结构 C语言程序设计语言程序设计 3 3运行结果运行结果: 第第1 1次运行结果次运行结果: Input w:Input w:53.553.5 w=53.5w=53.5 OkOk 第第2 2次运行结果次运行结果: Input w:Input w:60.760.7 w=60.7w=60.7 NoNo 第第3 3次运行结果次运行结果: Input w:Input w:201.7201.7 w=201.7w=201.7 Data over!Data over! 第二讲第二讲 分支结

25、构分支结构 C语言程序设计语言程序设计 4归纳分析: (1)本程序在一个if语句中包含了另一个if语句。 在if语句的语句组1或语句组2中又包含另一个分支结构的 if语句称为嵌套的if语句。 (2)本程序中出现了两次else。 C语法规定,在if语句中,若多次出现else,则每一个 else总是与前面最近的if配对,所以本例题中第一个 else与内嵌的if配对,第二个else与最上面的if配对。 程序中由于采用了缩进格式,if与else的配对关系一目 了然。 第二讲第二讲 分支结构分支结构 C语言程序设计语言程序设计 2.42.4学会使用学会使用if-else ifif-else if形式的嵌

26、套形式的嵌套ifif语句语句 【实例实例】编写程序,求下面分段函数的值,要求编写程序,求下面分段函数的值,要求x x的值从键盘输的值从键盘输 入。入。 x+2 (0 x5) y= 0 (x0) x2-3 (5x10) 10 (x10) 第二讲第二讲 分支结构分支结构 C语言程序设计语言程序设计 1 1编程思路:编程思路: 开始开始 输入输入x值值 x00 结束结束 假假真真 真真假假 显示显示x x和和y y的值的值 x55 真真假假 x1010 y=x+2 y=10y=x2-3 y=0 第二讲第二讲 分支结构分支结构 C语言程序设计语言程序设计 2 2程序代码:程序代码: #include

27、#include main()main() float x=0,y=0;float x=0,y=0; printf(Input x:);printf(Input x:); scanf(%f, scanf(%f, if(x0) if(x0)y=0;y=0; else else if(x5) y=x+2; if(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语言

28、程序设计语言程序设计 2.5 switch语句 在日常生活中经常遇到菜单选择操作,例如,用ATM自 动取款机取钱时,从菜单中可以选择语种、取款额;用自 动服务系统给手机充值时,可以选择查余额还是充值,对 本机充值还是对其他号码充值等。这些问题一般使用 switch语句解决。 总之,这些问题都是多分支情况。 第二讲第二讲 分支结构分支结构 C语言程序设计语言程序设计 【实例实例】编写程序,在如下菜单中选择一个运算类型,并编写程序,在如下菜单中选择一个运算类型,并 进行相应的运算。如选择了加法,则进行求和运算。进行相应的运算。如选择了加法,则进行求和运算。 Please choose Please

29、 choose + : addition+ : addition - : subtraction- : subtraction * * : multiplication : multiplication / : division/ : division 第二讲第二讲 分支结构分支结构 C语言程序设计语言程序设计 1 1程序代码:程序代码: #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);pri

30、ntf(Please choosen); printf(+ : additionn);printf(+ : additionn); printf(- : subtractionn);printf(- : subtractionn); printf(printf(* * : multiplicationn); : multiplicationn); printf(/ : divisionn);printf(/ : divisionn); sym=getchar();sym=getchar(); printf(%f%c%f=,a,sym,b); printf(%f%c%f=,a,sym,b); /

31、 /* * 显示算式显示算式 * */ / 第二讲第二讲 分支结构分支结构 C语言程序设计语言程序设计 switch(sym) switch(sym) / /* * 计算算式计算算式 * */ / case +: c=a+b; break; case +: c=a+b; break; case -: c=a-b; break; case -: c=a-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(%f

32、n,c); / /* * 显示结果显示结果 * */ / 第二讲第二讲 分支结构分支结构 C语言程序设计语言程序设计 2 2运行结果:运行结果: Please choosePlease choose + : addition+ : addition - : subtraction- : subtraction * * : multiplication : multiplication / : division/ : division / 5.000000/2.000000=2.5000005.000000/2.000000=2.500000 第二讲第二讲 分支结构分支结构 C语言程序设计语言程

33、序设计 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: 语句组语句组n break;n break; default: default: 语句组语句组n+1 break;n+1 break; 其中其中switchswitch、casecase、defaultdefault和和breakb

34、reak是关键字,所有表达式均是关键字,所有表达式均 为整型或字符型。在表达式为整型或字符型。在表达式1 1、表达式、表达式2 2、表达式、表达式n n中只能中只能 出现常量和运算符,而且每个表达式的值不能相等。出现常量和运算符,而且每个表达式的值不能相等。 第二讲第二讲 分支结构分支结构 C语言程序设计语言程序设计 2.6 2.6 条件运算符及其表达式条件运算符及其表达式 C C语言中条件运算符由语言中条件运算符由“? ?”和和“: :”组成,例如组成,例如“ab ? a : bab ? a : b”。 条件表达式的一般形式为:条件表达式的一般形式为: 表达式表达式1 1 ?表达式?表达式2

35、 2 :表达式:表达式3 3 当表达式当表达式1 1的值为非的值为非0 0时,以表达式时,以表达式2 2的值作为条件表达式的值,的值作为条件表达式的值, 否则,以表达式否则,以表达式3 3的值作为条件表达式的值。例如,当的值作为条件表达式的值。例如,当abab 成立时,条件表达式成立时,条件表达式“ab ? a : bab ? a : b”的值为的值为a a中的值,否中的值,否 则为则为b b中的值。中的值。 使用条件表达式也可以实现分支结构。使用条件表达式也可以实现分支结构。 第二讲第二讲 分支结构分支结构 C语言程序设计语言程序设计 课堂讨论:谁做的好事?课堂讨论:谁做的好事? 忻州师院有

36、四位同学中的一位做了好事,不留名,表扬信来忻州师院有四位同学中的一位做了好事,不留名,表扬信来 了之后,校长问这四位是谁做的好事。了之后,校长问这四位是谁做的好事。 A说:不是我。说:不是我。 B说:说: 是是C。 C说:是说:是D。 D说:说:C胡说。胡说。 已知三个人说的是真话,已知三个人说的是真话, 一个人说的是假话。现在要根据这些信息,找出做了好事的一个人说的是假话。现在要根据这些信息,找出做了好事的 人。画出人。画出N-S流程图并写出程序。流程图并写出程序。 第二讲第二讲 分支结构分支结构 C语言程序设计语言程序设计 显然,不是显然,不是AA做的好事(四个关系表达式值的和为做的好事(

37、四个关系表达式值的和为1 1) 第二讲第二讲 分支结构分支结构 C语言程序设计语言程序设计 显然,不是显然,不是BB所为(四个关系表达式值的和为所为(四个关系表达式值的和为2 2) 第二讲第二讲 分支结构分支结构 C语言程序设计语言程序设计 显然,就是显然,就是C C做了好事(四个关系表达式值之和为做了好事(四个关系表达式值之和为3 3) 这时,我可以理出头绪,要用所谓枚举法,一个人一个人地去这时,我可以理出头绪,要用所谓枚举法,一个人一个人地去 试,试, 四句话中有三句为真,该人即所求。四句话中有三句为真,该人即所求。 第二讲第二讲 分支结构分支结构 C语言程序设计语言程序设计 循环结构是程

38、序中一种很重要的结构。其特点循环结构是程序中一种很重要的结构。其特点 是,是, 在给定条件成立时,反复执行某程序段,直到在给定条件成立时,反复执行某程序段,直到 条件不成立为止。条件不成立为止。 给定的条件称为循环条件,反复给定的条件称为循环条件,反复 执行的程序段称为循环体。执行的程序段称为循环体。 语言提供了三种循环语言提供了三种循环 语句,可以组成各种不同形式的循环结构语句,可以组成各种不同形式的循环结构, ,它们是它们是: : 语句语句 语句语句 语句语句 第三讲第三讲 循环结构循环结构 C语言程序设计语言程序设计 3.1 3.1 简单循环简单循环 【实例实例】古典问题:有一对兔子,从

39、出生后第古典问题:有一对兔子,从出生后第3 3个月起每个月都个月起每个月都 生一对兔子,小兔子长到第三个月后每个月又生一对兔子,生一对兔子,小兔子长到第三个月后每个月又生一对兔子, 假如兔子都不死,问每个月的兔子总数为多少?假如兔子都不死,问每个月的兔子总数为多少? 1.1.程序分析:兔子的规律为数列程序分析:兔子的规律为数列1,1,2,3,5,8,13,21.1,1,2,3,5,8,13,21. 该数列的规律为该数列的规律为 a a1 1=1=1 a a2 2=1=1 a an n=a=an-1n-1+a+an-2n-2 这里求前这里求前2020项项 第三讲第三讲 循环结构循环结构 C语言程

40、序设计语言程序设计 i=20 a1=1;a2=1; i=3 an=a1+a2 输出an i=i+1;a1=a2;a2=an; Y end begin N 第三讲第三讲 循环结构循环结构 C语言程序设计语言程序设计 该题目的该题目的N-SN-S流程图流程图 a1=1;a2=1;an=0; i=20 an=a1+a2 输出an i=i+1 a1=a2 a2=an 第三讲第三讲 循环结构循环结构 C语言程序设计语言程序设计 2.程序源代码: 方法一:for循环语句 #include stdio.h#include stdio.h main( )main( ) long a1,a2,an;long a

41、1,a2,an; int i;int i; a1=a2=1;a1=a2=1; for(i=3;i=20;i+)for(i=3;i=20;i+) an=a1+a2;an=a1+a2; printf( printf(“a%d=%lda%d=%ld”,i,an); ,i,an); a1=a2; a1=a2; a2=an; a2=an; 可否调换? 第三讲第三讲 循环结构循环结构 C语言程序设计语言程序设计 方法二:while循环语句 #include stdio.h#include stdio.h main( )main( ) long a1,a2,an;long a1,a2,an; int i;i

42、nt i; a1=a2=1;i=3a1=a2=1;i=3; whilewhile(i=20i=20) an=a1+a2;an=a1+a2; printf( printf(“a%d=%lda%d=%ld”,i,an); ,i,an); a1=a2; a1=a2; a2=an; a2=an; i+; i+; 第三讲第三讲 循环结构循环结构 C语言程序设计语言程序设计 方法三:do-while循环语句 #include stdio.h#include stdio.h main( )main( ) long a1,a2,an;long a1,a2,an; int i;int i; a1=a2=1;i=

43、3a1=a2=1;i=3; dodo an=a1+a2;an=a1+a2; printf( printf(“a%d=%lda%d=%ld”,i,an); ,i,an); a1=a2; a1=a2; a2=an; a2=an; i+; i+; whilewhile(i=20);i=20); 第三讲第三讲 循环结构循环结构 C语言程序设计语言程序设计 3.3.归纳分析归纳分析 (1 1)forfor语句格式:语句格式: for ( for ( 表达式表达式1 ; 1 ; 表达式表达式2 ; 2 ; 表达式表达式3 ) 3 ) 语句语句 即:即: for (for (循环变量赋初值循环变量赋初值 ,

44、 , 循环结束条件循环结束条件 , , 循环变量增值循环变量增值 ) ) 语句语句 第三讲第三讲 循环结构循环结构 C语言程序设计语言程序设计 ForFor语句执行过程语句执行过程 表达式1 表达式2 表达式3 语 句 Y N 第三讲第三讲 循环结构循环结构 C语言程序设计语言程序设计 表达式可以省略,但分号不能省略表达式可以省略,但分号不能省略 a) a) 省略表达式省略表达式1 1 i=1 i=1 for ( for ( ;i=50 i=50 ;i+ ) sum=sum+2i+ ) sum=sum+2* *i i b) b) 省略表达式省略表达式2 2产生死循环产生死循环 for ( i=

45、1for ( i=1; ;i+ ) sum=sum+2i+ ) sum=sum+2* *i i c) 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语言程序设计语言程序设计 表达式表达式1 1,表达式,表达式3 3可以

46、是:可以是: a) a) 简单的表达式简单的表达式 b)b)逗号表达式逗号表达式 表达式表达式2 2 一般是关系表达式或逻辑表达式一般是关系表达式或逻辑表达式 例:例:for ( sum=0 for ( sum=0 , , i=1 ; i=50 ; i+ i=1 ; i=50 ; i+, ,i+ )i+ ) sum=sum+2 sum=sum+2* *i;i; 或:或:for ( sum=0 for ( sum=0 , , i=1 ; i=50 ; i=i+2 ) i=1 ; i=50 ; i=i+2 ) sum=sum+2 sum=sum+2* *i i 第三讲第三讲 循环结构循环结构 C语

47、言程序设计语言程序设计 (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 语句;语句; while(whil

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

50、是先 判断后执行,如果条件不满足,则一次循环体语句也不执判断后执行,如果条件不满足,则一次循环体语句也不执 行。行。 第三讲第三讲 循环结构循环结构 C语言程序设计语言程序设计 (4)(4)循环体语句可使用breakbreak 和continuecontinue语句 breakbreak:可以用来从循环体内跳出循环体(提前结束循环) continuecontinue:用于跳过循环体中下面尚未执行的语句,接着重 新执行循环的判断 例:输出100以内能被7整除的数。 int n;int n; for(n=7;n=100;n+)for(n=7;n=100;n+) if (n%7!=0)if (n%7

51、!=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!的和。的和。 3.3.用牛顿切线法求用牛顿切线法求x-sin(x)=0 x-sin(x)=0在区间(在区间(0 0,)之间的解。)之间的解。 4.4.任意输入两个

52、数,求这两个数的最大公约数。任意输入两个数,求这两个数的最大公约数。 5.5.从键盘输入一个数判断其是否为素数。从键盘输入一个数判断其是否为素数。 第三讲第三讲 循环结构循环结构 C语言程序设计语言程序设计 作业:作业: 1.1.求求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 5个数相加个数相加) ),几个数相,几个数相 加由键盘输入控制。加由键盘输入控制。 2.2.一球从一球从100100米高度自由

53、落下,每次落地后反跳回原高度的米高度自由落下,每次落地后反跳回原高度的 一半;再落下,求它在第一半;再落下,求它在第1010次落地时,共经过多少米?第次落地时,共经过多少米?第 1010次反弹多高?次反弹多高? 3.3.求求1+2!+3!+.+20!1+2!+3!+.+20!的和的和 4.4.猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一 半,还不瘾,又多吃了一个。第二天早上又将剩下的桃子半,还不瘾,又多吃了一个。第二天早上又将剩下的桃子 吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩

54、下的一半零一个。到第下的一半零一个。到第1010天早上想再吃时,见只剩下一个天早上想再吃时,见只剩下一个 桃子了。求第一天共摘了多少?桃子了。求第一天共摘了多少? 第三讲第三讲 循环结构循环结构 C语言程序设计语言程序设计 3.23.2循环的嵌套使用循环的嵌套使用 【实例实例】 搬砖问题。搬砖问题。3636块砖,块砖,3636人搬,男搬人搬,男搬4 4,女搬,女搬3 3,两,两 个小孩抬一砖,要求一次全搬完,问男、女、小孩各若干?个小孩抬一砖,要求一次全搬完,问男、女、小孩各若干? 1.1.分析分析: : 列方程列方程, ,得出问题条件得出问题条件: : w+m+c=36 w+m+c=36 4

55、 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流程图流程图 m9 w12 c=36-m-w且c%2=0 4*m+3*w+c/2=36 输出m、w、c True False w=0 w=w+1;m=m+1; m=0 第三讲第三讲 循环结构循环结构 C语言程序设计语言程序设计 2.2.程序

56、程序 mainmain()() int 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语言程序设计语言程序设计 练习:练习: 1.

57、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 A选手说:选手说:B B第二,我第三;第二,我第三; B B选手说:我第二,选手说:我第二,E E第四;第四; C C选手说:我第一,选手说:我第一,D D第二;第二; D D选手说:选手说:C C最后,我第三;最后,我第三; E E选手说:我第四,选手说:我第四,A A第一;第一; 决赛成绩公布之后,每位选手的预测都只说对了一半,决赛成绩公布之后,每位选手的预测都只说对了一半, 即一对一错,请编程解出比赛的实际名次。即一对一错,请编程解出比赛的实际名次。 第三讲第三讲 循环结构循环结构 C语言程序设计语言程序设计 1 1 首先是将五个人的预测写成

温馨提示

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

评论

0/150

提交评论