《循环结构程序设计》课件_第1页
《循环结构程序设计》课件_第2页
《循环结构程序设计》课件_第3页
《循环结构程序设计》课件_第4页
《循环结构程序设计》课件_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、循环结构程序设计PPT课件循环结构程序设计PPT课件循环的定义反复执行相同的语句序列循环的定义反复执行相同的语句序列while循环格式:while(表达式)语句序列语句序列称为循环体,当为一条语句时,表示复合语句的可以省略。表达式可以为任何类型先判断,后执行,若条件不成立,有可能一次也不执行。语句序列中必须有改变while后面括号的表达式值的语句,否则有可能死循环。while循环格式:语句序列称为循环体,当为一条语句时,表示问题描述:笑笑作为数学课代表,每次考试后,数学老师都会让他统计成绩,老师并不关心具体某个人的成绩,而只关心参加考试的人数、平均成绩、最低分和最高分。输入要求:第1行输入T,

2、表示组数,第二行输入一些 整数,表示学生的成绩,每个数之间用一个空格分开,-1表示输入结束。输出要求:占4行,第一行表示学生人数n,第二行表示最高分,第三行表示最低分,第四行表示平均分,其中只有平均分是小数(只保留一位小数),其余为整数 输入实例:1 50 90 87 67 84 99 56 74 82 94 -1输出实例:10 100 50 78.3问题描述:笑笑作为数学课代表,每次考试后,数学老师都会让他统回文数问题描述:输入一个整数,判断一个该数是否为回文数。输入要求:输入一系列的整数n,n100000000输出要求:如果是回文数输出Yes,如果不是回文数输出No输入样例:1234 12

3、1 -12321 100输出样例:No Yes Yes No 回文数问题描述:输入一个整数,判断一个该数是否为回文数。循环结构程序设计PPT课件素数因子问题描述:输入一个整数,输出它的所有素数因子输入要求:输入一系列的整数(0,1,-1除外),每行一个输出要求:输出所有的素数因子,每个因子之间用1个空格分开,最后一个因子后面没有空格输入样例: 8 30 125输出样例:2 2 2 2 3 5 5 5 5素数因子问题描述:输入一个整数,输出它的所有素数因子#includeusing namespace std;int main()int m,k=2;cinm;if(m0)cout-;m=-m;w

4、hile(km)if(m%k=0)coutk ;m=m/k;elsek+;coutmendl;return 0;#include6174数字黑洞问题描述:任意一个每位数字不完全相同的4位正整数,将各位上数字重新组合成一个最大数和一个最小数相减,重复这个过程,必定得到6174。输入要求:输入一系列的4位正整数,占一行。输出要求:占一行,最终得到6174的变换次数。输入样例:1234 1000 6174输出样例:3 5 06174数字黑洞问题描述:任意一个每位数字不完全相同的4位正爱因斯坦走楼梯:有一条长阶梯,若每步跨2阶,则最后剩1阶;若每步跨3阶,则最后剩2阶;若每步跨5阶,则最后剩4阶;若每

5、步跨6阶,则最后剩5阶;若每步跨7阶,则最后正好一阶不剩;问该楼梯最少有多少阶?爱因斯坦走楼梯:有一条长阶梯,若每步跨2阶,则最后剩1阶;若#includeusing namespace std;int main()int n=7;while(n%2!=1)|(n%3!=2)|(n%5!=4)|(n%6!=5) n=n+7;coutnendl;return 0;#include#includeusing namespace std;int main()int n=7;while(!(n%2=1)&(n%3=2)&(n%5=4)&(n%6=5) n=n+7;coutnendl;return 0;

6、#includedo while 循环语句格式:do语句序列 while(表达式);do while 循环语句格式:最大公约数和最小公倍数问题描述:从键盘上输入两个整数,求它们的最大公约数和最小公倍数。输入要求:每行输入两个整数,每个整数之间用一个空格分开。输出要求:第一行输出最大公约数,第二行输出最小公倍数输入样例:3 6 24 13输出样例:3 6 1 312最大公约数和最小公倍数问题描述:从键盘上输入两个整数,求它们循环结构程序设计PPT课件问题描述:计算与正整数n相等的二进制代码中有1和0的个数。输入要求:输入一些正整数,每个占一行输出要求:占两行,第一行是1的个数,第二行是0的个数。

7、输入样例:8 93输出样例:1 3 5 2问题描述:计算与正整数n相等的二进制代码中有1和0的个数。Cantor表问题描述:现代数学的著名证明之一是Georg Cantor证明了有理数是可以枚举的。他利用下面一张表来证明这一命题:1/1 1/2 1/3 1/4 1/5 2/1 2/2 2/3 2/43/1 3/2 3/3 4/1 4/2 5/1 我们以Z字型给上表每一项编号 。第1项是1/1 ,然后第2项是1/2,2/1,3/1,2/2.输入描述:整数N(1N10000000)输出描述:表中的第N项 样例输入:7样例输出:1/4Cantor表问题描述:现代数学的著名证明之一是Georg #in

8、cludeusing namespace std;int main()int n,i,j;cinn;i=0;/斜线序号j=n;/第n项在某行的位置doi+;j=j-i;while(j0);j=j+i;if(i%2=0) coutj/i+1-jendl;else couti+1-j/jendl;return 0;#include角谷猜想问题描述:定义这样一个整数函数f(n),当n是偶数时,f(n)=n/2;当n是奇数时,f(n)=(3n+1)/2。这个猜想是说:对于任意的整数n,计算f(n),f(f(n),f(f(f(n),.,若干步之后,总会得到1。对于给定的n,求出数字序列中第一次出现1的步

9、数。输入要求:输入一些正整数n,每个正整数占一行。输出要求:占一行,输出对应n得到1的步数。输入样例:5 10输出样例:4 5角谷猜想问题描述:定义这样一个整数函数f(n),当n是偶数时while语句和dowhile语句 比较while语句是先判断后执行,只要不满足条件,循环体语句根本不会执行 dowhile语句是先执行后判断,不管条件是否满足,循环体语句总会执行一次 #include using namespace std;int main() int i,sum=0; cini; while(i=10) sum+=i;i+; coutsumendl; return 0;#include u

10、sing namespace std;int main() int i,sum=0; cini; do sum+=i; i+; while(i=10); coutsumendl; return 0;while语句和dowhile语句 比较#include for循环语句格式:for (;) 语句序列语句序列称为循环体。当语句序列只有单条语句,表示复合语句的可以省略。表达式1一般为赋值表达式,给控制变量赋初值;如果省略表达式1,这时for语句为如表达式2一般为关系表达式或逻辑表达式,称为循环控制条件表达式3一般为赋值表达式,给控制变量增量或减量for(;)。 for循环语句格式:转移语句cont

11、inue语句形式:continue;功能:结束本次循环,开始下一次循环continue只能用在循环结构中,而不能用于其它控制结构 转移语句continue语句#includeusing namespace std;int main() int k; for(k=100;k=200;k+) if(k%3=0) continue;coutk“ “; return 0;#includebreak语句 格式:break;功能:跳出switch结构或结束本层循环。说明:break语句只能用于switch或循环结构中 break语句 #includeusing namespace std;#define

12、PI 3.1415926int main() int r; double area; for(r=1;r100.0) break;coutareaendl; return 0;#include阶乘之和问题描述:求非负整数的阶乘之和输入要求:输入一个非负整数n(n13),占一行输出要求:占一行,阶乘的和输入样例:0 5 12输出样例:1 154 522956314 阶乘之和问题描述:求非负整数的阶乘之和#include#includeusing namespace std;int main() int i,sum,p,n; while(cinn) sum=0; p=1;if(n0) exit(0

13、); for(i=1;i=n;i+) p=p*i;sum=sum+p; coutsum+1endl; return 0;#include分数数列问题描述:已知分数数列 2/1,-3/2,5/3,-8/5, 对于输入的正整数n,输出对应项的分数。输入要求:输入一些 正整数n(n50),分别占一行。输出要求:占一行,表示分数数列中的对应项。输入样例:3 26输出样例:5/3 -317811/196418 分数数列问题描述:已知分数数列 2/1,-3/2,5/3,#includeusing namespace std;int main()int a=2,b=1,i;int n;cinn;for(i=

14、2;i=n;i+)a=a+b;b=a-b;if(n%2=0) cout-1*a/bendl;else couta/bendl;return 0;#include循环语句的嵌套循环语句的嵌套:一个循环语句的循环体中又包含循环语句while() while() . do do while( ); .while( );while() do while( ); . for( ; ;) do while(); while() .三种循环可互相嵌套,层数不限。外层循环可包含两个以上内循环,但不能相互交叉。嵌套循环的执行流程:外层循环执行一次,内层循环要执行完。嵌套循环的跳转:只能跳转出本层循环。禁止从外层

15、跳入内层、禁止跳入同层的另一循环和向上跳转。循环语句的嵌套循环语句的嵌套:一个循环语句的循环体中又包含循哥德巴赫猜想问题描述:哥德巴赫猜想被称为数学上的皇冠,至今都没有被证明,其主要描述的是:任一充分大(大于4)的偶数,可以用两个素数之和表示 。输入要求:输入一些偶数(4),每个数占一行。输出要求:占一行,两个素数的和。输入样例:4 20输出样例:2+2 3+17哥德巴赫猜想问题描述:哥德巴赫猜想被称为数学上的皇冠,至今都循环结构程序设计PPT课件#include#include#includeusing namespace std;int main()int i,p,q,n,p_flag,q

16、_flag;while(cinn)if(n%2=1)|n4) /cout数据输入出错n”; exit(0);p=1;dop=p+1;q=n-p;p_flag=1;for(i=2;i=sqrt(p);i+) if(p%i=0) p_flag=0;break; q_flag=1; if(p_flag=1)for(i=2;i=sqrt(q);i+) if(q%i=0) q_flag=0; break; while(p_flag*q_flag=0);coutp+qendl;return 0;#include绝对素数问题描述:如果一个正整数是素数,它的反位数也是素数,这称这样的数为绝对素数。输入要求:输入一些正整数n,每个占一行输出要求:占一行,输出1到n之间名绝对素数的个数。输入样例:10 20输出样例: 4 7绝对素数问题描述:如果一个正整数是素数,它的反位数也是素数,#include#includeusing namespace std;int main() int i,j,k,m,flag1=0,flag2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论