C语言第三次课课程讲义(共18页).doc

上传人:飞****2 文档编号:14405466 上传时间:2022-05-04 格式:DOC 页数:18 大小:152KB
返回 下载 相关 举报
C语言第三次课课程讲义(共18页).doc_第1页
第1页 / 共18页
C语言第三次课课程讲义(共18页).doc_第2页
第2页 / 共18页
点击查看更多>>
资源描述

《C语言第三次课课程讲义(共18页).doc》由会员分享,可在线阅读,更多相关《C语言第三次课课程讲义(共18页).doc(18页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、精选优质文档-倾情为你奉上第三次课课程安排时间课次授课标题上课时长上午第一课时while语句50第二课时do-while语句20for语句25第三课时break和continue语句25for语句在上机考试中的考点25下午第四课时一维数组的定义15一维数组的赋值20一维数组的引用15第五课时二维数组的定义5二维数组的赋值25二维数组的引用10第六课时循环与数组的应用例115循环与数组的应用例25循环与数组的应用例330循环与数组的应用例35课后布置习题作业注意:第七章中的部分涉及到指针的题目先不做,到后面再做。主要做选择题:1、2、3、8、9、10,填空题:2、3、4、5、6第四章选择题:4、

2、9、10、11、12,16、17、18、20、23、24、26和所有的填空题第四章 循环l 本章考点考点考核几率分值while语句100%23dowhile语句100%23for语句(难点)100%57循环结构的嵌套(难点)100%46break语句(难点)70%23continue语句(难点)50%23l 教学内容一、 while循环1. 循环的引入(1) 对循环的引入一定要简单,循环就是在一定条件或是范围内重复做某件事情,例如:人每天都在做着重复的事情,早上起床,然后工作学习,晚上休息睡觉。(2) 1+2+3+100这个例子不用讲,直接进入while语句,让学生通过后面的题目慢慢体会循环。

3、2. while的一般形式 while(表达式) 循环体语句 (1) while是C语言的关键字,必须小写(2) 表达式是任意合法的表达式(包括:常量、算术、关系、逻辑、赋值表达式)(3) 循环体语句只能是一条语句或是一个复合语句(4) 表达式不能省略,循环体语句省略时表示不做任何的操作3. while的执行过程1) 判断表达式的真假2) 如果表达式为真则执行循环体语句,否则结束循环4. 知识点举例(注意步骤)计算1+2+3+4+5 int i,sum; i=1,sum=0; while(i=5) sum=sum+i; i+; printf(sum=%dn,sum);执行步骤如下:(1)初值:

4、i=1,sum=0 判断:isum=0+1,i=i+1-sum=1,i=2(2)初值:i=2,sum=1 判断:isum=1+2,i=i+1-sum=3,i=3(3)初值:i=3,sum=3 判断:isum=3+3,i=i+1-sum=6,i=4(4)初值:i=4,sum=6 判断:isum=6+4,i=i+1-sum=10,i=5(5)初值:i=5,sum=10 判断:isum=10+5,i=i+1-sum=15,i=6(6)初值:i=6,sum=15 判断:ii=2,判断:n!=0为假,则结束循环;执行完循环后继续执行循环后面的语句:printf(%d,i);输出结果为:24. 融入考点讲

5、解课本P63习题1,2,3(第3题很重要,讲解的时候先将答案告诉学生,然后通过举例的方式来讲解过程)三、 for循环1. for语句的格式for(表达式1;表达式2;表达式3) 循环体语句(1) for是C语言的关键字(2) for里面的三个表达式必须使用分号隔开1) 表达式1表示赋初值2) 表达式2表示空值循环,和while(表达式)中的表达式具有同样的效果3) 表达式3表示赋值4) for PK while 表达式1;while(表达式2)循环体语句表达式3EG:i=1;while(i=100) sum=sum+1; i+;for(表达式1;表达式2;表达式3) 循环体语句EG:for(i

6、=1;i=100;i+) sum=sum+I;总结:while和for都表示循环,本质上没有区别,用for实现的用while也能实现,一般认为for语句的格式相对要简单,因此考试中出现较多的是for语句。(3) 循环体语句只能是一条语句或是一个复合语句(4) 3个表达式可以省略,但是两个分号不能省略,循环体语句省略时表示不做任何的操作1) 省略表达式1:for(;i=100;i+) sum+=i;2) 省略表达式3:for(i=1;i=100;) sum+=i;i+;3) 省略三个表达式:for(; ; )相当于while(1),表示永真,程序将进入死循环2. for语句的执行过程(1) 首先

7、执行表达式1(2) 判断表达式2的真假(3) 如果表达式为真则执行循环体,否则结束循环(4) 执行完循环体后执行表达式3,接着执行第2步,进入循环3. for语句举例重点注意循环步骤(小知识大智慧,把下面的例题讲好讲清楚,基本上for也就掌握得差不多了)讲解课本P66例1,不能正确计算f=4!的程序段是A)f=0; for(i=1;i=4;i+) f*=i; 分析步骤:(1) 初值:f=0,执行表达式1:i=1,判断表达式2:if=f*i-f=0*1-f=0,执行完循环体,继续执行表达式3,i+-i=2(2) 初值:f=0,i=2,判断表达式2:if=f*i-f=0*2-f=0,执行完循环体,

8、继续执行表达式3,i+-i=3(3) 初值:f=0,i=3,判断表达式2:if=f*i-f=0*3-f=0,执行完循环体,继续执行表达式3,i+-i=4(4) 初值:f=0,i=4,判断表达式2:if=f*i-f=0*4-f=0,执行完循环体,继续执行表达式3,i+-i=5(5) 初值:f=0,i=5,判断表达式2:i=4为假,结束循环总结:通过执行得知f最终的值为0,谨记0乘以任何数都为0,遇到乘法问题一定要注意。B)f=1;for(i=1;i4;i+) f*=i;分析步骤:(1) 初值:f=1,执行表达式1:i=1,判断表达式2:if=f*i-f=1*1-f=1,执行完循环体,继续执行表达

9、式3,i+-i=2(2) 初值:f=1,i=2,判断表达式2:if=f*i-f=1*2-f=2,执行完循环体,继续执行表达式3,i+-i=3(3) 初值:f=2,i=3,判断表达式2:if=f*i-f=2*3-f=6,执行完循环体,继续执行表达式3,i+-i=4(4) 初值:f=6,i=4,判断表达式2:i1;i+) f*=i; 分析步骤:(1) 初值:f=1,执行表达式1:i=4,判断表达式2:i1为真,因此进入循环体,执行f*=i-f=f*i-f=1*4-f=4,执行完循环体,继续执行表达式3,i+-i=5(2) 初值:f=4,i=5,判断表达式2:i1为真,因此进入循环体,执行f*=i-

10、f=f*i-f=4*5-f=20,执行完循环体,继续执行表达式3,i+-i=6(3) i的值自增,判断的条件为i1,这样i永远大于1,程序会持续执行下去,进入死循环总结:通过执行得知f最终的值为无限大,近年考试往往会让考生判断构成或是不构成无限循环的语句。D)f=1; for(i=4;i=2;i-) f*=i; 分析步骤:(1) 初值:f=1,执行表达式1:i=4,判断表达式2:i=2为真,因此进入循环体,执行f*=i-f=f*i-f=1*4-f=4,执行完循环体,继续执行表达式3,i- -i=3(2) 初值:f=4,i=3,判断表达式2:i=2为真,因此进入循环体,执行f*=i-f=f*i-

11、f=4*3-f=12,执行完循环体,继续执行表达式3,i- -i=2(3) 初值:f=12,i=2,判断表达式2:i=2为真,因此进入循环体,执行f*=i-f=f*i-f=12*2-f=24,执行完循环体,继续执行表达式3,i- -i=1(4) 初值:f=24,i=1,判断表达式2:i=2为假,结束循环总结:通过执行得知f最终的值为24,为4*3*2,刚好是4!,为了好理解循环范围做一个调整: for(i=4;i=2;i-) f*=i;改为for(i=4;i=1;i-) f*=i;四、 循环嵌套该知识点和第七章对数组的排序(冒泡法排序)结合记起来进行讲解,这里不多讲。五、 break和cont

12、inue语句1、 break的使用 (1)可以用于switch和循环结构; (2)用于switch时,表示跳出switch语句;用于循环结构时,表示跳出离它最近的循环;2、 continue的使用 (1)只能用于循环结构; (2)表示结束本次循环;3、break PK continue (1)跳出循环,以for循环为例: Eg:for(表达式1;表达式2;表达式3) 语句1 break; 语句2 语句3其执行顺序是:表达式2非00表达式1语句1break语句3 (2)结束本次循环,以for循环为例: Eg:for(表达式1;表达式2;表达式3) 语句1 continue; 语句2 语句3其执行

13、顺序是:表达式2非00表达式1语句1continue语句3表达式34、讲解课本P67习题1 main()int x=8;for( ; x0 ; x-) printf(“%d,”,-x);.-if(x%3)printf(“%d,”,x-);-continue;(1) x=8,判断x0为真,执行循环体: 执行表达式3:x-,则x的值为6(2)x=6,判断x0为真,执行循环体: 执行表达式3:x-,则x的值为4(3)x=4,判断x0为真,执行循环体 判断:x%3-8%3-2为真,执行if语句:printf(“%d,”,x-);输出x-为8,x为7执行continue,结束本轮循环,不在执行conti

14、nue以后的语句判断:x%3-6%3-0为假,不执行if语句,执行if后面的语句printf(“%d,”,-x);输出-x为5,x为5六、上机中循环题型(编程题40分)做题技巧:(1)首先确定循环变量i的范围,开始值和终止值(2)确定求和还求乘积,求和必须给变量赋值为0,求乘积给变量赋值为1(3)确定循环体语句,谨记循环体就是一个公式,常见的公式: 1)求和:sum=sum+i; 2)求乘积:s=s*i; 3)求1+1/2+1/3.+1/n:sum=sum+1.0/i; 4)求ln(1)+ln(2)+.+ln(n):sum=sum+log(i);1、求小于形参n能同时被3和7同时整除的所有自然

15、数之和的平方根(1)确定循环变量的范围:小于n的自然数,就可以确定为1-n(2)该题要求和,因此定义一个变量sum并赋值为0,定义s表示和的平方根(3)使用求和公式:sum=sum+i;int i,sum;sum=0;for(i=1;in;i+) if(i%3=0&i%7=0) sum=sum+i;s=sqrt(sum);2、求出1到m之间各个数字ln(i)值的和的平方根(1) 确定循环变量i的范围:1-m,在没有特殊说明的情况下,一般都要包括1和m(2) 该题要求和,因此定义一个变量sum并赋值为0,定义s表示和的平方根(3) 使用求和公式:sum=sum+i;int i,sum;sum=0

16、;for(i=1;i=m;i+) sum=sum+log(i);s=sqrt(sum);专心-专注-专业第七章 数组l 本章考点考点考核几率分值一维数组的定义及引用80%13一维数组的初始化80%12二维数组的定义及引用(难点)90%34二维数组的初始化90%12l 教学内容一、 一维数组1. 一维数组的定义类型名 数组名常量表达式(1) 类型名整型(int)、单精度实型(float)、双精度实型(double)、字符型(char)(2) 数组名必须符合标示符命名规则(3) 常量表达式必须为整型常量,不能为变量,常量表达式表示数组的长度(4) 一维数组举例1) int a5; /*定义了一个长

17、度为5的一维整型数组a*/2) doule b5+5; /*定义了一个长度为10的一维双精度实型数组b*/(5) 笔试考试分析(6) 上机考试分析2. 一维数组的赋值(1) 单个赋值1) 给变量赋值int a; /*定义了一个整型变量a*/a=10; /*给变量赋值为10*/2) 给数组元素分别赋值,原理:数组元素本质就是变量int a3; /*定义了一个整型数组a*/ a0=10;a1=20;a2=30;(2) 整体赋值1) 变量赋值int a=10;2) 一维数组赋值之数组长度等于赋值个数的情况 正确形式:int a3=10,20,30;分析:定义了一个一维数组a,分别为a0的值为10,a

18、1的值为20,a2的值为30 错误形式: int a3=10,20,30; 分析:给数组赋值时不要忘记使用将元素括起来,否则将出错3) 一维数组赋值之数组长度大于赋值个数的情况int a5=10,20,30;分析:当赋值的个数小于数组长度时,采用从左向右自动一一对应赋值的策略,右边不够部分自动补0。a0a1a2a3a4102030004) 一维数组赋值之数组长度小于赋值个数的情况int a5=10,20,30,40,50,60;分析:数组长度为5,赋值个数为6,这样的情况好比有一个瓶子容积为5L,现在倒入6L的水,这样就会出现溢出的情况,因此这种情况下即为错误。5) 一维数组赋值之特殊情况 i

19、nt a5=0;分析:表示给数组a0赋值为0,a1为0,a2为0,a3为0,a4为0a0a1a2a3a400000 int a5=;表示给数组赋值不确定值,而不是06) 一维数组赋值之不指明数组长度 int a =1,2,3,4,5; /*数组长度为4*/ int a =0; /*数组长度为1*/ int a =0,0; /*数组长度为2*/ int a =; /*数组长度为0*/3. 一维数组中元素的引用(1) 数组元素的一般形式数组名下标表达式1) 数组中的元素其实就是一个变量,占用一个存储单元int a5=1,2,3,4,5;a0=10; /*a0原来的值为1,重新赋值为10*/a1+;

20、 /*a1的值为2,执行a1+后a1的值为3*/a4=a2+a3 /*a2的值为3,a3的值为4,a4的值为7*/分析:通过执行后数组的元素为:10,3,3,4,7a0a1a2a3a41033472) 下标表达式的下限为0,上线为常量表达式-1(2) 笔试考点:数组与循环的结合1) 重点讲解课本P97例2,重点注意步骤例2main( ) int i,n=0,0,0,0,0; for(i=1;i=4;i+) ni=ni-1*2+1; printf(“%d”,ni);分析步骤: 初值:i=1,n0=0,n1=0 判断:i=4为真,执行循环体:ni=ni-1*2+1;printf(“%d”,ni);

21、n1=n0*2+1;printf(“%d”,n1);n1=1;printf(“%d”,n1);输出n1的值为1,继续执行i+后i的值为2 初值:i=2,n1=1,n2=0 判断:i=4为真,执行循环体:ni=ni-1*2+1;printf(“%d”,ni);n2=n1*2+1;printf(“%d”,n2);n2=3;printf(“%d”,n2);输出n2的值为3,继续执行i+后i的值为3 初值:i=3,n2=3,n3=0 判断:i=4为真,执行循环体:ni=ni-1*2+1;printf(“%d”,ni);n3=n2*2+1;printf(“%d”,n3);n3=7;printf(“%d”

22、,n3);输出n2的值为7,继续执行i+后i的值为4 初值:i=4,n3=7,n4=0 判断:i=4为真,执行循环体:ni=ni-1*2+1;printf(“%d”,ni);n4=n3*2+1;printf(“%d”,n4);n4=15;printf(“%d”,n4);输出n2的值为15,继续执行i+后i的值为5 初值:i=5,n4=15 判断:i=4为假,结束循环体2) 重点讲解课本P97例3,注意思想,求一维数组的平均值sum=0; /*求和时一定要赋初值为0,此处考点上机考试较多*/for(i=0;i10;i+) /*循环控制有多少个元素参加求和运算*/sum=sum+bi; /*通过b

23、i在0到9之间的变化,最后将求得sum的值*/aver=sum/10; /*使用和除以人数,求得平均值aver*/3) 重点讲解课本P97例4,注意思想,求及格人数cnt=0; /*cnt表示计数,用来存储及格的人数,必须赋值为0*/for(i=0;i=60) /*此条件要求bi大于等于60时,执行cnt+*/ cnt+; /*如果满足bi大于等于60,表示及格,因此计数加1*/二、 二维数组1、 二维数组的定义:类型名 数组名常量表达式1 常量表达式2(1) 类型名:整型(int)、单精度实型(float)、双精度实型(double)、字符型(char)(2) 数组名:必须符合标示符命名规则

24、, 是数组的标志(3) 常量表达式:必须为整型常量,不能为变量,常量表达式1表示二维数组的行,常量表达式2表示二维数组的列int a55;double b44;char ch33;(4) 数组元素本质就是变量,数组元素有一个下标,下标从0开始到数组长度-1结束int a22; 定义了一个名为a的整型数组,数组元素为2*2=4个,数组a的元素为:列相同 列相同a00、a01 行相同:第一行a10、a11 行相同:第二行2、 二维数组的赋值(1) 给一维数组元素分别值1) 给变量赋值:int a;/*定义了一个整型变量a*/a=10;/*给变量赋值为10*/2) 给数组元素分别赋值,原理:数组元素

25、本质就是变量 int a22; /*定义了一个整型数组a*/ a00=10;a01=20; a10=30; a11=40;(2) 给二维数组元素整体赋值1) 给变量赋值int a=10;2) 给二维数组赋值,数组长度等于赋值个数的情况 有大括号限定的情况,一个大括号对应一行int a22=10,20,30,40;定义了一个一维数组a,分别为a00的值为10,a01的值为20,a10的值为30,a11的值为40 没有大括号限定的情况,一一对应赋值int a22=10,20,30,40;定义了一个一维数组a,分别为a00的值为10,a01的值为20,a10的值为30,a11的值为40; int a

26、22=0;分析:表示给数组a00的值为0,a01的值为0,a10的值为0,a11的值为0 省略行下标情况(不能省略列下标) int a2=10,20,30,40; /*省略了行下标,赋值时10,20和30,40都被大括号括起来,因此省略的行数应该为2*/int a2=10,20; /*省略了行下标,赋值时10,20刚好够一行,因此行数为1 */int a2=10,20,30; /*省略了行下标,赋值时10,20,30多于一行少于2行,将第二行的列补齐,补入一个数字让赋值个数够两行,因此行数为2*/int a3=10,20,30,40; /*省略了行下标,赋值时10,20,30,40多于一行少于

27、2行,将第二行的列补齐,补入2个数字让赋值个数够两行,因此行数为2*/3) 给二维数组赋值,数组长度大于赋值个数的情况,不够赋值的数组元素赋值为0有大括号限定的情况,一个大括号对应一行,每行不够的补0int a22=10,30;定义了一个一维数组a,第一行有一个元素10,第二行有一个元素30,不够的元素补0。分别为a00的值为10,a01的值为0,a10的值为30,a11的值为0没有大括号限定的情况,一一对应赋值,整体剩余补0int a22=10,30;定义了一个一维数组a,这里没有限定10和30属于第几行,因此采取一一对应赋值,剩余的元素自动补0。分别为a00的值为10,a01的值为30,a

28、10的值为0,a11的值为04) 给二维数组赋值,数组长度小于赋值个数的情况,错误情况 赋值个数不能多于行数int a22=10,20,40,50,60,70; 赋值个数不能多于列数int a22=10,20,30,40,50; 赋值个数不能多于数组元素个数int a22=10,20,40,50,60,70; /*数组a有4个元素,赋值时给了5个数字*/ (3) 重点讲解课本P100例1,讲解时候必须指明为什么对?为什么错?(4) 讲解课本P101习题1,讲解时候必须指明为什么对?为什么错?3、 一维数组中元素的引用(1) 数组元素的一般形式如下:数组名行下标列下标1) 数组中的元素其实就是一

29、个变量,占用一个存储单元int a25=1,2,3,4,5,6,7,8,9,10;a00=10; /*a00原来的值为1,重新赋值为10*/a11+; /*a11的值为7,执行a11+后a11的值为8*/a14=a02+a13; /*a02的值为3,a13的值为9,a14的值为12*/2) 下标表达式的下限为0,上线为常量表达式-1(2) 重点讲解课本P101习题2,若有定义:int a23;A) a2!1 -a20行越界B) a23 -行、列都越界C) a03 -列越界D) a12!1-a00表示第一行的第一个元素,正确三、 循环嵌套与数组的应用(循环和数组不分家)1. 循环与数组的应用(1

30、) 讲解课本P101例1,通过键盘输入10个数,并输出这些数中的最大值和最小值上机考试中容易考到填空题,请学员注意以下几个空: for(i=1;iai) (4) =ai;main() int i,max,min,a10; for(i=0;i10;i+) scanf(”%d”,&ai);max=a0;min=a0;for(i=1;i10;i+) if(maxai) min=ai;printf(“max=%d min=%d”,max,min);通过键盘输入10个数给数组a给max和min一个初始值使用循环来求出10个数的最大值和最小值(2) 讲解习题104页习题1,注意过程main()int i,

31、t3=9,8,7,6,5,4,3,2,1;for(i=0;i3;i+) printf(“%d”,t2-ii);步骤如下: 执行for表达式1:i=0,判断表达式2:i printf(“%d”,t20);-输出3 执行表达式3:i+-i=1 i=1, 判断表达式2:i printf(“%d”,t11);-输出5 执行表达式3:i+-i=2 i=2, 判断表达式2:i printf(“%d”,t02);-输出7执行表达式3:i+-i=3 i=3,判断表达式2:i3为假,结束循环2. 循环嵌套与数组的应用(1) 必须掌握课本102例2(冒泡法排序)考试重点1) 循环嵌套口诀:外循环循环一次,内循环循

32、环全部,直到外循环为假时结束整个循环;2) 将例2按步骤讲清楚,学员就明白什么是循环;将例2练习熟练,学员就掌握了循环;3) 记住红色部分,上机考试至少可以得到10分main()int i,j,a,b5=4,2,8,3,1;for(i=0;i5;i+) for(j=i;jbj) a=bi; bi=bj; bj=a;考试将5改为4,考试以填空题出现,分值:10分j=i也可以改为j=i+1,填空题一般天:j=i+1填空题:j”符号从大到小用小于“”符号交换三步曲:t=a;a=b;b=c; 解题步骤: 外循环:i=0,判断ij=1,判断:jb1-42为真,执行if语句,进行交换:a=b0,b0=b1

33、,b1=a-b数组中的元素变为:2,4,8,3,1。执行:j+j=2,判断:jb2-28为假,不执行if语句,执行:j+-j=3, b数组中的元素为:2,4,8,3,1j=3,判断:jb3-23为假,不执行if语句,执行:j+-j=4, b数组中的元素为:2,4,8,3,1j=4,判断:jb4-21为真,执行if语句,进行交换:a=b0,b0=b4,b4=a-b数组中的元素变为:1,4,8,3,2。执行:j+j=5,判断:ji=1,继续执行下一次循环 外循环: i=1,判断ij=2,判断:jb2-48为假,不执行if语句,执行:j+-j=3,b数组中的元素为:1,4,8,3,2j=3,判断:j

34、b3-43为真,执行if语句,进行交换:a=b1,b1=b3,b3=a -b数组中的元素变为:1,3,8,4,2。执行:j+j=4,判断:jb4-32为真,执行if语句,进行交换:a=b1,b1=b4,b4=a-b数组中的元素变为:1,2,8,4,3。执行:j+j=5,判断:ji=2,继续执行下一次循环 外循环:: i=2,判断ij=3,判断:jb3-84为真,执行if语句,进行交换:a=b2,b2=b3,b3=a-b数组中的元素变为:1,2,4,8,3。执行:j+j=4,判断:jb4-43为真,执行if语句,进行交换:a=b2,b2=b4,b4=a-b数组中的元素变为:1,2,3,8,4。执行:j+j=5,判断:ji=3,继续执行下一次循环 外循环:i=3,判断ij=4,判断:jb4

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

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

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com