循环结构与(C++版) .ppt
文本预览下载声明
第四章 循环结构 第一节 for语句 第一节 for语句 二、语句执行过程 for语句的执行过程可由以下4步来描述。 (1)执行“控制变量初始化语句”,使控制变量获得一个初值。 (2)判断控制变量是否满足“条件表达式”,若满足条件则执行一遍循环体,否则结束整个for语句,继续执行for循环下面的句子。 (3)根据增量表达式,计算出控制变量所得到的新值 (4)自动转到第(2)步。 第一节 for语句 第一节 for语句 第一节 for语句 第一节 for语句 【上机练习4.1】 1、求12+22+32+…+1002 2、求s=1+1/2+1/3+…+1/100 3、计算100之内所有的奇数之和。 4、求10个数中的最大值和最小值。 5、按字母表的顺序,从字母A到Z顺序打印输出。 6、求菲波拉契数列a0,a1,a2,……a20。 a0=0,a1=1,a2=a1+a0,a3=a2+a1,……,an=an-1+an-2; 如0,1,1,2,3,5,8,13,21,…… 第二节 while语句 第二节 while语句 第二节 while语句 第二节 while语句 第二节 while语句 第二节 while语句 第二节 while语句 【优化程序】 #includecstdio #define INF 100000000 int main() { int x,n=0,min=INF,max=-INF,s=0; while (scanf(%d,x)==1) //scanf(%d,x)!=EOF,如果没数据可读,scanf返回EOF { s+=x; if (xmin) min=x; if (xmax) max=x; ++n; } printf(%d %d %.3lf\n,min,max,(double)s/n); return 0; } 第二节 while语句 【上机练习4.2】 1、用while循环完成如下3题: ①求s=1+2+3+4+…+10 ②求s=1+1/2+1/3+…+1/100 ③计算n!,其中n由键盘输入。 2、输入任意的自然数A,?B,?求A?,?B的最小公倍数。 3、小球从100高处自由落下,着地后又弹回高度的一半再落下。求第20次着地时,?小球共通过多少路程? 4、Faibonacci数列前几项为:?0,1,1,2,3,5,8,…,其规律是从第三项起,?每项均等于前两项之和。求前30项,并以每行5个数的格式输出。 第三节 do-while语句 第三节 do-while语句 第三节 do-while语句 第三节 do-while语句 【上机练习4.3】 第四节 循环嵌套 第四节 循环嵌套 第四节 循环嵌套 第四节 循环嵌套 第四节 循环嵌套 第四节 循环嵌套 第四节 循环嵌套 第四节 循环嵌套 第四节 循环嵌套 第四节 循环嵌套 【上机练习4.4】 例4.17 输出所有形如aabb的四位完全平方数(即前两位数字相等,后两位数字也相等)。 【分析】 分支和循环结合在一起时威力特别强大:我们枚举所有可能的aabb,然后判断它们是否为完全平方数。注意,a的范围是1~9,b可以是0。主程序如下: for (a=1; a=9; a++) for (b=0; b=9; b++) if (aabb是完全平方数) printf(%d\n,aabb); 另一个思路是枚举平方根x,参考程序如下: #includecstdio int main() { int n=0,hi,lo; for (int x=1 ; ; ++x) //可以直接从x=32开始枚举 { n=x*x; if (n1000) continue; if (n9999) break; hi = n/100; lo = n%100; if (hi/10 == hi%10 lo/10 == lo%10) printf(%d\n,n); } return 0; } 例4.18 阶乘之和 输入n,计算S=1! + 2! + 3! + … + n!的末6位(不含前导0)。n=106, n!表示前n个正整数之积。 样例输入:10 样例输出:37913 【分析】 这个任务并不难,引入累加变量S之后,核心算法只有一句话:for (i=1;i=n;i++) S+=i!。不过C++语言并没有阶乘运算符,所以这句话只是伪代码,而不是
显示全部