资源描述
项目3:学生总评成绩的统计与排序 涉及到的知识点如下:,单元一:while语句的流程以及应用 单元二:do-while语句的流程以及应用 单元三:for语句的流程以及应用 单元四:break、continue语句的应用 单元五:循环结构的嵌套练习 单元六:分支、循环结构的综合应用 单元七:一维数组的定义及应用 单元八:二维数组的定义及应用 单元九:学生总评成绩统计与排序的实现,一般形式为: do 语句组; while(表达式);,1、 do-while语句的格式,3.3do-while语句,2、 do-while语句的执行过程,直到型循环,3.3do-while语句,执行 1,Y 执行 3,Y 执行 2,N 结束,Y,Y,Y,Y 执行 4,N,特点: 循环至少执行一次,练习,试用while编写程序,判断2000-2010之间的每一个年是否是闰年,是闰年的输出“xxxx is leap year”,不是闰年的输出“xxxx is not leap year”, 例如: “2000 is leap year” “2001 is not leap year” . “2010 is not leap year”,问题解析,对这类问题,我们可以找出其中的三大关键是: 1、从什么地方开始; 2、什么时候结束; 3、反复做什么。,我们可以总结为: 初始值 循环做的条件 循环做的事情,循环体:通常我们把循环做的事情称为循环体。,对于判断闰年的问题: 1、从哪里开始? 2、什么时候结束? 3、反复做的事情? X=2000 /*从这里开始*/ While(x= 2010) /* 如果条件成立 则结束*/ 1、 判断x年是不是闰年 。/*重复要做的事情*/ 2、 ? /* 判断完当前年,指向下一年*/ ,从2000年开始,到2010年结束,判断某年是不是闰年,第一类题目,该类题目一般求解若干数的和以及这些数的平均值。 求解思路: 找到从哪里开始,也就是从那个数开始加起或者乘起。 从哪里结束,也就是找到加到(或者乘到)哪个数结束。 循环执行的动作以及次数:求和或者求解乘积 关键:如何从当前这个数转到下一个数。,练习,一、计算12+22+32+42+.+n2 解题步骤: 1、定义保存求和结果的变量sum,并sum=0。 2、定义变量n,输入变量n的值。 3、循环的计算下面的第4和第五步骤: 4、sum=sum+n2 5、n- -,练习,二、功能:编程实现1!+2!+n!的和。 提示: 1、n的值必须通过键盘输入,要不然你不知道加到谁的和。例如输入6,那就是n=6 2、1!=1 2!=1 2 3!=1 2 3 4!= 1 2 3 4 5!= 1 2 3 4 5 6!= 1 2 3 4 5 6 Sum=1!+2!+3!+4!+5!+6!=?,main() long int p,sum=0 ; int i,n; i=1; p=1; /* 先给出n的值,就知道加到谁的阶乘了*/ scanf(“%d”, ,练习,三、大家来找茬 #include”stdio.h” main() int sum,i,a; sum=0;i=0; do scanf(“%d”, ,输入的数据分别为:6 -1 Sum=?,练习,四、输入10个数,统计并输出正数、负数和0的个数。 提示: 入口:? 出口:? 循环执行的动作:?,练习,四、计算 1/12-1/22+1/32-1/42+.-1/1002 解题思路: 入口(开始):k=1 出口(结束):k=100 循环执行的动作: sum=sum+(1/k2)?,练习,五、编程题目: 输入五个学生的成绩,要求每次从键盘输入每个学生的2门成绩,计算每个学生的平均分,如果平均分数大于等于85为优秀;8560为及格。统计出成绩优秀的学生和及格的学生人数。,练习,六、编程题目: 打印并输出所有的水仙花数,所谓水仙花是指一个三位数,其各位数的立方和等于数本身,如153=13+53+33,练习,七、计算 s=1/2+2/3+3/4+(n-1)/n 解题思路: 入口(开始):k=1 出口(结束):k=n 循环执行的动作: sum=sum+ k/( k+1),第二类题目,该类题目一般找寻某个区间上符合要求的数。 求解思路: 从哪里开始:也就是从那个数开始找起。 从哪里结束:也就是找到哪个数结束。 循环执行的动作:判断这个数 符不符合要求。 关键:如何从当前这个数转到下一个数。,练习,一、请找出1100之间所有的偶数。 解题步骤: 入口(开始):从1开始 出口(结束):到100结束 循环执行的动作: 判断当前的数是不是偶数 判断完以后如何转到下一个数呢,比如判断完23后,如何判断24是不是偶数呢?,练习,二、请列出所有的个位数是4,且能被6整除的2位数。 解题步骤: 入口(开始):从10开始 出口(结束):到99结束 循环执行的动作: 判断当前的数个位数是不是4,并且能被6整除。 当前数怎么转到下一个数?,练习,三、功能:编程实现从键盘输入m和n的值,求他们的最大公约数和最小公倍数。 提示:首先使用辗转相除法求两个数的最大公约数。然后用两数的乘积除以最大公约数,即是两数的最小公倍数。 辗转相除法: 1、设mn 。 2、令r = m%n 。 3、若r等于0,则n即为最大公约数,退出循环。否则,令m=n; n=r,转第2步骤。,第三类题目,该类题目一般通过循环不断的输入数据,然后在做相应的处理。 求解思路: 如果读入的是20个数据,那么循环次数就是20 从哪里开始:可以是1或者其他的。 从哪里结束:可以是20或者其他的。 循环执行的动作:输入数据,然后在做其他的操作。,练习,一、输入20个整数,求它们的和以及平均值。 解题步骤: 1、定义一个变量来对输入的整数的个数进行计数 2、循环输入20个整数求和,存入sum中。 3、计算20个数的平均值。 4、输出总和以及平均值。,练习,二、将输入的一串字符显示在屏幕上,遇到字符“$”时停止。 解题步骤: 入口(开始):读入一个字符 出口(结束):读入字符“$” 循环执行的动作: 将当前读入的字符显示在屏幕上。,三、输入a和n的值,编写程序求下列的数学计算式: a+aa+aaa+aaaa+aa.aa 例如当a=3 n=5时表达式为: 3+33+333+3333+33333,n个a,四、猴子吃桃问题。 猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天又将剩下的桃子,吃掉一半,又多了一个。以后每天将前一天剩下的桃子吃掉一半,再多吃一个。到第10天只剩下一个桃子了,求第一天共摘了多少桃子。,do-while综合练习,1、计算1+1/2+1/4+1/50的值,并显示出来 2、计算1+1/3+1/5+.+1/99的和。 3、输入一个正整数,然后统计该正整数各位中零的个数,并求各位数字中的最大者。 4、求和 1+(1+2)+(1+2+3)+(1+2+3+4)+.(1+2+3+4+5+6+7+8+9+10) 5、编写程序计算1001000之间有多少个数其各位数字之和是5.,6、有一分数序列:1,3,5,8,13,21,用do-while循环求出这个数列的前20项之和。 7、有近千名学生排队,7人一行余3人,5人一行余2人,3人一行余1人,编写程序求学生人数。 8、编程序解决百马百担问题:有100匹马,驼100担货,大马驼3担,中马驼2担,两匹小马驼1担,问有大、中、小马各有多少匹?,
展开阅读全文