版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、35 例: : max = a ; if ( b a) max = b ; cout max = max a) max = b ; cout max = max a) max = b ; cout max = max a max=b3.7.1 i语句的简单(jindn)形式第3页/共106页第三页,共107页。355 max = 5输出 例: : max = a ; if ( b a) max = b ; cout max = max a ) max = b ; else max = a ; cout max = max a ) max = b ; else max = a ; cout ma
2、x = max a max=bmax=a3.7.1 i语句(yj)的简单形式第7页/共106页第七页,共107页。n if 语句(yj)中的执行语句(yj)如果又是另一个if语句(yj),称为嵌套if语句(yj)n 如:3.7.2 i语句(yj)的嵌套if ( 表达式表达式1 ) 语句语句(yj)1;else if (表达式表达式2) 语句语句(yj)2;else 语句语句(yj)3;false (0) 表达式 1 语 句1 表达式 2 语 句2false (0)语 句3第8页/共106页第八页,共107页。例 编写程序计算货物运费。设货物运费每吨单价 p p(元)与运输距离(jl) s(jl
3、) s(公里)之间有如下关系:400204003005 .22300200252001005 .2710030sssssp p = =输入要托运的货物重量为输入要托运的货物重量为 w 吨,托运距离吨,托运距离 s 公里公里(n l),计算总运费,计算总运费 t : t = p * w * s3.7.2 i语句(yj)的嵌套第9页/共106页第九页,共107页。控制流图truefalsetruetruetruefalsefalsefalseS 100?S 100?S 200?S 200?S 300?S 300?S 400?S 400?P = 30P = 30P = 20P = 20P = 22.
4、5P = 22.5P = 25P = 25P = 27.5P = 27.5t = p t = p * * w w * * s s3.7.2 i语句(yj)的嵌套400204003005 .22300200252001005 .2710030sssssp p = =第10页/共106页第十页,共107页。truefalsetruetruetruefalsefalsefalseS 100?S 100?S 200?S 200?S 300?S 300?S 400?S 400?P = 30P = 30P = 20P = 20P = 22.5P = 22.5P = 25P = 25P = 27.5P =
5、27.5t = p t = p * * w w * * s s #include /使用(shyng)I/O流控制符要包含头文件iomanip#include int main() double t , p , w , s ; cout w ; cout s ; if ( s 100 ) p = 30 ; else if ( s 200 ) p = 27.5 ; else if ( s 300 ) p = 25 ; else if ( s 400 ) p = 22.5 ; else p = 20 ; t = p * w * s ; cout The cost is: setprecision(
6、2) t $ endl ; return 0;计算(j sun)货物运费第11页/共106页第十一页,共107页。# include using namespace std;int main() int a, b, c, t ; cout a b c ; if ( a b ) t = a ; a = b ; b = t ; /a b if ( a c ) t = a ; a = c ; c = t ; /a c if ( b c ) t = b ; b = c ; c = t ; /b c cout a b c endl; return 0;例:输入(shr)三个整数,按从小到大顺序输出第12
7、页/共106页第十二页,共107页。if ( E1 ) if ( E2 ) S1 else S2if ( E1 ) if ( E2 ) S1 else S2分析分析 S1 和和 S2 的执行的执行(zhxng)条件:条件:E1 & E2执行执行(zhxng) S1E1 & ! E2 执行执行(zhxng) S2E1 & E2 执行执行(zhxng) S1 ! E1 执行执行(zhxng) S2注意括号注意括号的作用的作用3.7.2 i语句的嵌套第13页/共106页第十三页,共107页。应用(yngyng)举例 例例3.7 把输入字符转换为小写字母把输入字符转换为小写字母
8、: 对输入字符进行判断,对输入字符进行判断,如果如果(rgu)是大写字母,则转换为小写字母;否则,不转换。是大写字母,则转换为小写字母;否则,不转换。 #include using namespace std;int main( ) char ch; cout ch ; if ( ch = A & ch = Z ) ch += 32 ; cout ch 0 时时,有两个有两个(lin )不不同的实根:同的实根:iabacabx24222, 1 当当 b2- 4ac 0?b-4ac0?不是二次方程有两个不同实根有两个相同实根有两个共轭复根 求一元二次方程ax2 + bx + c = 0的
9、根。 第16页/共106页第十六页,共107页。#include #include using namespace std;int main( ) double a, b, c, d, x1, x2, rp, ip ; cout a b c ; if ( fabs( a ) = 1e-8 ) cout It is not quadratic. endl ; else d = b * b - 4 * a * c ; if ( fabs( d ) = 1e-8 ) cout It has two equal real roots: -b / ( 2*a ) 1e-8 ) x1 = ( -b + s
10、qrt( d ) ) / ( 2*a ) ; x2 = ( -b - sqrt( d ) ) / ( 2*a ) ; cout It has two distinct real roots: x1 and x2endl ; else rp = -b / ( 2*a ) ; ip = sqrt( -d ) / ( 2*a ) ;cout It has two complex roots: endl ;cout rp + ip i endl ;cout rp - ip i endl ; return 0;a, b, c = 0 2 1It is not quadratic.a, b, c = 1
11、2 1It has two equal real roots: -1a, b, c = 1 5 1It has two distinct real roots: -0.208712 and 4.791288a, b, c = 2 3 4It has two complex roots: -0.75 + 1.198958i-0.75 - 1.198958i 求一元二次方程求一元二次方程ax2 + bx + c = 0的根的根第17页/共106页第十七页,共107页。= 与与 = 的区别的区别(qbi)int x = 9;if ( x = 0 ) cout “test 1 okn” ;if ( x
12、 = 5 ) cout “test 2 okn” ;if ( x = 0 ) cout “test 3 okn” ;结果(ji gu)为: test 2 ok第18页/共106页第十八页,共107页。注意关系运算符的正确注意关系运算符的正确(zhngqu)使用使用n !=是操作符,是操作符,=!不是不是(b shi)操作符操作符n int x = 3;n if ( x!=9 ) cout “not 9n” ;n if ( x=!9 ) cout “impossiblen” ;n 条件表达式条件表达式(x!=0)与与 (x) 等同等同n int x = 3;n if ( x != 0 ) cou
13、t x ; n if ( x ) cout x ;结果(ji gu):not 9结果:3 3第19页/共106页第十九页,共107页。不等式连写不等式连写(linxi)的错误的错误 int a = -1, b = 0, c = 1; if ( abc ) cout “ok1n” ; if ( ab & bc ) cout 0) if (x50) cout”x is ok.n”; else cout0) if (x 50) cout”OKn”; else cout0) if (x 50) cout”OKn”; else cout”NOT OKn”;if 错综复杂时,必须错综复杂时,必须(
14、bx)注意两义性注意两义性第21页/共106页第二十一页,共107页。if(x10)cout*endl;elsecout#endl;cout$endl;/思考(sko)x=9, y=11; /x=11,y=9第22页/共106页第二十二页,共107页。1.以下程序输出以下程序输出(shch)结果为结果为( ) int main()int a,b,c,d,x; a=c=0;b=x=1;d=20; if(a) d=d-10; else if(!b)if(!c) x=15;else x=25; cout“nx=“x“d=“d; return 0; 练习(linx) 第23页/共106页第二十三页,共
15、107页。一般一般(ybn)形式形式 : switch ( 表达式表达式 ) case 常量表达式常量表达式 1 : 语句语句 1 case 常量表达式常量表达式 2 : 语句语句 2 case 常量表达式常量表达式 n : 语句语句 n default : 语句语句 n+1 注:注: 表达式类型为非浮表达式类型为非浮点型点型 各常量表达式类型各常量表达式类型要与之匹配要与之匹配 各常量表达式要求各常量表达式要求各不相等各不相等 default 子句可选。子句可选。缺省时,没有缺省时,没有(mi yu)匹配值匹配值 switch 语句为空语句为空语句(yj)标号3.9 多分支选择结构和swit
16、ch 语句第24页/共106页第二十四页,共107页。p根据一个结果是整型或者字符表达式的值决定程序(chngx)分支 表达式 语句 1 语句 2 语句 3 语句 n 语句n+1 = =常量常量1 1= =常量常量2 2= =常量常量3 3= =常量常量n ndefault3.9 多分支选择(xunz)结构和switch 语句 switch ( 表达式表达式 ) case 常量表达式常量表达式 1 : 语句语句 1 case 常量表达式常量表达式 2 : 语句语句 2 case 常量表达式常量表达式 n : 语句语句 n default : 语句语句 n+1 第25页/共106页第二十五页,共
17、107页。例例 根据考试成绩的等级根据考试成绩的等级(dngj)(dngj)打印出百分制分数段。打印出百分制分数段。# include int main () char grade ; cout Input grade of score (a_d) : grade ; switch ( grade ) case a : cout 85_100 n ; case b : cout 70_84 n ; case c : cout 60_69 n ; case d : cout 60 n ; default : cout error n ; 观察不同输入(shr)时的输出结果3.9 多分支选择(xu
18、nz)结构和switch 语句第26页/共106页第二十六页,共107页。# include int main () char grade ; cout Input grade of score (a_d) : grade ; switch ( grade ) case a : cout 85_100 n ; case b : cout 70_84 n ; case c : cout 60_69 n ; case d : cout 60 n ; default : cout error n ; 例例 根据根据(gnj)(gnj)考试成绩的等级打印出百分制分数段。考试成绩的等级打印出百分制分数段
19、。跳出(tio ch)switch语句break ;break ;break ;break ;3.9 多分支选择结构(jigu)和switch 语句第27页/共106页第二十七页,共107页。break ;break ;break ;break ;输入输入a输出输出85_100输入输入d输出输出60# include int main () char grade ; cout Input grade of score (a_d) : grade ; switch ( grade ) case a : cout 85_100 n ; case b : cout 70_84 n ; case c
20、: cout 60_69 n ; case d : cout 60 n ; default : cout error n ; 例例 根据考试成绩的等级根据考试成绩的等级(dngj)(dngj)打印出百分制分数段。打印出百分制分数段。3.9 多分支选择(xunz)结构和switch 语句第28页/共106页第二十八页,共107页。讨论: 根据整型表达式的值决定程序分支csae 和 default 仅起语句标号作用,不能控制程序流程一旦选中一个(y )case分支后,将继续往下顺序执行语句序列添加 break 语句可以跳出 switch 语句体,达到控制流程作用根据根据(gnj)以上特点,以上特点
21、,可以写出多个可以写出多个 case 共执行一个语句的形共执行一个语句的形式式3.9 多分支选择结构(jigu)和switch 语句 switch ( 表达式表达式 ) case 常量表达式常量表达式 1 : 语句语句 1 case 常量表达式常量表达式 2 : 语句语句 2 case 常量表达式常量表达式 n : 语句语句 n default : 语句语句 n+1 第29页/共106页第二十九页,共107页。p添加添加 break 语句语句(yj)可以跳出可以跳出 switch 语句语句(yj)体,达到控制流程作用体,达到控制流程作用3.9 多分支选择结构(jigu)和switch 语句 s
22、witch ( 表达式表达式 ) case 常量常量 1 : 语句语句 1;break; case 常量常量 2 : 语句语句 2;break; case 常量常量 n : 语句语句 n; break; default : 语句语句 n+1 表达式 语句 1 语句 2 语句 3 语句 n 语句n+1 = =常量常量1 1= =常量常量2 2= =常量常量3 3= =常量常量n ndefaultbreak break break break第30页/共106页第三十页,共107页。例例 :根据考试成绩的等级打印出百分制分数根据考试成绩的等级打印出百分制分数(fnsh),允许输入大写或小写字母。允
23、许输入大写或小写字母。# include int main () char grade ; cout Input grade of score (a_d or A_D) : grade ; switch ( grade ) case : case : cout 85_100 n ; break ; case : case : cout 70_84 n ; break ; case : case : cout 60_69 n ; break ; case : case : cout 60 n ; break ; default : cout b) ) case 1 : max = a ; bre
24、ak ; case 0 : max = b ;if ( a b) max = a ;else max = b ; 第32页/共106页第三十二页,共107页。例例3.9 运输公司对用户计算运输公司对用户计算(j sun)运费运费路程(lchng)(s)越远,每公里运费越低。标准如下: s250km 没有折扣 250s500 2折扣 500s1000 5折扣 1000s2000 8折扣 2000s3000 10折扣 3000s 15折扣设每公里每吨货物的基本运费为p,货物重为w,距离为,折扣为d,则总运费f的计算公式为 f = p * w * s * (1 - d)第33页/共106页第三十三页
25、,共107页。例例3.9 运输公司运输公司(n s)对用户计算运费对用户计算运费n用if语句(yj)实现n#include nusing namespace std;nint main( )nint s;n float p,w,d,f;n coutpws;n if (s250) d=0;n else if (s500) d=2;n else if (s1000) d=5;n else if (s2000) d=8n else if (s3000) d=10;n else d=15;n f=p*w*s*(1-d/100.0);n coutfreight=f=3000) c=12; else c=
26、s/250; switch (c) case 0:d=0;break; case 1:d=2;break; case 2: case 3:d=5;break; case 4: case 5: case 6: case 7: d=8;break; case 8: case 9: case 10: case 11:d=10;break; case 12:d=15;break; 例3.9 运输公司对用户(yngh)计算运费折扣折扣折扣折扣折扣没有折扣%153000%1000302000%800201000%50010500%2500250250ssssss第35页/共106页第三十五页,共107页。
27、36算法的基本(jbn)(jbn)控制结构特殊的多分支结构例输入(shr)一个06的整数,转换成星期输出。第36页/共106页第三十六页,共107页。# #include include using namespace std;using namespace std;int main()int main() int day;int day;cin day;cin day;switch (day)switch (day) case 0:case 0: coutSundayendl;coutSundayendl; break;break; case 1:case 1: coutMondayendl
28、;coutMondayendl; break;break; case 2:case 2: coutTuesdayendl;coutTuesdayendl; break;break; case 3: coutWednesdayendl;case 3: coutWednesdayendl; break;break; case 4:case 4: coutThursdayendl;coutThursdayendl; break;break; case 5:case 5: coutFridayendl;coutFridayendl; break;break; case 6:case 6: coutSa
29、turdayendl;coutSaturdayendl; break;break; default:default: coutDay out of range Sunday . coutDay out of range Sunday . SaturdaySaturday endl;endl; break;break; 37第37页/共106页第三十七页,共107页。例:一个简单的计算器程序. 如:从键盘输入2+3,输出(shch)结果为5.第38页/共106页第三十八页,共107页。#includeusing namespace std;intmain()int n1, n2;charop;c
30、out n1 op n2;switch(op)case +:cout n1 + n2 endl;break; case -:cout n1 - n2 endl;break;第39页/共106页第三十九页,共107页。 case *:cout n1 * n2 endl;break; case/:cout n1 / n2 endl;break;default:cout Illegal operator! endl;return 0;第40页/共106页第四十页,共107页。例 将上例改为(i wi) if 语句第41页/共106页第四十一页,共107页。#includeusing namespac
31、e std;Int main()intn1, n2;char op;cout n1 op n2;if(op = +)cout n1 + n2 endl;第42页/共106页第四十二页,共107页。elseif(op = -)cout n1 - n2 endl;elseif(op = *)cout n1 * n2 endl;else if(op = /)cout n1 / n2 endl;elsecout Illegal operator! endl;return 0;第43页/共106页第四十三页,共107页。 例:根据用户输入的月份(yufn),输出从元旦到该月底的总天数。第44页/共106
32、页第四十四页,共107页。#include using namespace std;int main()int year, month, days = 0; cout year month;switch(month)case12:days += 31;case11:days += 30;case 10:days += 31;case 9:days += 30;case 8:days += 31;case 7:days += 31;case 6:days += 30;case5:days += 31;第45页/共106页第四十五页,共107页。 case4:days += 30;case 3:d
33、ays += 31;case 2:if(year % 4 = 0 & year % 100 != 0 |year % 400 = 0)days += 29;elsedays += 28;case1:days += 31;if(days = 0)cout Wrong month! endl;elsecout days endl;return 0;第46页/共106页第四十六页,共107页。 为解决某一问题,或求取某一计算结果,特定的条件下,程序中反复地按某一模式进行(jnxng)操作。问题问题(wnt): 求求 2n1* 2 * 2* 2 .* 2sssssssnss;语句;执行 次;s
34、13.11 循环结构和循环语句第47页/共106页第四十七页,共107页。 为解决某一问题,或求取(qi q)某一计算结果,特定的条件下,程序中反复地按某一模式进行操作。问题问题(wnt): 求求 2n次执行;nsssssss2*.2*2*1s23.11 循环结构和循环语句第48页/共106页第四十八页,共107页。 为解决某一问题,或求取某一计算结果,特定(tdng)的条件下,程序中反复地按某一模式进行操作。问题问题(wnt): 求求 2n次执行;nsssssss2*.2*2*1s43.11 循环结构和循环语句第49页/共106页第四十九页,共107页。 为解决某一问题,或求取某一计算结果,
35、特定的条件下,程序(chngx)中反复地按某一模式进行操作。问题问题(wnt): 求求 2n次执行;nsssssss2*.2*2*1s83.11 循环结构和循环语句第50页/共106页第五十页,共107页。 为解决某一问题(wnt),或求取某一计算结果,特定的条件下,程序中反复地按某一模式进行操作。问题问题(wnt): 求求 2n次执行;nsssssss2*.2*2*1 k=1, s=1 k n ? s = s * 2 k = k + 1 3.11 循环结构和循环语句第51页/共106页第五十一页,共107页。 循环体的算法是什么? 循环的条件、循环结束条件是什么? 如何(rh)修改循环条件?
36、循环条件 循环体 truefalse当型循环当型循环循环条件 循环体 truefalse直到型循环直到型循环3.11 循环(xnhun)结构和循环(xnhun)语句第52页/共106页第五十二页,共107页。语句语句(yj)形式形式 while( 表达式表达式 )循环体循环体 ; 3.11.1 用while语句构成(guchng)循环关键字逻辑表达式(结果(ji gu)为逻辑值)决定是否执行循环体重复执行的操作直至表达式的值为false ( 0 )表达式循环体第53页/共106页第五十三页,共107页。# include int main () int i = 1 , sum = 0 ; wh
37、ile ( i = 100 ) sum = sum + i ; i + ; cout sum = sum endl ;i = 100sum = sum + i; i + + ; 1 10 0 i = 1; sum = 0;想一想:循环条件是什么?循环结束条件是什么?哪一个(y )语句修改循环条件?一个简单的循环跟踪: 求1001iisum3.11.1 用while语句(yj)构成循环第54页/共106页第五十四页,共107页。# include int main () int i = 1 , sum = 0 ; while ( i = 100 ) sum = sum + i ; i + ; c
38、out sum = sum endl ; 可以(ky)写成: sum + = i ; i + + ; 或: sum + = i + + ;想一想如果(rgu)写成: sum + = + + i ; 会有什么问题?一个简单的循环跟踪: 求1001iisum3.11.1 用while语句构成(guchng)循环第55页/共106页第五十五页,共107页。以 sum = 1 + 2 + 3 模拟(mn)执行# include int main () int i = 1 , sum = 0 ; while ( i = 3 ) sum = sum + i ; i + ; cout sum = sum e
39、ndl ;一个简单的循环跟踪: 求1001iisum3.11.1 用while语句构成(guchng)循环第56页/共106页第五十六页,共107页。/ 例例 计算计算(j sun)5个浮点数的平均值个浮点数的平均值#include int main() const int ListSize = 5;/ 总数总数 int ValuesProcessed = 0; / 循环计数器循环计数器 float ValueSum = 0;/ 累加器累加器 cout Please enter ListSize numbers endl; while (ValuesProcessed Value;/ 输入下一
40、个数据输入下一个数据 ValueSum += Value;/ 累加累加 +ValuesProcessed;/ 计算计算(j sun)已经输入的数据个数已经输入的数据个数 float Average = ValueSum / ValuesProcessed; cout nAverage: Average endl; return 0;第57页/共106页第五十七页,共107页。 读程序(chngx),分析结果第58页/共106页第五十八页,共107页。#include using namespace std;int main() int count = 1; while ( count = 10
41、 ) cout ( count % 2 ? * : + ) endl; count+; / end while return 0; 第59页/共106页第五十九页,共107页。#include using namespace std;int main() int y; int x = 1; int total = 0; while ( x = 10 ) y = x * x; cout y endl; total += y; x+; / end while cout Total is total endl; return 0;第60页/共106页第六十页,共107页。语句语句(yj)形式形式 d
42、o 循环体循环体 while( 表达式表达式 );); 表达式循环体执行执行(zhxng)流程流程 3.11.2 用do-while语句构成(guchng)循环第61页/共106页第六十一页,共107页。例如,例如,用do_while语句的求和式 的程序1001iisum# include int main () int i = 1 , sum = 0 ; do sum += i ; i + ; while ( i = 100 ) ; cout sum = sum endl ;3.11.2 用do-while语句构成(guchng)循环第62页/共106页第六十二页,共107页。# inclu
43、de int main () int i = 1 , sum = 0 ; do sum += i ; i + ; while ( i = 100 ) ; cout sum = sum endl ;while ( i = 100 ) sum = sum + i ; i + + ; 比较例如,例如,用do_while语句的求和式 的程序1001iisum3.11.2 用do-while语句构成(guchng)循环第63页/共106页第六十三页,共107页。例3.12 用下面公式求的近似值。/41-1/3+1/5-1/7+直到(zhdo)最后一项的绝对值小于10-7为止。#include #incl
44、ude #include using namespace std;int main( )int s=1; double n=1, t=1, pi=0; while(fabs(t)1e-7) pi=pi+t; n=n+2; s=-s; t=s/n; pi=pi*4; coutpi=setiosflags(iosfixed)setprecision(6)piendl; return 0;第64页/共106页第六十四页,共107页。65例 输入(shr)一个整数,将各位数字反转后输出。第65页/共106页第六十五页,共107页。2. 以下程序段的输出以下程序段的输出(shch)结果是结果是( ) i
45、nt x=3; do cout(x-=2);while(!(- -x);3.设设char c1=A,c2=F;执行执行(zhxng)以下程序段的显示结果为以下程序段的显示结果为( )while(c1=c2) putchar(+c1);c2- -;练习(linx) 第66页/共106页第六十六页,共107页。语句语句(yj)形式形式 for ( 表达式表达式1; 表达式表达式2 ; 表达式表达式3 ) 循环体循环体 ;3.11.3 用for语句构成(guchng)循环表达式表达式2循环体循环体表达式表达式1表达式表达式3第67页/共106页第六十七页,共107页。例如,用例如,用 for 语句的
46、求和语句的求和(qi h)式式 的程序的程序1001iisum# include using namespace std;int main () int i , sum = 0 ; for ( i =1 ; i = 100 ; i + ) sum + = i ; cout sum = sum endl ;3.11.3 用for语句(yj)构成循环i = 100sum + = ii = 1i +sum = 0cout sum第68页/共106页第六十八页,共107页。i = 1; sum=0;while ( i = n ) sum + = i i+ + ;i = 1;sum=0;do sum +
47、 = i i+ + ; while ( i = n );for ( i =1, sum=0 ; i = n ; i + + ) sum = sum + i ; niisum13.11.3 用for语句构成(guchng)循环三种循环(xnhun)语句实现:第69页/共106页第六十九页,共107页。niisum1不同形式的不同形式的 for 语句语句(yj)结构(已设结构(已设 sum=0)(1) 缺省表达式缺省表达式1 i =1 ; for ( ; i = n) break ; (3) 缺省表达式缺省表达式3 for ( i =1; i = n ; ) sum = sum + i ; i +
48、 + ; 3.11.3 用for语句构成(guchng)循环for ( 表达式表达式1; 表达式表达式2 ; 表达式表达式3 ) 循环体循环体 ;i = nsum = sum + i; i + + ; 10 i = 1; sum = 0;第70页/共106页第七十页,共107页。niisum1不同形式的不同形式的 for 语句语句(yj)结构(已设结构(已设 sum=0)3.11.3 用for语句(yj)构成循环for ( 表达式表达式1; 表达式表达式2 ; 表达式表达式3 ) 循环体循环体 ;i = nsum = sum + i; i + + ; 10 i = 1; sum = 0;(4)
49、 缺省循环体缺省循环体for ( i =1; i = n ; sum + = i + + ) ; (5) 缺省表达式3和循环体for ( i =1; sum + = i + + i n ) break ; 第71页/共106页第七十一页,共107页。4.写出以下程序的输出写出以下程序的输出(shch)结果结果:int main()char i,j; for(i=a,j=z; ij; i+,j-) coutij; coutendl; return 0; 练习(linx)第72页/共106页第七十二页,共107页。#include using namespace std;intmain()inti
50、, j;for(i = 1, j = 1; i = 10, j 10; i+, j+)cout i * j ;j += 3;cout endl;return 0;第73页/共106页第七十三页,共107页。 输入一个整数,求出它的所有(suyu)因子。第74页/共106页第七十四页,共107页。p嵌套循环嵌套循环 一个一个(y (y )循环语句的循环体内又包含循循环语句的循环体内又包含循环语句环语句p各种循环语句都可以互相嵌套各种循环语句都可以互相嵌套 ( (以下只是几个例子)以下只是几个例子)2.2.4 循环(xnhun)的嵌套3.12 循环(xnhun)的嵌套while( )while(
51、) while( ) while( ) dodo do do while( ); while( );while( );while( );for(;)for(;) for(;) for(;) while( )while( ) do do while( ); while( ); 第75页/共106页第七十五页,共107页。/ 例例 测试循环执行测试循环执行(zhxng)次数次数#includeint main() cout i t j n ; for ( int i =1; i = 3; i + ) / 外循环外循环 cout i ; for ( int j =1; j = 3; j+ )/ 内循
52、内循环环 cout i t j endl; return 0; ij1112132122233132332.2.4 循环(xnhun)的嵌套3.12 循环(xnhun)的嵌套特点:一般在内层循环中,外层循环的循环变量不会改变特点:一般在内层循环中,外层循环的循环变量不会改变第76页/共106页第七十六页,共107页。4. 设设int i,j;5. 以下程序段输出以下程序段输出(shch)结果为结果为( )6. for(i=1;i=1;j-)8. coutj;9. coutendl;10. 练习(linx) 第77页/共106页第七十七页,共107页。78循环结构与选择(xunz)结构相互嵌套
53、读入一系列整数,统计出正整数个数i和负整数个数j,读入0则结束(jish)。 分析:第78页/共106页第七十八页,共107页。需要读入一系列整数(zhngsh),但是整数(zhngsh)个数不定,要在每次读入之后进行判断,因此使用while循环最为合适。循环控制条件应该是n!=0。由于要判断数的正负并分别进行统计,所以需要在循环内部嵌入选择结构。第79页/共106页第七十九页,共107页。#includeusing namespace std;int main() int i=0,j=0,n; coutn; while( n!=0 ) if(n0) i+; if(nn ; cout正整数个数
54、:i 负整数个数:jendl;80第80页/共106页第八十页,共107页。“同构数”是指这样(zhyng)的整数:它恰好出现在其平方数的右端。如:6*6=36。5*5=25, 376*376=141376 请找出10000以内的全部“同构数”。(for1.cpp)第81页/共106页第八十一页,共107页。编写程序输出所有的水仙花数。所谓水仙花数是指一个三位数,其各位数的立方(lfng)和等于该数。例如: 153 (for2.cpp)第82页/共106页第八十二页,共107页。编写程序,计算(j sun)s=1+(1+2)+(1+2+3)+(1+2+3+n)的值。(for3.cpp)第83页
55、/共106页第八十三页,共107页。3.13 break语句(yj)和continue语句(yj)n break语句(yj)n 无条件地结束switch语句(yj),或循环语句(yj).nwhile (表达式1)n n if ( 表达式2 ) break;n n第84页/共106页第八十四页,共107页。3.13 break语句(yj)和continue语句(yj)n continue语句(yj) n 用于循环体中,终止当前一次循环准备开始下次循环。n while ( 表达式1 )n n if ( 表达式2 ) continue;n n第85页/共106页第八十五页,共107页。#includ
56、e using namespace std;int main( )int i; for (i=1; i=5; i+) if (i%2!=0) cout “”; else continue; cout“”; cout 3) break; while(j0);cout“i=“i“j=“=3)迭代法编循环程序举例迭代法编循环程序举例第90页/共106页第九十页,共107页。#include #include using namespace std;int main( )long f1,f2; int i; f1=f2=1; for(i=1;i=20;i+) coutsetw(12)f1setw(12
57、)f2; if(i%2=0) cout=3)仅用两个变量仅用两个变量(binling)的的算法描述:算法描述: f1=f2=1; f1=f1+f2 ; f2=f1+f2 ;(Fibonacci数列数列菲波那契数列菲波那契数列):):1, 1, 2, 3, 5, 8, 13, 21, 34.f1, f2, f3, f4, f5, f6, fn-2, fn-1, fn 第91页/共106页第九十一页,共107页。整数 m 是素数的条件 除 1 和 m 外,没有(mi yu)其它因数。按定义按定义(dngy)用穷举法逐个数据测用穷举法逐个数据测试试 以以 i = 2 m-1 作除数,只要有一作除数,
58、只要有一个个 i 是是 m 的因数,则的因数,则 m 不是素数不是素数例:判定整数例:判定整数(zhngsh)m是否素数是否素数for ( i = 2; i m ; i + ) if ( m % i = 0 ) break ;if ( i = m ) m 是素数是素数 ;else m 不是素数不是素数;穷举法编循环程序举例穷举法编循环程序举例i mi=i + 1 10 i = 2i 能整除能整除m 10 i =m 10 m是素数是素数m不是素数不是素数第92页/共106页第九十二页,共107页。#include #include using namespace std;int main() i
59、nt m ; cout m ; for ( int i =2; i m; i + ) if ( m% i = 0 ) break ; if ( m = i ) cout m is prime. endl ; else cout m is not prime. endl ; return 0;穷举法编循环程序穷举法编循环程序(chngx)(chngx)举例举例i mi=i + 1 10 i = 2i 能整除能整除m 10 i =m 10 m是素数是素数m不是素数不是素数第93页/共106页第九十三页,共107页。算法优化算法优化 以以 i = 2 作除数,只作除数,只要要(zhyo)有一个有一个
60、 i 是是 m 的因的因数,则数,则 m 不是素数。不是素数。例:判定整数例:判定整数(zhngsh)m是否素数是否素数for ( i = 2, k=sqrt(m); i m ; i + ) if ( m % i = 0 ) break ;if ( i = k+1 ) m 是素数是素数(s sh) ;else m 不是素数不是素数(s sh);穷举法编循环程序举例穷举法编循环程序举例mi k i=i + 1 10 i = 2; k= i 能整除能整除m 10 i =k+1 10 m是素数是素数m不是素数不是素数m第94页/共106页第九十四页,共107页。#include #include using namespace std;int main( ) in
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 前处理岗位试题及答案
- 公务员体育试题及答案
- 2025年临床执业医师《药理学》模拟练习卷
- 药品短缺监测预警管理培训试题及答案
- 医保住院管理政策培训试题及答案
- 医疗保险服务规范考核试题及答案
- 门窗设计考试题及答案
- 乳腺外科三基三严考试题库及答案
- 急性胰腺炎分期护理与并发症防控
- 特种设备事故报告制度培训
- 《当前保密工作面临的新形势、新任务》课件
- 食品微生物学基础课程标准(一)
- 国家职业技术技能标准 6-11-01-04 制冷工 人社厅发2018145号
- 承插型盘扣式钢管脚手架安全技术标准JGJT231-2021规范解读
- 2025年齐齐哈尔市高三语文3月一模考试卷附答案解析
- 环卫清扫保洁服务方案投标文件(技术方案)
- 生命教育与心理健康教育的融合路径研究
- 新概念英语第一册随堂练习-Lesson127~128(有答案)
- 2024-年全国医学博士外语统一入学考试英语试题
- 车辆运营服务合同模板
- 个人合作开店合同范例
评论
0/150
提交评论