信息学奥赛NOIP第4单元循环结构程序的设计说明【优质PPT】.ppt

上传人:zf 文档编号:30862399 上传时间:2024-05-10 格式:PPT 页数:71 大小:662.50KB
下载 相关 举报
信息学奥赛NOIP第4单元循环结构程序的设计说明【优质PPT】.ppt_第1页
第1页 / 共71页
信息学奥赛NOIP第4单元循环结构程序的设计说明【优质PPT】.ppt_第2页
第2页 / 共71页
信息学奥赛NOIP第4单元循环结构程序的设计说明【优质PPT】.ppt_第3页
第3页 / 共71页
信息学奥赛NOIP第4单元循环结构程序的设计说明【优质PPT】.ppt_第4页
第4页 / 共71页
信息学奥赛NOIP第4单元循环结构程序的设计说明【优质PPT】.ppt_第5页
第5页 / 共71页
点击查看更多>>
下载资源
资源描述

信息学奥赛NOIP第4单元循环结构程序的设计说明【优质PPT】.ppt

《信息学奥赛NOIP第4单元循环结构程序的设计说明【优质PPT】.ppt》由会员分享,可在线阅读,更多相关《信息学奥赛NOIP第4单元循环结构程序的设计说明【优质PPT】.ppt(71页珍藏版)》请在冰豆网上搜索。

信息学奥赛NOIP第4单元循环结构程序的设计说明【优质PPT】.ppt

第第4单元单元循环结构程序设计循环结构程序设计信息学奥赛(信息学奥赛(C+C+)高等教育出版社高等教育出版社信息学奥赛课课通(信息学奥赛课课通(C+)第第1课课while语句语句学习目标学习目标1.理解循环结构的含义。

理解循环结构的含义。

2.熟练掌握熟练掌握while语句的格式和功能。

语句的格式和功能。

3.初步应用初步应用while语句解决一些实际问题。

语句解决一些实际问题。

高等教育出版社高等教育出版社信息学奥赛课课通(信息学奥赛课课通(C+)循环结构循环结构在程序设计中,经常需要反复执行某一条语句或一个在程序设计中,经常需要反复执行某一条语句或一个语句块,这种结构称为语句块,这种结构称为“循环结构循环结构”或者或者“重复结构重复结构”。

其实,计算机最擅长的就是重复做一件事情,所以循环结其实,计算机最擅长的就是重复做一件事情,所以循环结构在程序设计中应用非常广泛。

构在程序设计中应用非常广泛。

在在C+中,循环结构有三种实现语句:

中,循环结构有三种实现语句:

while语句、语句、do-while语句和语句和for语句。

语句。

高等教育出版社高等教育出版社信息学奥赛课课通(信息学奥赛课课通(C+)1.while语句的含义语句的含义其含义为:

先计算表达式(一般称为循环条件)的值,其含义为:

先计算表达式(一般称为循环条件)的值,当表达式的值为真(循环条件成立)时,去执行一次循环当表达式的值为真(循环条件成立)时,去执行一次循环体。

和体。

和if语句不同的是,执行完一次循环体后,语句不同的是,执行完一次循环体后,while语语句又回到开始处,继续计算和判断表达式的真假,决定是句又回到开始处,继续计算和判断表达式的真假,决定是否再次执行循环体。

也就是否再次执行循环体。

也就是“当表达式成立时,不断重复当表达式成立时,不断重复执行循环体执行循环体”,所以又称为,所以又称为“当型循环当型循环”。

while语句的格式如下:

语句的格式如下:

while(表达式)(表达式)循环体循环体高等教育出版社高等教育出版社信息学奥赛课课通(信息学奥赛课课通(C+)2.while语句的应用举例语句的应用举例【问题分析问题分析】设设sum存放答案,初始化为存放答案,初始化为0。

再设。

再设i为循环控制变量,为循环控制变量,初始化为初始化为1。

当循环条件(。

当循环条件(i=100)成立时,反复执行以)成立时,反复执行以下循环体:

下循环体:

(1)将将i累加到和累加到和sum中;中;

(2)将将i取值为下一个数,即取值为下一个数,即i+。

最后,输出最后,输出ans的值。

的值。

例例1、求、求1+2+3+100的值。

的值。

高等教育出版社高等教育出版社信息学奥赛课课通(信息学奥赛课课通(C+)/p4-1-1#includeusingnamespacestd;intmain()inti=1,sum=0;while(i=100)sum+=i+;coutsumendl;return0;高等教育出版社高等教育出版社信息学奥赛课课通(信息学奥赛课课通(C+)例例2、阅读程序,写出程序的运行结果。

、阅读程序,写出程序的运行结果。

/p4-1-2#includeusingnamespacestd;intmain()inti=100,x=0,y=0;while(i0)i-;x=i%8;if(x=1)y+;couty0”,用到,用到i、x和和y这这3个变量,列表如表个变量,列表如表4.1-1。

通过找规律发现,每次通过找规律发现,每次i是是8*x+1时,时,y的值会加的值会加1,也就是,也就是97、89、81、9、1,一,一共共99/8+1=13。

所以,程序最后输出。

所以,程序最后输出y的值为的值为13。

高等教育出版社高等教育出版社信息学奥赛课课通(信息学奥赛课课通(C+)例例3、统计正数、统计正数【问题描述问题描述】输入若干整数,以输入若干整数,以0结尾,统计其中有多少个正整数。

结尾,统计其中有多少个正整数。

【输入格式输入格式】一行若干整数,最后一个为一行若干整数,最后一个为0。

【输出格式输出格式】一行一个整数,表示输入的数据中正整数的个数。

一行一个整数,表示输入的数据中正整数的个数。

【样例输入样例输入】36-320【样例输出样例输出】3高等教育出版社高等教育出版社信息学奥赛课课通(信息学奥赛课课通(C+)【问题分析问题分析】对于本题来说,首先要输入一个整数,当它不为对于本题来说,首先要输入一个整数,当它不为0时,需要反复执行:

时,需要反复执行:

(1)判断该数是否为正数,如果是,则答案累加判断该数是否为正数,如果是,则答案累加1;

(2)输入下一个数,再返回去判断是否为输入下一个数,再返回去判断是否为0。

/p4-1-3#includeusingnamespacestd;intmain()intx,s=0;cinx;while(x!

=0)/也可以简写成也可以简写成while(x)if(x0)s+;cinx;coutsendl;return0;高等教育出版社高等教育出版社信息学奥赛课课通(信息学奥赛课课通(C+)例例4、投资收益、投资收益【问题描述问题描述】小华在去年赚了一大笔钱。

他想把这些钱用于投资,并对自己能得到小华在去年赚了一大笔钱。

他想把这些钱用于投资,并对自己能得到多少收益感到好奇。

多少收益感到好奇。

已知投资的年利率为已知投资的年利率为r(020之间的整数),小华现有之间的整数),小华现有m元钱。

他想元钱。

他想知道投资多少年后,他的钱将会超过知道投资多少年后,他的钱将会超过y元。

元。

【输入格式输入格式】一行三个整数一行三个整数r、m和和y,相邻两个整数之间用一个空格隔开。

,相邻两个整数之间用一个空格隔开。

m为为1001000000之间的整数。

之间的整数。

【输出格式输出格式】一行一个整数,即要投资的年数。

保证答案的范围在一行一个整数,即要投资的年数。

保证答案的范围在1400之间。

之间。

【样例输入样例输入】550006077【样例输出样例输出】4【样例说明样例说明】第一年后:

第一年后:

1.05*5000=5250;第二年后:

第二年后:

1.05*5250=5512.5;第三年后:

第三年后:

1.05*5512.5=5788.125;第四年后:

第四年后:

1.05*5788.125=6077.53125。

高等教育出版社高等教育出版社信息学奥赛课课通(信息学奥赛课课通(C+)【问题分析问题分析】小华手里有小华手里有m元钱,目标是超过元钱,目标是超过y元钱,元钱,k表示答案(初始化为表示答案(初始化为0)。

所)。

所以,当条件以,当条件“m=y”成立时,要反复执行:

成立时,要反复执行:

(1)修改修改m的值,即的值,即m=m*(1+r%););

(2)修改修改k的值,即的值,即k+。

循环结束后,循环结束后,k的值即为所求的答案。

的值即为所求的答案。

/p4-1-4#includeusingnamespacestd;intmain()doubler,m,y;intk=0;cinrmy;while(m=y)m=m*(1+r/100);k=k+1;coutkendl;return0;高等教育出版社高等教育出版社信息学奥赛课课通(信息学奥赛课课通(C+)实践巩固实践巩固高等教育出版社高等教育出版社信息学奥赛课课通(信息学奥赛课课通(C+)第第2课课do-while语句语句学习目标学习目标1.熟练掌握熟练掌握do-while语句的格式和功能。

语句的格式和功能。

2.体会体会do-while语句与语句与while语句的区别。

语句的区别。

3.熟练运用熟练运用do-while语句解决一些实际问题。

语句解决一些实际问题。

高等教育出版社高等教育出版社信息学奥赛课课通(信息学奥赛课课通(C+)do-while语句语句do-while语句是语句是C+中用于解决至少执行一次重复操中用于解决至少执行一次重复操作(循环体)的循环语句。

作(循环体)的循环语句。

高等教育出版社高等教育出版社信息学奥赛课课通(信息学奥赛课课通(C+)1.do-while语句的含义语句的含义do-while语句的格式如下:

语句的格式如下:

do循环体循环体while(表达式)(表达式);其含义为:

先执行一次循环体,其含义为:

先执行一次循环体,然后判断表达式是否成立,如果成然后判断表达式是否成立,如果成立,则返回继续执行循环体,直到立,则返回继续执行循环体,直到表达式不成立,才退出循环。

一般表达式不成立,才退出循环。

一般称之为称之为“直到型循环直到型循环”。

高等教育出版社高等教育出版社信息学奥赛课课通(信息学奥赛课课通(C+)例例1、用、用do-while语句实现输出一行语句实现输出一行10个个“”。

/p4-2-1#includeusingnamespacestd;intmain()inti=1;doprintf(“”);i+;while(i=10);return0;高等教育出版社高等教育出版社信息学奥赛课课通(信息学奥赛课课通(C+)例例2、统计正数、统计正数【问题描述问题描述】用用do-while语句实现:

输入若干整数,以语句实现:

输入若干整数,以0结尾,统计其中结尾,统计其中有多少个正整数。

有多少个正整数。

【输入格式输入格式】一行若干整数,最后一个为一行若干整数,最后一个为0。

【输出格式输出格式】一行一个整数,表示输入的数据中正整数的个数。

一行一个整数,表示输入的数据中正整数的个数。

【样例输入样例输入】36-320【样例输出样例输出】3高等教育出版社高等教育出版社信息学奥赛课课通(信息学奥赛课课通(C+)/p4-2-2#includeusingnamespacestd;intmain()intx,s=0;docinx;if(x0)s+;while(x!

=0);coutsendl;return0;高等教育出版社高等教育出版社信息学奥赛课课通(信息学奥赛课课通(C+)例例3、投资收益、投资收益【问题描述问题描述】小华在去年赚了一大笔钱!

他想把这些钱用于投资,并对自小华在去年赚了一大笔钱!

他想把这些钱用于投资,并对自己能得到多少收益感到好奇。

己能得到多少收益感到好奇。

已知投资的年利率为已知投资的年利率为r(020之间的整数),小华现有之间的整数),小华现有m元元钱。

他想知道投资多少年后,他的钱将会超过钱。

他想知道投资多少年后,他的钱将会超过y元。

要求用元。

要求用do-while语句实现。

语句实现。

【输入格式输入格式】一行三个整数一行三个整数r、m和和y,相邻两个整数之间用一个空格隔开。

,相邻两个整数之间用一个空格隔开。

m为为1001000000之间的整数。

之间的整数。

【输出格式输出格式】一行一个整数,即要投资的年数。

保证答案的范围在一行一个整数,即要投资的年数。

保证答案的范围在1400之间。

之间。

高等教育出版社高等教育出版社信息学奥赛课课通(信息学奥赛课课通(C+)【样例输入样例输入】550006077【样例输出样例输出】4/p4-2-3#includeusingnamespacestd;intmain()doubler,m,y;intk=0;cinrmy;dom=m*(1+r/100);k=k+1;while(m=y)coutkendl;return0;高等教育出版社高等教育出版社信息学奥赛课课通(信息学奥赛课课通(C+)例例4、数字和、数字和【问题描述问题描述】输入一个正整数,输出它的各位数字之和。

输入一个正整数,输出它的各位数字之和。

【输入格式输入格式】一行一个正整数,一行一个正整数,int范围以内。

范围以内。

【输出格式输出格式】一行一个正整数,表示答案。

一行一个正整数,表示答案。

【样例输入样例输入】258【样例输出样例输出】15高等教育出版社高等教育出版社信息学奥赛课课通(信息学奥赛课课通(C+)【问题分析问题分析】求一个正整数的各位数字之和,需要求一个正整数的各位数字之和,需要“分解分解”出它的每一位出它的每一位数字,每次进行累加。

定义累加器数字,每次进行累加。

定义累加器s,初始化为,初始化为0。

对于正整。

对于正整数数n,分解的过程就是从低位到高位,不断求余累加(,分解的过程就是从低位到高位,不断求余累加(s+=n%10)和整除()和整除(n=n/10),直到),直到n等于等于0。

高等教育出版社高等教育出版社信息学奥赛课课通(信息学奥赛课课通(C+)/p4-2-4#includeusingnamespacestd;intmain()intn,s=0;scanf(“%d”,&n);dos+=n%10;n/=10;while(n!

=0);printf(“%dn”,s);return0;高等教育出版社高等教育出版社信息学奥赛课课通(信息学奥赛课课通(C+)实践巩固实践巩固高等教育出版社高等教育出版社信息学奥赛课课通(信息学奥赛课课通(C+)第第3课课for语句语句学习目标学习目标1.熟练掌握熟练掌握for语句的格式、功能和应用场合。

语句的格式、功能和应用场合。

2.学会用学会用for语句改写语句改写while和和do-while语句。

语句。

3.熟练应用熟练应用for语句解决一些实际问题。

语句解决一些实际问题。

高等教育出版社高等教育出版社信息学奥赛课课通(信息学奥赛课课通(C+)for语句语句如果重复执行的操作(循环体)如果重复执行的操作(循环体)次数是固定的、已知的,则一般使次数是固定的、已知的,则一般使用用for语句。

语句。

for语句的格式如下:

语句的格式如下:

for(表达式表达式1;表达式表达式2;表达式表达式3)循环体循环体高等教育出版社高等教育出版社信息学奥赛课课通(信息学奥赛课课通(C+)例例1、用、用for语句实现:

输出一行语句实现:

输出一行10个个“”。

/p4-3-1a#includeusingnamespacestd;intmain()for(inti=1;i=10;i+)printf(“”);printf(“n”);return0;高等教育出版社高等教育出版社信息学奥赛课课通(信息学奥赛课课通(C+)for语句写法灵活,上述程序也可以写成:

语句写法灵活,上述程序也可以写成:

/p4-3-1b#includeusingnamespacestd;intmain()inti=1;for(;i=10;i+)printf(“”);printf(“n”);return0;高等教育出版社高等教育出版社信息学奥赛课课通(信息学奥赛课课通(C+)还可以写成:

还可以写成:

/p4-3-1c#includeusingnamespacestd;intmain()inti=1;for(;i=10;)printf(“n”);i+;printf(“n”);return0;高等教育出版社高等教育出版社信息学奥赛课课通(信息学奥赛课课通(C+)例例2、斐波那契数列、斐波那契数列【问题描述问题描述】斐波那契数列是指这样的数列:

第一个数和第二个数都为斐波那契数列是指这样的数列:

第一个数和第二个数都为1,接下来每,接下来每个数都等于前面两个数之和。

编程输入一个正整数个数都等于前面两个数之和。

编程输入一个正整数k,输出斐波那契数,输出斐波那契数列第列第k个数。

个数。

【输入格式输入格式】一行一个正整数一行一个正整数k,1k46。

【输出格式输出格式】一行一个正整数,表示斐波那契数列第一行一个正整数,表示斐波那契数列第k个数的大小。

个数的大小。

【样例输入样例输入】19【样例输出样例输出】4181【问题分析问题分析】高等教育出版社高等教育出版社信息学奥赛课课通(信息学奥赛课课通(C+)/p4-3-2#includeusingnamespacestd;intmain()intk;cink;intk1=1,k2=1,k3=1;for(inti=3;i=k;i+)k3=k1+k2;k1=k2;/迭代法迭代法k2=k3;coutk3endl;return0;高等教育出版社高等教育出版社信息学奥赛课课通(信息学奥赛课课通(C+)例例3、求平均年龄、求平均年龄【问题描述问题描述】给出一个班级里每名学生的年龄(正整数),求所有学生的平均年龄,给出一个班级里每名学生的年龄(正整数),求所有学生的平均年龄,保留到小数点后两位。

保留到小数点后两位。

【输入格式输入格式】一行一个正整数一行一个正整数n,表示学生的人数,表示学生的人数,1n100。

后面后面n行,每行一个正整数,表示学生的年龄,行,每行一个正整数,表示学生的年龄,15年龄年龄25。

【输出格式输出格式】一行一个浮点数,保留到小数点后两位。

一行一个浮点数,保留到小数点后两位。

【样例输入样例输入】21817【样例输出样例输出】17.50高等教育出版社高等教育出版社信息学奥赛课课通(信息学奥赛课课通(C+)/p4-3-3#includeusingnamespacestd;intmain()intn;floats;scanf(“%d”,&n);for(inti=1;i=n;i+)intx;scanf(%d,&x);s+=x;printf(“%.2fn”,s/n);return0;高等教育出版社高等教育出版社信息学奥赛课课通(信息学奥赛课课通(C+)例例4、整数的个数、整数的个数【问题描述问题描述】给定给定k个正整数,每个数都是大于或等于个正整数,每个数都是大于或等于1,且小于或等于,且小于或等于10。

编程统。

编程统计其中计其中1、5和和10出现的次数。

出现的次数。

【输入格式输入格式】第一行一个正整数第一行一个正整数k;第二行包含第二行包含k个正整数,每两个正整数之间用一个空格隔开。

个正整数,每两个正整数之间用一个空格隔开。

【输出格式输出格式】第一行为第一行为1出现的次数,第二行为出现的次数,第二行为5出现的次数,第三行为出现的次数,第三行为10出现的次出现的次数。

数。

【样例输入样例输入】5158105【样例输出样例输出】121高等教育出版社高等教育出版社信息学奥赛课课通(信息学奥赛课课通(C+)/p4-3-4#includeusingnamespacestd;intmain()intn;ints1=0,s2=0,s3=0;scanf(%d,&n);for(inti=1;i=n;i+)intx;scanf(“%d”,&x);if(x=1)s1+;if(x=5)s2+;if(x=10)s3+;printf(“%dn%dn%dn”,s1,s2,s3);return0;高等教育出版社高等教育出版社信息学奥赛课课通(信息学奥赛课课通(C+)实践巩固实践巩固高等教育出版社高等教育出版社信息学奥赛课课通(信息学奥赛课课通(C+)第第4课课循环嵌套循环嵌套学习目标学习目标1.理解循环嵌套的含义。

理解循环嵌套的含义。

2.熟练应用循环语句及其嵌套解决一些实际问题。

熟练应用循环语句及其嵌套解决一些实际问题。

高等教育出版社高等教育出版社信息学奥赛课课通(信息学奥赛课课通(C+)循环结构的嵌套循环结构的嵌套循环结构与分支结构的嵌套类似,也可以在一个循环循环结构与分支结构的嵌套类似,也可以在一个循环语句的循环体里出现另一个循环语句,不管是语句的循环体里出现另一个循环语句,不管是while语句、语句、do-while语句还是语句还是for语句。

这样的循环结构称为语句。

这样的循环结构称为“循环循环嵌套嵌套”。

高等教育出版社高等教育出版社信息学奥赛课课通(信息学奥赛课课通(C+)例例1、输出矩形、输出矩形【问题描述问题描述】输入输入n和和m,输出一个,输出一个n行行m列的列的“*”矩形图案。

矩形图案。

【输入格式输入格式】一行两个正整数一行两个正整数n和和m,中间用一个空格隔开,中间用一个空格隔开,1n、m100。

【输出格式输出格式】输出一个输出一个n行行m列的列的“*”矩形图案。

矩形图案。

【样例输入样例输入】34【样例输出样例输出】*高等教育出版社高等教育出版社信息学奥赛课课通(信息学奥赛课课通(C+)/p4-4-1#includeusingnamespacestd;intmain()intn,m;scanf(%d%d,&n,&m);for(inti=1;i=n;i+)for(intj=1;j=m;j+)printf(“*”);printf(“n”);return0;【问题分析问题分析】要输出要输出n行,所以可以编写一个外层循环,穷举行。

然后,在循环体里,行,所以可以编写一个外层循环,穷举行。

然后,在循环体里,还要输出还要输出m个个“*”,所以再嵌套一个内层循环,穷举每一行的,所以再嵌套一个内层循环,穷举每一行的“*”个个数。

数。

高等教育出版社高等教育出版社信息学奥赛课课通(信息学奥赛课课通(C+)例例2、数字三角形、数字三角形【问题描述问题描述】输入一个正整数输入一个正整数n,输出,输出n行的数字三角形。

其中,第行的数字三角形。

其中,第1行为数字行为数字1,第第2行为数字行为数字23,第,第3行为数字行为数字456,第,第4行为数字行为数字7890,第,第5行为数行为数字字12345,【输入格式输入格式】一行一个正整数一行一个正整数n,1n100。

【输出格式输出格式】n行的数字三角形。

行的数字三角形。

【样例输入样例输入】4【样例输出样例输出】1234567890高等教育出版社高等教育出版社信息学奥赛课课通(信息学奥赛课课通(C+)/p4-4-2#includeusingnamespacestd;intmain()intn,t=1;scanf(%d,&n);for(inti=1;i=n;i+)for(intj=1;j=i;j+)printf(“%d”,t%10);t+;printf(“n”);return0;高等教育出版社高等教育出版社信息学奥赛课课通(信息学奥赛课课通(C+)例例3、与、与7无关的数无关的数【问题描述问题描述】一个正整数,如果它能被一个正整数,如果它能被7整除,或者它的某一位上的数字整除,或者它的某一位上的数字为为7,则称其为,则称其为“与与7相关相关”的数。

的数。

现在,请编程求出所有小于或等于现在,请编程求出所有小于或等于n的的“与与7无关无关”的正整的正整数个数。

数个数。

【输入格式输入格式】一行一个正整数一行一个正整数n,n106。

【输出格式输出格式】一行一个整数,表示答案。

一行一个整数,表示答案。

【样例输入样例输入】21【样例输出样例输出】17高等教育出版社高等教育出版社信息学奥赛课课通(信息学奥赛课课通(C+)/p4-4-3#includeusingnamespacestd;intmain()intn,ans=0;cinn;for(inti=1;i=n;i+)intflag1=1,flag2=1;if(i%7=0)flag1=0;intx=i;while(x&flag2)if(x%10=7)flag2=0;x=x/10;if(flag1&flag2)ans+;coutansendl;return0;高等教育出版社高等教育出版社信息学奥赛课课通(信息学奥赛课课通(C+)实践巩固实践巩固高等教育出版社高等教育出版社信息学奥赛课课通(信息学奥赛课课通(C+)第第5课课break和和continue语句语句学习目标学习目标1.理解理解break语句和语句和continue语句的作用。

语句的作用。

2

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1