《计算思维与算法设计基础教学课件汇总完整版电子教案.pptx》由会员分享,可在线阅读,更多相关《计算思维与算法设计基础教学课件汇总完整版电子教案.pptx(404页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、概论第一章目录123计算思维算法基础计算机程序和计算机语言 4算法实现和VS2010开发环境简介 延迟符计算思维20世纪50年代抽象、数据表达、数据逻辑组织等等,蕴含在工程思维、科学思维等中2006年关于教育计算思维是一种思维过程,是用计算机能够有效解决问题的方法,确切的描述问题及其解决方案的思维过程2008强调计算思维教育的普适性1高级目标培养计算思维computational Thinking计算思维是运用计算机科学的基础概念进行问题求解、系统设计、以及人类行为理解等涵盖计算机科学之广度的一系列思维活动。计算思维的本质就是抽象(abstraction)与自动化(Automation),即在
2、不同层面进行抽象,以及将这些抽象自动化。导航问题起起终132N1n高级目标培养计算思维computational Thinking计算思维是运用计算机科学的基础概念进行问题求解、系统设计、以及人类行为理解等涵盖计算机科学之广度的一系列思维活动。计算思维的本质就是抽象(abstraction)与自动化(Automation),即在不同层面进行抽象,以及将这些抽象自动化。计算思维是人类应具备的第三种思维:u实验思维:实验-观察-发现、推断与总结。-观察与归纳u理论思维:假设、预设-定义/性质/定理-证明。-推理和演绎u计算思维:设计,构造与计算。-设计与构造3的二进制码的二进制码9的二进制码的二进
3、制码内存中内存中的程序的程序代码代码不管是哪种程不管是哪种程序设计语言写序设计语言写的程序,最后的程序,最后都要转换成同都要转换成同样的样的机器指令机器指令代码代码,存于内,存于内存,才能被存,才能被CPUCPU执行执行完成完成3+93+9的计算机程序(基于的计算机程序(基于Z80Z80指令系统)指令系统)计算机语言的比较延迟符算法基础算法的定义2算法的非正式定义:算法是一种逐步解决问题或完成任务的方法。【例1.1】某课程学习小组有5个同学,设计算法求该课程的最高分。求解此题,可以采用逐个比较的方法求得最高分,具体步如下:步骤1:将第一个同学的分数设为最高分;步骤2:如果第二个同学的分数大于最
4、高分,则将其设为最高分,否则最高分不变。步骤3:如果第三个同学的分数大于最高分,则将其设为最高分,否则最高分不变。步骤4:如果第四个同学的分数大于最高分,则将其设为最高分,否则最高分不变。步骤5:如果第五个同学的分数大于最高分,则将其设为最高分,否则最高分不变。延迟符算法基础算法的定义2算法更正式的定义:算法是指求解特定问题的一组明确步骤的有序集合,算法是指求解特定问题的一组明确步骤的有序集合,它产生结果并在有限的时间内终止。它产生结果并在有限的时间内终止。算法的特性:算法的特性:1.有有穷性。性。2.确定性。确定性。3.有有0个或多个个或多个输入。入。4.有一个或多个有一个或多个输出。出。5
5、.有效性。有效性。延迟符算法基础算法的结构(顺序结构)2将第1个同学的分数设为最高分如果第2个同学的分数大于最高分,则将其设为最高分,否则最高分不变。如果第3个同学的分数大于最高分,则将其设为最高分,否则最高分不变。如果第4个同学的分数大于最高分,则将其设为最高分,否则最高分不变。如果第5个同学的分数大于最高分,则将其设为最高分,否则最高分不变。例题1.1的流程图表示延迟符算法基础算法的结构(分支结构)2第n个同学的分数大于最高分最高分改为该同学的分数真假延迟符算法基础算法的结构2算法设计过程包括问题分析、问题抽象、数学建模、算法详细设计、算法正确性验证、算法分析、程序测试和相关文档资料的编制
6、。算法基础算法设计过程2延迟符算法基础2算法设计举例:求1!+2!+3!+n!的值(1)定义问题求解的目标)定义问题求解的目标开始编写程序时,总是需要清晰地知道程序可以做什么。例如上例中要实现的功能就是求20以内阶乘之和。(2)定义算法适用范围)定义算法适用范围求n阶乘的算法很简单,就是123n即可。然而,n!的值随着n的增长而迅速增长。那么程序求解过程中是否能表示这一整数呢?在实际应用中恰当地处理极大的数字或避免出现极大的数字是相当复杂相当复杂的。(3)定义输入和输出)定义输入和输出(4)定义常量和变量以及相关公式)定义常量和变量以及相关公式1.问题说明和分析问题说明和分析延迟符算法基础2算
7、法设计举例:求1!+2!+3!+n!的值 2.算法表示算法表示3.算法正确性证明和分析算法正确性证明和分析算法流程图表示延迟符算法基础算法举例2成绩管理系统延迟符计算机程序和计算机语言3程序是一系列计算机能识别和执行的指令。程序的定义1计算机语言是用于人与计算机通信的语言。计算机语言的定义2延迟符算法实现和VS2010使用4算法实现C语言程序:/*p1_2.c*/#include int main()double numCount=1;double factorial=1,sumFactorial=0;while(numCount20)factorial=factorial*numCount;
8、sumFactorial=sumFactorial+factorial;numCount=numCount+1;printf(sumFactorial=%lfn,sumFactorial);return 0;算法要使用某种计算机语言实现才能被计算机执行算法独立于计算机语言,算法是问题解决的方法和步骤的统称,并不依赖于某种计算机语言,但算法要用计算机运行获得结果则必须用具体的语言编写后才行。延迟符算法实现和VS2010使用4VS2010使用延迟符算法实现和VS2010使用4VS2010使用程序编辑栏2.编写程序和调试程序调试程序方法:(1)通过设置变量输出,根据输出结果检查程序错误并修改。(2)
9、使用断点调试a.单击需要暂停的程序行左边栏或者按F9给当前行添加断点b.按F10(Step Over)逐条执行代码,在执行前可以先设置观察变量,也就是设置需要检查结果是否正确的变量为观察变量,根据逐条执行代码看变量值是否为正确值。c.按F11(Step In)逐条执行代码,但调试器会进入方法内部(比如遇到printf函数将进入该函数内部调试。)2.编写程序和调试程序执行程序方法:(1)选择“调试”菜单中的“开始执行(不调试)”选项执行程序(2)按“Ctrl+F5”运行程序。测试程序:(1)白盒测试(2)黑盒测试3.执行和测试程序执行和测试程序2020加油怎样显示信息第二章程序设计延迟符计算思维
10、的培养算法语言延迟符怎样显示信息求某个学生综合成绩问题变量的命名规则;变量的类型;给变量赋值;算术运算符;求余和除法深入介绍;赋值运算符;格式输出函数;转义字符求任意学生综合成绩问题格式输入函数输入学生成绩判断是否良好问题关系运算符;逻辑运算符123本章提要1、学生综合成绩问题学生的某课程综合成绩由三部分构成:平时成绩占30%;期中测试成绩占10%;期末考试成绩占60%。求解学生的综合成绩某同学平时成绩92分,期中测试89分,期末考试成绩95分92*30%+89*10%+95*60%规律:综合成绩=平时成绩*30%+期中成绩*10%+期末成绩*60%0192*30%=27.60289*10%=
11、8.90395*60%=570427.6+8.9+57=93.5手工计算 92*30%+89*10%+95*60%93.5找个地方准备存放数据给数据赋值计算输出结果1234延迟符计算机的处理过程平时成绩期中成绩期末成绩综合成绩找个地方准备存放数据1延迟符计算机的处理过程计算表达式 92*30%+89*10%+95*60%92,89,95整型数据我们知道是百分数,但计算机不知道计算机中有浮点数,即0.3,0.1,0.6我们知道是百分数,但计算机不知道计算机中有浮点数,即0.3,0.1,0.6我们知道是百分数,但计算机不知道计算机中有浮点数,即0.3,0.1,0.6找个地方准备存放数据1延迟符计算
12、机的处理过程计算表达式 92*30%+89*10%+95*60%int daily_perf,mid_test,final_exam;直接书写0.3,0.1,0.6综合成绩:float scorescore=daily_perf*0.3+mid_test*0.1+final_exam*0.6延迟符C语言标识符的命名规则变量明、数组名、函数名等都属于标识符01OPTION02OPTION03OPTIONC语言相关知识点变量的命名规则延迟符C语言相关知识点变量的类型类型名称型名称所占位所占位数数精度(位)精度(位)数数值范范围基本整型基本整型(signed int)8*432-2147483648
13、2147483647单精度精度实型型(float)8*4约70和10-381038(绝对值)字符型(字符型(char)8*180256(包含ASCII码表的字符)找个地方准备存放数据给数据赋值计算输出结果1234延迟符计算机的处理过程给数据赋值2延迟符定义变量后,再给变量赋值int daily_perf,mid_test,final_exam;float score;daily_perf=92;mid_test=89;final_exam=95;给数据赋值2延迟符int daily_perf=92,mid_test=89,final_exam=95;定义变量时,给变量赋值给数据赋值2延迟符in
14、t daily_perf=92,mid_tes,final_exam=95;mid_test=89;定义变量时,给部分变量赋值找个地方准备存放数据给数据赋值计算输出结果1234延迟符计算机的处理过程#include/*预处理命令,表明需要使用stdio.h中的库函数*/int main()/*定义整形变量并赋值*/int daily_perf=92,mid_test=89,final_exam=95;float score;/*定义实型变量*/找个地方准备存放数据给数据赋值计算输出结果1234延迟符计算机的处理过程计算3延迟符计算机的处理过程score=daily_perf*0.3+mid_t
15、est*0.1+final_exam*0.6;延迟符C语言相关知识点算术运算符%/*+-优先级:这五种运算符中“乘”(*)、“除”(/)和“求余”(%)的优先级相同,都比“加”(+)和“减”(-)优先级高结合性:除非“-”当作负值运算符,否则这五种运算符都具有左结合性注意:整型数据的除法;整型数据才能求余;没有幂运算延迟符C语言相关知识点赋值运算符 =一般形式:变量=表达式符合赋值运算符:+=、-=、*=、/=、%=优先级:非常低级,低于目前所学所有运算符。结合性:从右到左注意:左边必须是变量例如:a+=b相当于a=a+b a/=b+c相当于a=a/(b+c)找个地方准备存放数据给数据赋值计算
16、输出结果1234延迟符计算机的处理过程#include/*预处理命令,表明需要使用stdio.h中的库函数*/int main()/*定义整形变量并赋值*/int daily_perf=92,mid_test=89,final_exam=95;float score;/*定义实型变量*/score=daily_perf*0.3+mid_test*0.1+final_exam*0.6;找个地方准备存放数据给数据赋值计算输出结果1234延迟符计算机的处理过程找个地方准备存放数据给数据赋值计算输出结果1234延迟符计算机的处理过程#include/*预处理命令,表明需要使用stdio.h中的库函数*
17、/int main()int daily_perf=92,mid_test=89,final_exam=95;/*定义整形变量并赋值*/float score;/*定义实型变量*/score=daily_perf*0.3+mid_test*0.1+final_exam*0.6;printf(“The overall score is%fn”,score);/*输出出*/return 0;延迟符C语言相关知识点格式输出函数格式字符串+非格式字符串指定输出格式,以%开头,说明输出数据的类型、形式、长度、小数位数原样输出包含:普通字符、转义字符零个、一个或者多个输出项,用逗号隔开,可以是常量、变量或
18、者表达式printf(“i=%d,ch=%cn”,i,ch);printf(“格式控制字符串”,输出项表);延迟符C语言相关知识点格式输出函数格式字符%d%f%c整型数据实型数据字符型数据输出结果4延迟符计算机的处理过程printf(“The overall score is%fn”,score);指定输出格式,以%开头,说明输出数据的类型、形式、长度、小数位数原样输出包含:普通字符、转义字符零个、一个或者多个输出项,用逗号隔开,可以是常量、变量或者表达式延迟符C语言相关知识点转义字符字符形式字符形式功能功能说明明n回回车换行,将当前位置移到下一行开行,将当前位置移到下一行开头t横向跳到下一制
19、表位置横向跳到下一制表位置反斜反斜线符符单引号字符引号字符”双引号字符双引号字符找个地方准备存放数据给数据赋值计算输出结果1234延迟符计算机的处理过程#include/*预处理命令,表明需要使用stdio.h中的库函数*/int main()int daily_perf=92,mid_test=89,final_exam=95;/*定义整形变量并赋值*/float score;/*定义实型变量*/score=daily_perf*0.3+mid_test*0.1+final_exam*0.6;printf(“The overall score is%fn”,score);/*输出出*/ret
20、urn 0;2、求任意学生综合成绩问题变量平时成绩(daily_perf)、期中测试成绩(mid_test)和期末考试成绩(final_exam)的值,由用户输入,通过统一的计算公式求解综合成绩(score),计算机再输出结果daily_perf*0.3+mid_test*0.1+final_exam*0.6定义变量用户给数据赋值计算输出结果1234延迟符计算机的处理过程定义变量用户给数据赋值计算输出结果1234延迟符计算机的处理过程#include/*预处理命令,表明需要使用stdio.h中的库函数*/int main()int daily_perf,mid_test,final_exam;
21、/*定义整形变量*/float score;/*定义实型变量*/*用用户输入数据入数据*/score=daily_perf*0.3+mid_test*0.1+final_exam*0.6;printf(“The overall score is%fn”,score);/*输出*/return 0;怎怎样输入数据入数据?延迟符C语言相关知识点格式输入函数格式字符串+非格式字符串指定输出格式,以%开头,说明输出数据的类型最好不要使用地址列表用逗号隔开是由若干个地址组成的列表scanf(“%d%c”,&i,&ch);scanf(“格式控制字符串”,地址列表)定义变量用户给数据赋值计算输出结果1234
22、延迟符计算机的处理过程int daily_perf,mid_test,final_exam;scanf(“%d%d%d”,&daily_perf,&mid_test,&final_exam);printf(“%d%d%d”,daily_perf,mid_test,final_exam);比较延迟符C语言相关知识点部分scanf格式字符说明表格式格式字符意字符意义d输入十进制整数u输入无符号十进制整数f输入实型数(用小数形式)c输入单个字符s输入字符串#include/*预处理命令,表明需要使用stdio.h中的库函数*/int main()int daily_perf,mid_test,fin
23、al_exam;/*定义整形变量并赋值*/float score;/*定义实型变量*/printf(Input daily_perf mid_test final_exam:n);/*提示用户输入信息提示用户输入信息*/scanf(%d%d%d,&daily_perf,&mid_test,&final_exam);/*使用格式输入函数,获取变量的值*/score=daily_perf*0.3+mid_test*0.1+final_exam*0.6;/*给变量赋值为算术表达式的值*/printf(The overall score is%fn,score);/*输出*/return 0;3、输入
24、学生成绩判断是否良好问题规定学生综合成绩在80分和90分之间属于良好,90分及以上属于优秀。输入某学生各项成绩后,如何判断此学生综合成绩(score)是否良好呢?daily_perf*0.3+mid_test*0.1+final_exam*0.6良好:8090定义变量用户给数据赋值计算判断1234延迟符计算机的处理过程输出良好输出不是良好分支结构#include/*预处理命令,表明需要使用stdio.h中的库函数*/int main()int daily_perf,mid_test,final_exam;/*定义整形变量并赋值*/float score;/*定义实型变量*/printf(Inp
25、ut daily_perf mid_test final_exam:n);scanf(%d%d%d,&daily_perf,&mid_test,&final_exam);score=daily_perf*0.3+mid_test*0.1+final_exam*0.6;/*判断是否良好,并输出提示*/return 0;延迟符C语言相关知识点6种关系运算符小于小于大于大于=大于或者等于大于或者等于=等于等于!=不等于不等于延迟符C语言相关知识点部分运算符优先级3、输入学生成绩判断是否良好问题规定学生综合成绩在80分和90分之间属于良好,90分及以上属于优秀。输入某学生各项成绩后,如何判断此学生综合
26、成绩(score)是否良好呢?daily_perf*0.3+mid_test*0.1+final_exam*0.6良好:809080=score90?#include/*预处理命令,表明需要使用stdio.h中的库函数*/int main()int daily_perf,mid_test,final_exam;/*定义整形变量并赋值*/float score;/*定义实型变量*/printf(Input daily_perf mid_test final_exam:n);scanf(%d%d%d,&daily_perf,&mid_test,&final_exam);score=daily_pe
27、rf*0.3+mid_test*0.1+final_exam*0.6;if(80=score90)printf(“Yesn”);else printf(“Non”);return 0;能否得到正确能否得到正确结果?果?延迟符C语言相关知识点逻辑运算符!(逻辑非)&(逻辑与)|(逻辑或)aba&ba|b!a00001010111001011110#include/*预处理命令,表明需要使用stdio.h中的库函数*/int main()int daily_perf,mid_test,final_exam;/*定义整形变量并赋值*/float score;/*定义实型变量*/printf(Inpu
28、t daily_perf mid_test final_exam:n);scanf(%d%d%d,&daily_perf,&mid_test,&final_exam);score=daily_perf*0.3+mid_test*0.1+final_exam*0.6;if(80=score90)printf(“Yesn”);else printf(“Non”);return 0;80=score&score90#include/*预处理命令,表明需要使用stdio.h中的库函数*/int main()int daily_perf,mid_test,final_exam;/*定义整形变量并赋值*/
29、float score;/*定义实型变量*/printf(Input daily_perf mid_test final_exam:n);scanf(%d%d%d,&daily_perf,&mid_test,&final_exam);score=daily_perf*0.3+mid_test*0.1+final_exam*0.6;if(80=score&score90)printf(“Yesn”);else printf(“Non”);return 0;延迟符C语言相关知识点部分运算符优先级本章小结延迟符计算思维的培养算法语言顺序结构分支结构1OPTION3OPTION2OPTION熟能生巧2
30、020加油怎样解决生活中的选择问题第三章目录CONTENTS1 各科不及格人数问题求解2 补考提示问题如何判断一个学生是否如何判断一个学生是否不不及格从而得到不及格人数?及格从而得到不及格人数?如何判断一个学生是否如何判断一个学生是否不不及格从而输出补考提示?及格从而输出补考提示?这里,我们就需要使用这里,我们就需要使用选择结构选择结构来实现。来实现。前言preface各科不及格人数问题求解Part 1问题阐述算法设计代码实现01各科不及格人数问题求解一、问题阐述输入3名学生的4门成绩:能够判断该分数是否及格(我们以60分作为及格标准);能够分别统计输出这4门课程不及格的人数。【问题简化】输入
31、3名学生的门课程成绩,统计这门课程不及格的人数。X同学科目1 科目2 科目3 科目4Y同学科目1 科目2 科目3 科目4Z同学科目1 科目2 科目3 科目401各科不及格人数问题求解二、算法分析问题:统计第一门课程不及格学生的人数。步骤:设这门课程不及格的初始人数为0,即n1=0;并设置变量x,y,z用来存放第一门课3个同学的成绩。通过单分支选择结构,判断x是否小于60:x=60,则不做任何处理。01各科不及格人数问题求解二、算法分析重复步骤,判断该课程第二个同学的分数y是否小于60,并对n1进行相应处理;重复步骤,判断该课程第三个同学的分数z是否小于60,并对n1进行相应处理;n1此时的值则
32、是第一门课程不及格学生的人数。01各科不及格人数问题求解三、代码实现(1)知识点阐述要实现上述算法,我们所用到单分支if语句,其基本格式如下:ifif(表达式)(表达式)语句语句首先判断表达式的值,然后:如果表达式的值为“真(非0)”,则执行语句;如果表达式的值为“假(0)”,则不执行该语句。01各科不及格人数问题求解三、代码实现#includemain()/*第一步:定义变量*/int n1;/*用来保存不及格人数 */float x,y,z;/*x,y,z分别表示三名同学的成绩*/*第二步:提示用户,从键盘上输入学生的成绩*/printf(请输入三名学生的成绩:);scanf(%f%f%f
33、,&x,&y,&z);01各科不及格人数问题求解/*第三步:计算各门课程不及格人数*/n1=0;/*变量初始为0*/if(x60)n1+;if(y60)n1+;if(z=60)printf(“成绩及格”);else printf(“成绩不及格”);补考提示问题01各科不及格人数问题求解三、代码实现几点几点说明说明:(1)对于所有if语句(含单分支、双分支)后面的“表达式”类型:逻辑表达式或关系表达式最常见赋值表达式 例如:if(password=123456)printf(“密码正确!”);补考提示问题01各科不及格人数问题求解三、代码实现几点几点说明说明:(1)对于所有if语句(含单分支、双
34、分支)后面的“表达式”类型:逻辑表达式或关系表达式最常见赋值表达式 补考提示问题说明:初学者在使用“=”时经常与赋值符号(=)混淆,以上的例子中,如想要判断密码password与123456是否相等,则应该写成右边的形式。例如:if(password=123456)printf(“密码正确!”);例如:if(password=123456)printf(“密码正确!”);恒恒为真真“非非0即真即真”01各科不及格人数问题求解三、代码实现几点几点说明说明:(1)对于所有if语句(含单分支、双分支)后面的“表达式”类型:逻辑表达式或关系表达式最常见赋值表达式任意的数值类型(包括整型、实型、字符型、
35、指针型数据)。例如:if(6)语句 if(A)语句实际上,只要表达式的值为非0,则表达式的值就为“真”;否则,其值为“假”。补考提示问题01各科不及格人数问题求解三、代码实现几点几点说明说明:(2)if语句后面的表达式必须用括号括起来并且之后不能有分号,但是语句后面的分号不可省。(3)对于双分支if语句,else子句不能单独使用,它必须是if语句的一部分,与if语句配对使用。补考提示问题01各科不及格人数问题求解三、代码实现几点几点说明说明:(4)关键词if、else后面的语句,可以为复合语句,即用一对 括起来的若干个语句集合。需要注意的是,在“”后面不能再加分号。例如:if (ab)a+;b
36、-;else a-;b+;补考提示问题01各科不及格人数问题求解三、代码实现C C语言的语言的“语句语句”类型角度类型角度1、表达式语句 如 a+;x=a+b;2、函数调用语句如 printf(“good morning”);Scanf(“%d”,&a);3、空语句 ;4、复合语句如 a+;x=a+b;。补考提示问题01各科不及格人数问题求解三、代码实现C C语言的语言的“语句语句”格式角度格式角度1、简单语句 如 a+;x=a+b;如 printf(“good morning”);Scanf(“%d”,&a);2、复合语句如 a+;x=a+b;补考提示问题01各科不及格人数问题求解三、代码实
37、现2、代码实现#includemain()float score;printf(请输入学生成绩:);scanf(%f,&score);if(scoreb)a=0;b=0;printf(%d,%dn,a,b);getch();_小测试main()int a=3,b=4;if(ab)a=0;b=0;printf(%d,%dn,a,b);getch();_小测试main()int a=3,b=4;if(ab);a=0;b=0;printf(%d,%dn,a,b);getch();_小测试从键盘上输入一个三位数,写程序判断是否为回文数。是则输出“yes”,不是则输出“no”。(例如:232、171、3
38、63等是回文数)。输入一个三位数得到个位数ge得到百位数baige=bai输出”是回文数”输出”不是回文数”结束真假思考课程最高分问题求解Part 3问题阐述算法设计代码实现提高篇01各科不及格人数问题求解最高分最高分最高分最高分一、问题阐述【问题简化】对于我们输入3名学生的某门课程成绩,要求输出这门课程的最高分。X同学科目1 科目2 科目3 科目4Y同学科目1 科目2 科目3 科目4Z同学科目1 科目2 科目3 科目4 对于我们输入3名学生的4科成绩,要求输出这4门课程的最高分。01各科不及格人数问题求解二、算法分析(1)找出第一门课程的最高分是多少,其步骤如下:设定存放第一门课程最高分的变
39、量max1;看第X同学该课程分数x1是否比Y同学该课程分数y1高如果是,跳转至第步;如果不是,跳转至第步。第步第步01各科不及格人数问题求解二、算法分析看X同学的分数x1是否比Z同学的分数z1高如果是,则最高分为X同学的分数x1否则最高分为Z同学的分数z1看第Y的分数y1是否比Z同学的分数z1高如果是,则最高分为Y同学的分数y1否则最高分为Z的分数z1第步第步01各科不及格人数问题求解二、算法分析(2)找出第二门课程的最高分是多少,算法思路同第一门课程;(3)找出第三门课程的最高分是多少,算法思路同第一门课程;(4)找出第四门课程的最高分是多少,算法思路同第一门课程。01各科不及格人数问题求解
40、三、代码实现#includemain()/第一步:定义变量float max1,max2,max3,max4;/用来保存各课程最高分float x1,x2,x3,x4,y1,y2,y3,y4,z1,z2,z3,z4,a1,a2,a3;01各科不及格人数问题求解三、代码实现/第二步:从键盘上输入学生的成绩printf(请输入第一名学生的四门成绩:);scanf(%f%f%f%f,&x1,&x2,&x3,&x4);printf(请输入第二名学生的四门成绩:);scanf(%f%f%f%f,&y1,&y2,&y3,&y4);printf(请输入第三名学生的四门成绩:);scanf(%f%f%f%f,
41、&z1,&z2,&z3,&z4);01各科不及格人数问题求解三、代码实现/*第三步;计算各课程最高分*/第1门课程if(x1y1)if(x1z1)max1=x1;elsemax1=z1;elseif(y1z1)max1=y1;elsemax1=z1;01各科不及格人数问题求解三、代码实现/第2门课程if(x2y2)if(x2z2)max2=x2;elsemax2=z2;elseif(y2z2)max2=y2;elsemax2=z2;01各科不及格人数问题求解三、代码实现 /第3门课程if(x3y3)if(x3z3)max3=x3;elsemax3=z3;elseif(y3z3)max3=y3;
42、elsemax3=z3;01各科不及格人数问题求解三、代码实现/第4门课程if(x4y4)if(x4z4)max4=x4;elsemax4=z4;elseif(y4z4)max4=y4;elsemax4=z4;01各科不及格人数问题求解三、代码实现/第四步:输出各门课程的最高分printf(第1门课程的最高分是:%.1fn,max1);printf(第2门课程的最高分是:%.1fn,max2);printf(第3门课程的最高分是:%.1fn,max3);printf(第4门课程的最高分是:%.1fn,max4);运行结果:熟能生巧2020加油怎样解决生活中的重复问题(二)第四章目录一、多个学生
43、成绩输入问题求解二、单门课程成绩平均分计算问题求解三、多门课程成绩平均分计算问题求解完成一个班级学生的多门课程成绩输入,并求出每门课程成绩的平均分,请问要如何处理?问题单门课程成绩平均分计算问题求解Part 2问题阐述算法分析代码实现01各科不及格人数问题求解一、问题阐述根据上讲课程知识,假定我们已经完成班级学生语文成绩的输入,现在需要求出该班语文成绩的平均分,请问要如何处理?01各科不及格人数问题求解二、算法分析为了求出语文成绩的平均分,可将每个学生的该门成绩累加起来,然后除以人数N,即得平均分。具体来说,采用一维实型数组stuGrade来存放N个学生的语文成绩,利用计数器i控制数据的输入和
44、累加,利用累加器sum保存各个语文成绩的和。01各科不及格人数问题求解二、算法分析算法具体步骤如下:定义计数器i和累加器sum,0=i,0=sum;定义数组stuGrade;判断i sum;i+1=i,转第步;输出sum/N的值;输入结束。01各科不及格人数问题求解二、算法分析作业:利用while循环编程实现该算法。(10分钟)01各科不及格人数问题求解三、代码实现(1)程序设计相关知识for循环语句的定义和使用(2)C语言编程实现01各科不及格人数问题求解3.1 程序设计相关知识(1)for循环语句适用场合:for循环的使用最灵活。当循环次数已知时,用for循环实现最简单、清晰。for循环也
45、可以用于循环次数不确定以及循环结束条件未知的情况。一般格式如下:for(表达式1;表达式2;表达式3)循环体;01各科不及格人数问题求解3.1 程序设计相关知识for循环的执行过程如下:先求解表达式1;求解表达式2,若其值为真(非0),则执行内嵌语句,然后执行第3步;否则,跳转到第5步;求解表达式3;转回上面第2步继续执行;循环结束,执行for语句下面的一个语句。图4-12 for循环程序执行流程图一般格式如下:for(表达式1;表达式2;表达式3)循环体;01各科不及格人数问题求解for循环执行过程说明:“表达式1”在循环执行过程中只执行一次,通常用来设置循环控制变量初值;“表达式2”的作用
46、是判断循环结束的条件,其一般是关系表达式或逻辑表达式,也可以是数值表达式或字符表达式,通常用于决定什么时候退出循环;“表达式3”通常用来改变控制变量的值,定义循环控制变量每循环一次后按什么方式变化;以上三个表达式之间用“;”分隔。for(循环变量赋初值;循环条件;改变循环变量)循环体;3.1 程序设计相关知识01各科不及格人数问题求解【回顾】【例4.1】用while循环实现功能:计算10!并显示结果。/*p4_1.c*/#includemain()int i,p;p=1;i=1;while(i=10)p=p*i;i+=1;printf(10!=%dn,p);01各科不及格人数问题求解3.1 程
47、序设计相关知识【例4.5】计算10!并显示结果,用for循环实现。/*p4_8.c*/#includemain()int i,p;p=1;for(i=1;i=10;i+)p=p*i;printf(10!=%dn,p);求n!程序流程图/*p4_8.c*/#includemain()int i,p;p=1;/*简化形式*/for(i=1;i=10;i+)p=p*i;printf(10!=%dn,p);01各科不及格人数问题求解注意事项:“表达式1”在循环执行过程中,只执行一次,可以是与循环控制变量无关的其他表达式。如例4.5所示,main函数可以写成如下形式:#includemain()int
48、i,p;for(p=1,i=1;i=10;i+)p=p*i;printf(10!=%dn,p);/*p4_8.c*/#includemain()int i,p;p=1;/*简化形式*/for(i=1;i=10;i+)p=p*i;printf(10!=%dn,p);逗号表达式逗号表达式01各科不及格人数问题求解“表达式1”、“表达式2”、“表达式3”都是可选项,即三个表达式可以省略其中一个或两个或全部省略,但“;”不能省略。例4.5中,省略“表达式1”,表示在for循环中不对控制变量赋初值。例如:#includemain()int i,p;p=1;i=1;for(;i=10;i+)p=p*i;p
49、rintf(10!=%dn,p);/*p4_8.c*/#includemain()int i,p;p=1;/*简化形式*/for(i=1;i=10;i+)p=p*i;printf(10!=%dn,p);01各科不及格人数问题求解省略“表达式2”,表示不判断循环条件,循环将无限执行下去,也就认为“表达式2”的值始终为“真(非0)”。此种情况下,需要在循环体中设置结束循环的语句,否则程序将陷入死循环。/*p4_8.c*/#includemain()int i,p;p=1;/*简化形式*/for(i=1;i=10;i+)p=p*i;printf(10!=%dn,p);/*p4_8.c*/#inclu
50、demain()int i,p;p=1;for(i=1;i+)p=p*i;printf(10!=%dn,p);死循死循环!01各科不及格人数问题求解省略“表达式3”,表示不改变循环控制变量的值。例4.5中,如果省略“表达式3”,则“表达式3”直接放在循环体内的最后一条语句即可。例如右侧代码所示。main()int i,p;p=1;for(i=1;i=10;)p=p*i;i+;i+;printf(10!=%dn,p);01各科不及格人数问题求解“表达式1”和“表达式3”可以是一个简单表达式也可以是逗号表达式。在逗号表达式内按从左到右的顺序计算,其返回值和类型是最右边表达式的值和类型。#inclu