循环结构程序设计培训资料

上传人:W**** 文档编号:150845583 上传时间:2020-11-09 格式:PPTX 页数:35 大小:358.19KB
返回 下载 相关 举报
循环结构程序设计培训资料_第1页
第1页 / 共35页
循环结构程序设计培训资料_第2页
第2页 / 共35页
循环结构程序设计培训资料_第3页
第3页 / 共35页
循环结构程序设计培训资料_第4页
第4页 / 共35页
循环结构程序设计培训资料_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《循环结构程序设计培训资料》由会员分享,可在线阅读,更多相关《循环结构程序设计培训资料(35页珍藏版)》请在金锄头文库上搜索。

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

2、入结束。 输出要求:占4行,第一行表示学生人数n,第二行表示最高分,第三行表示最低分,第四行表示平均分,其中只有平均分是小数(只保留一位小数),其余为整数 输入实例:1 50 90 87 67 84 99 56 74 82 94 -1 输出实例:10 100 50 78.3,4,回文数,问题描述:输入一个整数,判断一个该数是否为回文数。 输入要求:输入一系列的整数n,n100000000 输出要求:如果是回文数输出Yes,如果不是回文数输出No 输入样例:1234 121 -12321 100 输出样例:No Yes Yes No,5,6,素数因子,问题描述:输入一个整数,输出它的所有素数因子

3、 输入要求:输入一系列的整数(0,1,-1除外),每行一个 输出要求:输出所有的素数因子,每个因子之间用1个空格分开,最后一个因子后面没有空格 输入样例: 8 30 125 输出样例:2 2 2 2 3 5 5 5 5,7,#include using namespace std; int main() int m,k=2; cinm; if(m0) cout-; m=-m; while(km) if(m%k=0) coutk ; m=m/k; else k+; coutmendl; return 0; ,8,6174数字黑洞,问题描述:任意一个每位数字不完全相同的4位正整数,将各位上数字重新

4、组合成一个最大数和一个最小数相减,重复这个过程,必定得到6174。 输入要求:输入一系列的4位正整数,占一行。 输出要求:占一行,最终得到6174的变换次数。 输入样例:1234 1000 6174 输出样例:3 5 0,9,爱因斯坦走楼梯:有一条长阶梯,若每步跨2阶,则最后剩1阶;若每步跨3阶,则最后剩2阶;若每步跨5阶,则最后剩4阶;若每步跨6阶,则最后剩5阶;若每步跨7阶,则最后正好一阶不剩;问该楼梯最少有多少阶?,10,#include using namespace std; int main() int n=7; while(n%2!=1)|(n%3!=2)|(n%5!=4)|(n

5、%6!=5) n=n+7; coutnendl; return 0; ,11,#include using namespace std; int main() int n=7; while(!(n%2=1) ,12,do while 循环语句,格式: do 语句序列 while(表达式);,13,最大公约数和最小公倍数,问题描述:从键盘上输入两个整数,求它们的最大公约数和最小公倍数。 输入要求:每行输入两个整数,每个整数之间用一个空格分开。 输出要求:第一行输出最大公约数,第二行输出最小公倍数 输入样例:3 6 24 13 输出样例:3 6 1 312,14,15,问题描述:计算与正整数n相等

6、的二进制代码中有1和0的个数。 输入要求:输入一些正整数,每个占一行 输出要求:占两行,第一行是1的个数,第二行是0的个数。 输入样例:8 93 输出样例:1 3 5 2,16,Cantor表,问题描述:现代数学的著名证明之一是Georg Cantor证明了有理数是可以枚举的。他利用下面一张表来证明这一命题: 1/1 1/2 1/3 1/4 1/5 2/1 2/2 2/3 2/4 3/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、:7样例输出:1/4,17,#include using namespace std; int main() int n,i,j; cinn; i=0;/斜线序号 j=n;/第n项在某行的位置 do i+; j=j-i; while(j0); j=j+i; if(i%2=0) coutj/i+1-jendl; else couti+1-j/jendl; return 0; ,18,角谷猜想,问题描述:定义这样一个整数函数f(n),当n是偶数时,f(n)=n/2;当n是奇数时,f(n)=(3n+1)/2。这个猜想是说:对于任意的整数n,计算f(n),f(f(n),f(f(f(n),.,若干步之后

8、,总会得到1。对于给定的n,求出数字序列中第一次出现1的步数。 输入要求:输入一些正整数n,每个正整数占一行。 输出要求:占一行,输出对应n得到1的步数。 输入样例:5 10 输出样例:4 5,19,while语句和dowhile语句 比较 while语句是先判断后执行,只要不满足条件,循环体语句根本不会执行 dowhile语句是先执行后判断,不管条件是否满足,循环体语句总会执行一次,#include using namespace std; int main() int i,sum=0; cini; while(i=10) sum+=i; i+; coutsumendl; return 0;

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

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

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

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

13、/bendl; else couta/bendl; return 0; ,29,循环语句的嵌套,循环语句的嵌套:一个循环语句的循环体中又包含循环语句,while() while() . ,do do while( ); . while( );,while() do while( ); . ,for( ; ;) do while(); while() . ,三种循环可互相嵌套,层数不限。 外层循环可包含两个以上内循环,但不能相互交叉。 嵌套循环的执行流程:外层循环执行一次,内层循环要执行完。 嵌套循环的跳转:只能跳转出本层循环。 禁止从外层跳入内层、禁止跳入同层的另一循环和向上跳转。,30,哥德

14、巴赫猜想,问题描述:哥德巴赫猜想被称为数学上的皇冠,至今都没有被证明,其主要描述的是:任一充分大(大于4)的偶数,可以用两个素数之和表示 。 输入要求:输入一些偶数(4),每个数占一行。 输出要求:占一行,两个素数的和。 输入样例:4 20 输出样例:2+2 3+17,31,32,#include #include #include using namespace std; int main() int i,p,q,n,p_flag,q_flag; while(cinn) if(n%2=1)|n4) /cout数据输入出错n”; exit(0); p=1; do, p=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; ,33,绝对素数,问题描述:如果一个正整数是素数,它的反位数也是素数,这称这样的数为绝对素数。 输入要求:输入一些正整数n,每个占一行 输出要求:占一行,输出1到n之间名绝对素数的个数。 输入样例:10 20 输出样例:

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 教育/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号