为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

任务三学生成绩管理系统主菜单重复选择的实现ppt课件

2023-06-17 30页 ppt 630KB 1阅读

用户头像 个人认证

is_398941

暂无简介

举报
任务三学生成绩管理系统主菜单重复选择的实现ppt课件03任务三学生成绩管理系统主菜单重复选择的实现学习情境前两部分介绍了如何设计学生成绩管理系统的用户界面及界面上菜单选项功能的实现,这一部分完成如何实现学生成绩管理系统主菜单重复选择功能。即用户完成某一菜单功能后,系统能询问是否继续操作,能够继续进行菜单选择。03任务三学生成绩管理系统主菜单重复选择的实现学习情境03任务三学生成绩管理系统主菜单重复选择的实现第一部分任务学习引导3.1for语句3.2while语句3.3do-while语句3.4break语句3.5循环语句的嵌套第二部分模块实现:学生成绩管理系统主菜单重复选择的实...
任务三学生成绩管理系统主菜单重复选择的实现ppt课件
03任务三学生成绩管理系统主菜单重复选择的实现学习情境前两部分介绍了如何设计学生成绩管理系统的用户界面及界面上菜单选项功能的实现,这一部分完成如何实现学生成绩管理系统主菜单重复选择功能。即用户完成某一菜单功能后,系统能询问是否继续操作,能够继续进行菜单选择。03任务三学生成绩管理系统主菜单重复选择的实现学习情境03任务三学生成绩管理系统主菜单重复选择的实现第一部分任务学习引导3.1for语句3.2while语句3.3do-while语句3.4break语句3.5循环语句的嵌套第二部分模块实现:学生成绩管理系统主菜单重复选择的实现第三部分自学与拓展3.6continue语句3.1for语句for语句的一般格式为:for(达式1;表达式2;表达式3)循环体语句功能及执行过程如下。①先求解表达式1。②求解表达式2,若其值为真(非0),则执行循环体语句,然后执行下面第③步;若其值为假(0),则结束循环,转到第⑤步。③求解表达式3。④转回上面第②步继续执行。⑤循环结束,执行for语句下面的一个语句。3.1for语句for语句的一般格式为:其执行流程如图所示。3.1for语句for语句的一般格式为:【例3-1】中,循环次数i是循环变量,i的初值是1,i的终止值是100,所以i要小于等于100才能循环,第i次对应的语句sum=sum+i是循环体,i按1的增量递增,找到循环的三个要素后,用for语句实现【例3-1】,对应程序代码如下。#includemain(){inti,sum;sum=0;for(i=1;i<=100;i++)sum=sum+i;printf("1~100的累加和是:%d\n",sum);}3.1for语句for语句的一般格式为:④表达式1和表达式3都可以是一个简单表达式,也可以是逗号表达式。如【例3-1】中的循环语句可以改写为for(sum=0,i=1;i<=100;i++)sum=sum+i;这时【例3-1】的程序代码中for语句上面的sum=0;语句要删去。同样,表达式3也可以是逗号表达式,如for(i=0,j=100;i<=100;i++,j--)k=i+j;甚至表达式1和表达式3可以是空语句。空语句用“;”表示。含义是什么也不执行。如for(;(c=getchar())!='\n';)putchar(c);含义是把输入的回车符前的字符输出到显示器上。3.1for语句for语句的一般格式为:⑤表达式1用来给循环变量赋初值;表达式2是循环条件,一般是一个关系或逻辑表达式,决定什么时候退出循环;表达式3设置循环变量增量,定义循环变量每循环一次后按什么方式变化。这三个部分之间用“;”分开。for语句最简单的应用形式也是最容易理解的形式如下。for(循环变量赋初值;循环条件;循环变量增量)循环体语句⑥循环体语句可以是一条语句,也可以是多条语句。当是多条语句时,循环体要用“{”和“}”括起来组成复合语句。3.1for语句for语句的一般格式为:⑦对于具体的循环求解问题,首先要分析出重复运算的过程,然后要想用for语句实现,一般要找出循环变量及其初值和终止值,循环体即第i次的对应语句或每次执行的语句,循环变量的增量即可。3.1for语句for语句的一般格式为:【例3-2】求n!。算法分析:由定义知n!=123…n。从键盘输入n值,n=8,就是求8!,n=16,就是求16!,首先设一个累乘器fact用来存放乘积,初值为1。然后分别把1,2,…,n与fact相乘赋值给fact。具体重复运算如下:第1次:fact=fact*1第2次:fact=fact*2第3次:fact=fact*3……第i次: fact=fact*i……第n次:fact=fact*n3.1for语句for语句的一般格式为:这样重复运算n次后,fact的值就是n!。可见,这个求解问题属于重复运算,所以要用循环结构实现,要想用for语句实现,就要从重复运算中提炼出循环变量及其初值和终止值,第i次的对应语句,循环变量的增量即可。通过分析把循环次数i作为循环变量,i的初值是1,最大值是n,第i次对应的语句fact=facti;循环变量i的每次增量为1。对应的for语句为:for(i=1;i<=n;i++)fact=facti。循环结束时fact的值就是n!,最后输出n!。3.1for语句流程图如图所示。3.1for语句for语句的一般格式为:【例3-3】输入全班6位学生某门课的成绩,计算平均成绩,并找出最高分和最低分。算法分析:首先设一个累加器sum用来存放所有学生的课程总成绩。sum是实型变量,初值为0。设实型变量score用来存放学生的成绩,成绩通过输入获取。再设两个实型max、min来存放课程的最高分、最低分,并且max初值为0,min初值为100。然后每次把学生成绩和sum相加赋值给sum,如果成绩大于最高分,把这个成绩赋值给max,如果成绩小于最低分,把这个成绩赋值给min。具体重复运算如下。3.1for语句for语句的一般格式为:第1次:输入第1个学生成绩赋值给score,sum=sum+score,如果成绩大于最高分,把这个成绩赋值给max,如果成绩小于最低分,把这个成绩赋值给min。第2次:输入第2个学生成绩赋值给score,sum=sum+score,如果成绩大于最高分,把这个成绩赋值给max,如果成绩小于最低分,把这个成绩赋值给min。第3次:输入第3个学生成绩赋值给score,sum=sum+score,如果成绩大于最高分,把这个成绩赋值给max,如果成绩小于最低分,把这个成绩赋值给min。……第i次:输入第i个学生成绩赋值给score,sum=sum+score,如果成绩大于最高分,把这个成绩赋值给max,如果成绩小于最低分,把这个成绩赋值给min。……第6次:输入第6个学生成绩赋值给score,sum=sum+score,如果成绩大于最高分,把这个成绩赋值给max,如果成绩小于最低分,把这个成绩赋值给min。3.1for语句for语句的一般格式为:可见,这个求解问题属于重复运算,所以要用循环结构实现,要想用for语句实现,就要从重复运算中提炼出循环变量及其初值和终止值,第i次的对应语句,循环变量的增量即可。所以,通过分析把循环次数i作为循环变量,i的初值是1,终止值是6,i的增量为1,第i次对应的语句:输入第i个学生成绩赋值给score,sum=sum+score,如果成绩大于最高分,把这个成绩赋值给max,如果成绩小于最低分,把这个成绩赋值给min。对应的for语句为:for(i=1;i<7;i++){scanf("%f",&score);sum=sum+score;if(score>max)max=score;if(scoremain(){inti,sum;sum=0;i=1;while(i<=100){sum=sum+i;i++;}printf("1~100的累加和是:%d\n",sum);}3.2while语句从上面程序可以看到,while循环从某种意义上可以看做是for循环的变形,for循环中给循环变量赋初值的表达式1用while语句实现要写在循环的上面;for循环中给循环变量设增量的表达式3在while循环中写在循环体内;for循环中作为循环条件的表达式2可以看成while循环中的表达式,用来控制循环到什么时候结束。因此只要通过重复运算的算法分析找到循环变量的初值和终止值,或者重复循环条件,第i次对应的语句或每次执行的语句后,不仅可以用for语句实现,也可以用while语句实现循环。3.2while语句【例3-4】从键盘输入一行字符按Enter键结束,统计按Enter键之前字符的个数。算法分析:定义一个字符变量ch,用来存放输入的字符,一个整型变量num,用来存放字符个数。图3-9【例3-4】的流程图第1次:读取一个字符赋值给ch,如果ch不是回车符,num=num+1,否则num不再加1。第2次:读取一个字符赋值给ch,如果ch不是回车符,num=num+1,否则num不再加1。第3次:读取一个字符赋值给ch,如果ch不是回车符,num=num+1,否则num不再加1。……第i次:读取一个字符赋值给ch,如果ch不是回车符,num=num+1,否则num不再加1。……3.2while语句【例3-4】从键盘输入一行字符按Enter键结束,统计按Enter键之前字符的个数。可见属于重复运算,用循环结构实现。用户输入的字符个数是随机的,循环次数不易控制,但循环条件总是ch不是回车符就执行循环体。循环体为num=num+1,读取一个字符赋值给ch。因此采用while语句实现。3.3do-while语句do-while语句的一般格式为:do循环体语句while(表达式);do-while语句的流程图3.3do-while语句功能及执行过程如下:先执行循环体语句,然后再计算、判断表达式(循环条件)是否为真,如果为真则继续循环;如果为假,则终止循环。也就是一直执行循环体,直到表达式不成立就结束循环,所以这种循环类型也称为直到型循环。这个循环与while循环的不同在于:它是先执行,后判断。do-while循环不论条件是否成立至少要执行一次循环体语句。3.3do-while语句do-while语句格式说明:①与前两种循环语句相同,循环体语句可以是一条语句,也可以是多条语句。当是多条语句时,循环体要用“{”和“}”括起来组成复合语句。②表达式是循环条件,一般是关系表达式或逻辑表达式,但也可是数值表达式或字符表达式,只要其值非零,就执行循环体。通常,表达式决定什么时候退出循环。③do是保留字,不能省略,while(表达式)后面的“;”不能丢掉。④同样,要用do-while语句实现循环,就要先通过重复循环的算法分析,找到循环变量的初值、最大值,或者重复循环条件,循环变量的增量,第i次(每次)对应的循环体,再套用do-while语句的格式即可。⑤与while循环同样,要在do之前给循环变量赋初值,在循环体中要有设置循环变量增量的语句。3.3do-while语句用do-while语句改写【例3-2】,求n!。算法分析:由【例3-2】的算法分析可知,循环次数i作为循环变量,i的初值是1,最大值是n,第i次对应的语句fact=facti;。#includemain(){inti,n,fact=1;printf("请输入一个整数,求此数的阶乘:");scanf("%d",&n);i=1;do{fact=facti;i++;}while(i<=n);printf("%d!=%d\n",n,fact);}3.3do-while语句【例3-5】输入一个正整数,判断它的位数。算法分析:要判断正整数的位数,如正整数1234,可以把这个数被10除,得到的商大于0,位数加1,然后继续把这个商被10除,得到的商大于0,位数加1,直到得到的商等于0,位数就不在加1,结束循环。可见属于重复运算,要用到循环结构。设置整型变量i存放正整数的位数,初值为0,因为输入的整数是正的,位数至少是1,因此:当输入的数大于0,那么第1次:i=i+1,正整数/10赋值给商。当商大于0,那么第2次:i=i+1,商/10再赋值给商。当商大于0,那么第3次:i=i+1,商/10再赋值给商。……当商大于0,那么第i次:i=i+1,商/10再赋值给商。……一直到商为0。由分析可知,属于重复运算,所以用循环结构实现。由于用户输入的整数是随机的,所以循环次数不明显,但循环的结束条件商为0是不变的,因此每次重复i=i+1,商/10再赋值给商,可以用do-while循环实现。其中,第i次(每次)对应的语句为i=i+1,商/10赋值给商,循环的结束条件是商=0。3.3do-while语句三种循环语句的比较。①for语句和while语句先判断条件,后执行语句,因此循环体有可能一次也不执行,而do-while语句的循环体不管循环条件是否满足至少执行一次。②必须在while语句和do-while语句之前对循环变量赋初值,而for语句一般在表达式1中对循环变量赋初值。③在循环次数已经确定的情况下,习惯用for语句,而对于循环次数不确定,只给出循环结束条件的问题,习惯用while、do-while语句解决。④已知循环变量初值和终止值时,三种循环都可以用来处理同一个问题,一般可以互相代替。3.4break语句break语句通常用在switch语句和循环语句中。break语句格式为:break;功能:当break用于switch语句中时,可使程序跳出switch而执行switch后面的语句。switch语句在前一章中已经介绍,这里不再举例。当break语句用于for、while、do-while循环语句中时,可使程序提前终止循环而执行循环后面的语句,break语句通常不直接出现在循环体中,而是与if语句联在一起,即满足条件时便跳出循环。3.4break语句对应的流程图如图所示。3.4break语句【例3-6】从键盘输入一个大于1的正整数,判断是不是素数。算法分析:由定义知,素数是指除了1和它本身外,没有其他因子,即不能被其他数整除的大于1的整数。定义整型变量a,要判断a是不是素数,应该根据素数的定义,用2,3,…,a1分别去除a,如果a能被其中某个数整除,a不是素数。这时就不用再除下去,因为只要找到一个数能整除a,就能断定a不是素数,就没有必要除后面的数,可以提前退出循环。如果所有这些数都不能整除a,则a是素数。第1次:如果a%2等于0,那么退出循环;第2次:如果a%3等于0,那么退出循环;第3次:如果a%4等于0,那么退出循环;……第i次:如果a%(i+1)等于0,那么退出循环;……最后一次:如果a%(a-1)等于0,那么退出循环。3.4break语句由分析可知,属于重复运算,可以用循环实现。除数i作为循环变量,初值是2,终止值是a1,增量为1,每次对应的语句是如果a%i等于0,那么退出循环,因此可以用for语句来实现。当跳出上述for循环后,有两种可能。一种是由于整除,执行了break跳出循环;另外一种是由于i值为a跳出循环的。那么第一种情况a就不是素数,第二种情况a是素数。3.5循环语句的嵌套如果在一条循环语句的循环体内又包含一个完整的循环结构,则成为循环的嵌套。C语言所提供的三种循环语句(while循环、do-while循环和for循环)可以嵌套自身,也可以相互之间嵌套。嵌套时应该注意的是要在一个循环体内包含另一个完整的循环结构,这就是说,无论哪种嵌套关系都必须将一个完整的循环结构全部放在某个循环体内。如在一个循环的循环体中又嵌套另一个循环语句,称为二重循环,其中循环体中的循环语句称为内层循环,外层的循环称为外层循环。3.5循环语句的嵌套【例3-7】输出如下3行,每行5个“”的图案。***************算法分析。第1次:输出第1行,换行。……第i次:输出第i行,换行。……第3次:输出第3行,换行。3.5循环语句的嵌套可见,循环体输出第i行又是一个重复运算,也要用循环实现。循环次数j作为循环变量,初值是1,终止值是5,每次对应的语句是输出1个。循环变量j的增量为1,因此也可以用for语句来实现。for(j=1;j<=5;j++)输出1个;因此这个问题属于循环嵌套问题,相应的流程图如图所示。第二部分模块实现:学生成绩管理系统主菜单重复选择的实现1算法分析第1次:出现主菜单供用户选择,用户选择一个菜单项,完成相应功能。第2次:出现主菜单供用户选择,用户选择一个菜单项,完成相应功能。……第i次:出现主菜单供用户选择,用户选择一个菜单项,完成相应功能。……循环次数随机,但总是重复地执行“出现主菜单供用户选择,用户选择一个菜单项,完成相应功能。”一直到用户选择菜单项0为止,退出循环。第二部分模块实现:学生成绩管理系统主菜单重复选择的实现1算法分析从上述分析可知,重复运算用循环完成,并且不管用户是否进行操作,主菜单至少要出现一次,因此采用直到型循环的do-while语句实现。对应的循环体是,出现主菜单供用户选择,用户选择一个菜单项,完成相应功能。循环条件是,用户选择的菜单项不是0。上一章定义了一个字符变量choose,用来保存用户的菜单选项,整个程序的结构为:第二部分模块实现:学生成绩管理系统主菜单重复选择的实现1算法分析do{//输出主菜单//输入菜单编号赋值给变量chooseswith(choose){……}//swith语句完成相应菜单项功能}while(choose!=0);第二部分模块实现:学生成绩管理系统主菜单重复选择的实现1算法分析但是这样的程序存在两个问题。①主菜单的编号是0~7,要求用户从其中选择。当用户误操作致使输入的编号不在0~7时,程序没有对这种情况进行提示和处理,导致程序的健壮性不高。②用户每次选择菜单项,完成相应的操作后,进入下一次循环,马上又出现主菜单。这样可能导致相应的操作结果在DOS环境下因滚屏而不易观察到,给用户带来不便,这种情况也需要进行处理。第二部分模块实现:学生成绩管理系统主菜单重复选择的实现1算法分析为了增强程序的容错能力,针对上述问题,增加“判断菜单选项是否正确”、“询问模块”两个模块,具体解决如下。①“判断菜单选项是否正确”模块。当用户选择了某一菜单编号,存储在变量choose后,进行判断,当choose的值没有在0~7,就提示并要求重新输入菜单编号,直到输入的值在0~7。②“询问模块”。为了给用户提供方便,采用人机对话形式,增加询问模块。当用户选择某一菜单项,完成相应的功能后,系统接着询问用户是否需要继续操作,当用户选择“Y”或“y”时,就进入下一次循环,当用户选择“N”或“n”时,就跳出循环,退出系统。同样,当系统询问用户是否需要继续操作时,如果用户输入的值既不是“Y”或“y”,也不是“N”或“n”,就必须重新输入,直到输入的值是“Y”、“y”或“N”、“n”。因此,设计一个字符变量yesorno来存储用户输入的值。第二部分模块实现:学生成绩管理系统主菜单重复选择的实现1算法分析判断菜单选项是否正确”模块的算法分析:用户选择一个菜单项,存储在变量choose,然后进行判断,当choose没有在0~7之间时,就提示并重新输入菜单编号,直到输入的值在0~7。可见属于重复运算,用循环结构完成,并且知道循环条件是choose没有在0~7,循环体是提示并重新输入菜单编号,因此用while语句实现。第二部分模块实现:学生成绩管理系统主菜单重复选择的实现1算法分析询问模块”的算法分析。当用户选择某一菜单项完成相应的功能后,选择“Y”或“y”时,就进入下一次循环,选择“N”或“n”时,才跳出循环。第1次:出现主页面供用户选择,用户选择一个菜单项,完成相应功能。系统询问是否继续,选择“Y”或“y”,就继续,选择“N”或“n”,就跳出循环。第2次:出现主页面供用户选择,用户选择一个菜单项,完成相应功能。系统询问是否继续,选择“Y”或“y”,就继续,选择“N”或“n”,就跳出循环。……第i次:出现主页面供用户选择,用户选择一个菜单项,完成相应功能。系统询问是否继续,选择“Y”或“y”,就继续,选择“N”或“n”,就跳出循环。……第二部分模块实现:学生成绩管理系统主菜单重复选择的实现1算法分析循环次数随机,但总是重复的执行“出现主页面供用户选择,用户选择一个菜单项,完成相应功能。系体统询问是否继续,选择‘Y’或‘y’,就继续,选择‘N’或‘n’,就跳出循环”,一直到用户选择“N”或“n”为止,跳出循环。因此do-while语句的循环条件修改为,用户选择的菜单项是“Y”或“y”。循环体是“出现主页面供用户选择,用户选择一个菜单项,完成相应功能。系统询问是否继续,选择“Y”、“y”或“N”、“n”。其中,为了控制用户必须在“Y”、“y”或“N”、“n”四个字符中选择一个,可以用do-while语句实现。循环条件是yesorno不是“Y”、“y”或“N”、“n”四个字符,循环体是重新输入赋值给yesorno。第二部分模块实现:学生成绩管理系统主菜单重复选择的实现因此整个程序的框架结构为:do{//输出主菜单;//输入菜单编号赋值给变量choose;while{……}//while语句来保证输入的choose必须在0~7之间switch{……}//switch语句完成相应菜单项功能printf("\n要继续选择吗(Y/N)\n");do{……}while(yesorno!='Y'&&yesorno!='N'&&yesorno!='y'&&yesorno!='n')//询问模块。while语句来保证yesorno是“Y”、“y”或“N”、“n”四个字符之一}while(yesorno=='Y'||yesorno=='y');第三部分自学与拓展3.6continue语句continue语句的一般格式:continue;功能及执行过程如下:跳过本次循环中剩余的语句,即不再执行循环体中continue语句之后的语句,而强行执行下一次循环条件的判断与执行。说明:①continue语句只用在for、while、do-while等循环体中,常与if语句一起使用,用来加速循环。②continue语句只结束本次循环的执行,并不跳出循环,而break语句是跳出本层循环。对应的流程图如图所示。第三部分自学与拓展第三部分自学与拓展3.6continue语句【例3-8】输出100以内能被7整除的正整数。算法分析:定义整型变量a,要判断a是否被7整除,只要看相除的余数,余数是0能整除,就输出这个数,否则就不能整除,不输出这个数。判断完这个数是否能整除后,判断下一个数,直到100。1~6肯定不能被7整除,因此,第1次:如果7%7!=0,就不输出,否则输出。第2次:如果8%7!=0,就不输出,否则输出。……第i次:如果i%7!=0,就不输出,否则输出。……第93次:如果100%7!=0,就不输出,否则输出。第三部分自学与拓展3.6continue语句【例3-8】输出100以内能被7整除的正整数。由分析可知,属于重复运算,可以用循环实现。被除数a作为循环变量,初值是7,最大值是100,每次对应的语句是如果i%7!=0,就不输出,否则输出。被除数a增量是1,因此可以用for语句来实现。
/
本文档为【任务三学生成绩管理系统主菜单重复选择的实现ppt课件】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索