第四章 循环结构.ppt
《第四章 循环结构.ppt》由会员分享,可在线阅读,更多相关《第四章 循环结构.ppt(80页珍藏版)》请在麦多课文档分享上搜索。
1、第四章 循环结构,第一节 for语句,第二节 while语句,第三节 do-while语句,第四节 循环嵌套,第一节 for语句,一、语句格式格式1,说明:语句1是for循环语句的循环体,它将在满足条件的情况下被重复执行。格式2,说明:循环体部分由多个语句构成,应由一对花括号括起来,构成一个语句块的形式程序风格提示:写for循环语句时,循环体的语句相对于for缩进两格。,第一节 for语句,二、语句执行过程 for语句的执行过程可由以下4步来描述。 (1)执行“控制变量初始化语句”,使控制变量获得一个初值。 (2)判断控制变量是否满足“条件表达式”,若满足条件则执行一遍循环体,否则结束整个fo
2、r语句,继续执行for循环下面的句子。 (3)根据增量表达式,计算出控制变量所得到的新值 (4)自动转到第(2)步。,第一节 for语句,三、语句格式举例(1)将控制变量从1变到100,增量为1for(i=1;i=1;-i)(3)控制变量从7变到77,增量为7for(i=7;i=2;i-=2)(5)按所示数列改变控制变量值:99、88、77、66、55、44、33、22、11、0,增量为-11for(int j=99;j=0;j-=11)(6)控制变量i和j共同进行循环控制,i从1变到99,j从2变到100,增量均为2。for(int i=1,j=2;i=99&j=100;i+=2,j+=2)
3、需要说明的是:可以在for循环“ 控制变量初始化语句”中声明变量(如上面最后3个例子),这些变量只在for循环结构中有效,离开了该for结构,变量就无效了。,第一节 for语句,例4.1 输出1100之间所有偶数。 #include using namespace std; int main ()for (int i=2; i using namespace std; int main () int sum=0;for (int i=1; i=100 ; +i) sum+=i;cout sum;return 0; ,第一节 for语句,例4.3 利用for循环计算n!的值。 分析:n!1*2*
4、3*n #include using namespace std; int main () long long s; /Noip2010开始C+语言中long long类型允许使用int n; /n不能定义为long long,否则for语句死循环s=1;scanf(“%d“, 【说明】: 当n=13时,s值超过了int类型的表示范围。还有一种比int更大的类型,称为long long,它的表示范围是-263263-1,比-10191019略窄,而我们一直使用的int范围是-231231-1,只比-2*1092*109略宽。输入输出long long也可以借助于printf和scanf语句,但
5、对应的占位符却是和平台与编译器相关的:在linux中,gcc很统一的用%lld;在windows中,MinGW的gcc和VC6可用%I64d;高版本编译器下windows可以使用%lld。,第一节 for语句,例4.4 利用for循环,分别计算1100中奇数的和、偶数的和。#include using namespace std; int main ( )int jssum=0;int ossum=0;for (int js=1,os=2;js=99 说明:我们也可以在for循环初始化或增值表达式部分中放一条以上的语句,中间用逗号隔开。,【上机练习】,1.求平均年龄【1.5编程基础之循环控制0
6、1】班上有学生若干名,给出每名学生的年龄(整数),求班上所有学生的平均年龄,保留到小数点后两位。 输入:第一行有一个整数n(1= n = 100),表示学生的人数。其后n行每行有1个整数,表示每个学生的年龄,取值为15到25。 输出:输出一行,该行包含一个浮点数,为要求的平均年龄,保留到小数点后两位。 样例输入:21817 样例输出:17.50,【上机练习】,2.均值【1.5编程基础之循环控制02】给出一组样本数据,包含n个浮点数,计算其均值,精确到小数点后4位。 输入:输入有两行,第一行包含一个整数n(n小于100),代表样本容量;第二行包含n个绝对值不超过1000的浮点数,代表各个样本数据
7、。 输出:输出一行,包含一个浮点数,表示均值,精确到小数点后4位。 样例输入:21.0 3.0 样例输出:2.0000,【上机练习】,3.求整数的和与均值【1.5编程基础之循环控制03】读入n(1=n=10000)个整数,求它们的和与均值。 输入:输入第一行是一个整数n,表示有n个整数。第2n+1行每行包含1个整数。每个整数的绝对值均不超过10000。 输出:输出一行,先输出和,再输出平均值(保留到小数点后5位),两个数间用单个空格分隔。 样例输入:4344222343222 样例输出:1131 282.75000,【上机练习】,4.最高的分数【1.5编程基础之循环控制04】孙老师讲授的计算概
8、论这门课期中考试刚刚结束,他想知道考试中取得的最高分数。因为人数比较多,他觉得这件事情交给计算机来做比较方便。你能帮孙老师解决这个问题吗? 输入:输入两行,第一行为整数n(1 = n 100),表示参加这次考试的人数.第二行是这n个学生的成绩,相邻两个数之间用单个空格隔开。所有成绩均为0到100之间的整数。 输出:输出一个整数,即最高的成绩。 样例输入:585 78 90 99 60 样例输出:99,【上机练习】,5.最大跨度值【1.5编程基础之循环控制05】给定一个长度为n的非负整数序列,请计算序列的最大跨度值(最大跨度值 = 最大值减去最小值)。 输入:一共2行,第一行为序列的个数n(1
9、= n = 1000),第二行为序列的n个不超过1000的非负整数,整数之间以一个空格分隔。 输出:输出一行,表示序列的最大跨度值。 样例输入:63 0 8 7 5 9 样例输出:9,【上机练习】,6.奥运奖牌计数【1.5编程基础之循环控制06】2008年北京奥运会,A国的运动员参与了n天的决赛项目(1n17)。现在要统计一下A国所获得的金、银、铜牌数目及总奖牌数。输入第1行是A国参与决赛项目的天数n,其后n行,每一行是该国某一天获得的金、银、铜牌数目。输出4个整数,为A国所获得的金、银、铜牌总数及总奖牌数。 输入:输入n1行,第1行是A国参与决赛项目的天数n,其后n行,每一行是该国某一天获得
10、的金、银、铜牌数目,以一个空格分开。 输出:输出1行,包括4个整数,为A国所获得的金、银、铜牌总数及总奖牌数,以一个空格分开。 样例输入:31 0 33 1 00 3 0 样例输出:4 4 3 11,【上机练习】,7.奇数求和【1.5编程基础之循环控制07】计算非负整数m到n(包括m和n)之间的所有奇数的和,其中,m 不大于 n,且n 不大于300。例如 m=3, n=12, 其和则为:3+5+7+9+11=35。 输入:两个数 m 和 n,两个数以一个空格分开,其中 0 = m = n = 300 。 输出:输出一行,包含一个整数,表示m 到 n(包括m 和 n )之间的所有奇数的和 样例输
11、入:7 15 样例输出:55,【上机练习】,8.满足条件的数【1.5编程基础之循环控制08】将正整数m和n之间(包括m和n)能被17整除的数累加,其中0mn1000。 输入:一行,包含两个整数m和n,其间,以一个空格间隔。 输出:输出一行,包行一个整数,表示累加的结果。 样例输入:50 85 样例输出:204,【上机练习】,9.整数的个数【1.5编程基础之循环控制09】给定k(1k100)个正整数,其中每个数都是大于等于1,小于等于10的数。写程序计算给定的k个正整数中,1,5和10出现的次数。 输入:输入有两行:第一行包含一个正整数k,第二行包含k个正整数,每两个正整数用一个空格分开。 输出
12、:输出有三行,第一行为1出现的次数,第二行为5出现的次数,第三行为10出现的次数。 样例输入:51 5 8 10 5 样例输出;121,【上机练习】,10.与指定数字相同的数的个数【1.5编程基础之循环控制10】输出一个整数序列中与指定数字相同的数的个数。输入包含2行:第1行为N和m,表示整数序列的长度(N=100)和指定的数字;第2行为N个整数,整数之间以一个空格分开。输出为N个数中与m相同的数的个数。 输入:第1行为N和m,表示整数序列的长度(N=100)和指定的数字, 中间用一个空格分开;第2行为N个整数,整数之间以一个空格分开。 输出:输出为N个数中与m相同的数的个数。 样例输入:3
13、22 3 2 样例输出:2,【上机练习】,11.乘方计算【1.5编程基础之循环控制11】给出一个整数a和一个正整数n(-1000000=a=1000000,1=n=10000),求乘方an,即乘方结果。最终结果的绝对值不超过1000000。 输入:一行,包含两个整数a和n。-1000000 = a = 1000000,1 = n = 10000。 输出:一个整数,即乘方结果。题目保证最终结果的绝对值不超过1000000。 样例输入:2 3 样例输出:8,【上机练习】,12.人口增长【1.5编程基础之循环控制12】我国现有x亿人口,按照每年0.1%的增长速度,n年后将有多少人?保留小数点后四位。
14、 输入:一行,包含两个整数x和n,分别是人口基数和年数,以单个空格分隔。 输出:输出最后的人口数,以亿为单位,保留到小数点后四位。1 =x= 100, 1=n=100。 样例输入:13 10 样例输出:13.1306,【上机练习】,13.菲波那契数【1.5编程基础之循环控制13】菲波那契数列是指这样的数列: 数列的第一个和第二个数都为1,接下来每个数都等于前面2个数之和。给出一个正整数k,要求菲波那契数列中第k个数是多少。 输入:输入一行,包含一个正整数k。(1 = k = 46) 输出:输出一行,包含一个正整数,表示菲波那契数列中第k个数的大小 样例输入:19 样例输出:4181,【上机练习
15、】,14.鸡尾酒疗法【1.5编程基础之循环控制15】鸡尾酒疗法,指“高效抗逆转录病毒治疗”。人们在鸡尾酒疗法的基础上又提出了很多种改进的疗法。为了验证这些治疗方法是否在疗效上比鸡尾酒疗法更好,可用通过临床对照实验的方式进行。假设鸡尾酒疗法的有效率为x,新疗法的有效率为y,如果y-x大于5%,则效果更好,如果x-y大于5%,则效果更差,否则称为效果差不多。下面给出n组临床对照实验,其中第一组采用鸡尾酒疗法,其他n-1组为各种不同的改进疗法。请写程序判定各种改进疗法效果如何。 输入: 第一行为整数n(1n=20);其余n行每行两个整数,第一个整数是临床实验的总病例数(小于等于10000),第二个疗
16、效有效的病例数。这n行数据中,第一行为鸡尾酒疗法的数据,其余各行为各种改进疗法的数据。 输出:有n-1行输出,分别表示对应改进疗法的效果:如果效果更好,输出better;如果效果更差,输出worse;否则输出same。 样例输入: 样例输出:5 same125 99 worse112 89 better145 99 same99 97123 98,【上机练习】,15.救援【1.5编程基础之循环控制16】救生船从大本营出发,营救若干屋顶上的人回到大本营,屋顶数目以及每个屋顶的坐标和人数都将由输入决定,求出所有人都到达大本营并登陆所用的时间。 在直角坐标系的原点是大本营,救生船每次从大本营出发,救
17、了人之后将人送回大本营。坐标系中的点代表屋顶,每个屋顶由其位置坐标和其上的人数表示。救生船每次从大本营出发,以速度50 米/分钟驶向下一个屋顶,达到一个屋顶后,救下其上的所有人,每人上船1分钟,船原路返回,达到大本营,每人下船0.5分钟。假设原点与任意一个屋顶的连线不穿过其它屋顶。 输入:第一行,一个整数,表示屋顶数n。接下来依次有n 行输入,每一行上包含两个表示屋顶相对于大本营的平面坐标位置的实数(单位是米)、一个表示人数的整数。 输出:救援需要的总时间,精确到分钟(向上取整)。 样例输入:130 40 3 样例输出:7,【上机练习】,16.津津的储蓄计划【1.5编程基础之循环控制19】No
18、ip2012提高组第1题津津的零花钱一直都是自己管理。每个月的月初妈妈给津津300元钱,津津会预算这个月的花销,并且总能做到实际花销和预算的相同。为了让津津学习如何储蓄,妈妈提出,津津可以随时把整百的钱存在她那里,到了年末她会加上20还给津津。因此津津制定了一个储蓄计划:每个月的月初,在得到妈妈给的零花钱后,如果她预计到这个月的月末手中还会有多于100元或恰好100元,她就会把整百的钱存在妈妈那里,剩余的钱留在自己手中。例如11月初津津手中还有83元,妈妈给了津津300元。津津预计11月的花销是180元,那么她就会在妈妈那里存200元,自己留下183元。到了11月月末,津津手中会剩下3元钱。现
19、在请你根据2004年1月到12月每个月津津的预算,判断会不会出现这种情况。如果不会,计算到2004年年末,妈妈将津津平常存的钱加上20还给津津之后,津津手中会有多少钱。 输入:包括12行数据,每行包含一个小于350的非负整数,分别表示1月到12月津津的预算。 输出:只包含一个整数。如果储蓄计划实施过程中出现某个月钱不够用的情况,输出-X,X表示出现这种情况的第一个月;否则输出到2004年年末津津手中会有多少钱。,【上机练习】,样例输入: 样例 #1: 290 230 280 200 300 170 340 50 90 80 200 60 样例输出: 样例 #1: -7 样例 #2: 1580,
20、样例 #2: 290 230 280 200 300 170 330 50 90 80 200 60,【上机练习】,17.药房管理【1.5编程基础之循环控制20】随着信息技术的蓬勃发展,医疗信息化已经成为医院建设中必不可少的一部分。计算机可以很好地辅助医院管理医生信息、病人信息、药品信息等海量数据,使工作人员能够从这些机械的工作中解放出来,将更多精力投入真正的医疗过程中,从而极大地提高了医院整体的工作效率。 对药品的管理是其中的一项重要内容。现在药房的管理员希望使用计算机来帮助他管理。假设对于任意一种药品,每天开始工作时的库存总量已知,并且一天之内不会通过进货的方式增加。每天会有很多病人前来取
21、药,每个病人希望取走不同数量的药品。如果病人需要的数量超过了当时的库存量,药房会拒绝该病人的请求。管理员希望知道每天会有多少病人没有取上药。 输入:共3行,第一行是每天开始时的药品总量m。第二行是这一天取药的人数n(0n=100)。第三行共有n个数,分别记录了每个病人希望取走的药品数量(按照时间先后的顺序)。 输出:只有1行,为这一天没有取上药品的人数。 样例输入:30610 5 20 6 7 8 样例输出:2,【上机练习】,18.正常血压【1.5编程基础之循环控制21】监护室每小时测量一次病人的血压,若收缩压在90-140之间并且舒张压在60-90之间(包含端点值)则称之为正常,现给出某病人
22、若干次测量的血压值,计算病人保持正常血压的最长小时数。 输入:第一行为一个正整数n(n100),其后有n行,每行2个正整数,分别为一次测量的收缩压和舒张压。 输出:输出仅一行,血压连续正常的最长小时数。 样例输入:4100 8090 50120 60140 90 样例输出:2,【上机练习】,19.统计满足条件的4位数【1.5编程基础之循环控制23】给定若干个四位数,求出其中满足以下条件的数的个数:个位数上的数字减去千位数上的数字,再减去百位数上的数字,再减去十位数上的数字的结果大于零。 输入:输入为两行,第一行为四位数的个数n,第二行为n个的四位数。(n=100) 输出:输出为一行,包含一个整
23、数,表示满足条件的四位数的个数。 样例输入:51234 1349 6119 2123 5017 样例输出:3,【上机练习】,20.求分数序列和【1.5编程基础之循环控制29】有一个分数序列 q1/p1,q2/p2,q3/p3,q4/p4,q5/p5, ,其中qi+1= qi+ pi, pi+1=qi, p1= 1, q1= 2。比如这个序列前6项分别是2/1,3/2,5/3,8/5,13/8,21/13。求这个分数序列的前n项之和。 输入:输入有一行,包含一个正整数n(n = 30)。 输出:输出有一行,包含一个浮点数,表示分数序列前n项的和,精确到小数点后4位。 样例输入:2 样例输出:3.
24、5000,【上机练习】,21.计算分数加减表达式的值【1.5编程基础之循环控制30】编写程序,输入n的值,求 1/1 - 1/2 + 1/3 - 1/4 + 1/5 - 1/6 + 1/7 - 1/8 + . + (-1)(n-1)1/n 的值。 输入:输入一个正整数n。1 = n = 1000。 输出:输出一个实数,为表达式的值,保留到小数点后四位。 样例输入:2 样例输出:0.5000,【上机练习】,227647 余数相同问题【小学奥数7647】已知三个正整数a,b,c。现有一个大于1的整数x,将其作为除数分别除a,b,c,得到的余数相同。请问满足上述条件的x的最小值是多少?数据保证x有解
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第四 循环 结构 PPT
