ylp-(3.11-3.14)第三章程序设计初步_第1页
ylp-(3.11-3.14)第三章程序设计初步_第2页
ylp-(3.11-3.14)第三章程序设计初步_第3页
ylp-(3.11-3.14)第三章程序设计初步_第4页
ylp-(3.11-3.14)第三章程序设计初步_第5页
已阅读5页,还剩139页未读 继续免费阅读

下载本文档

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

文档简介

1、 为解决某一问题,或求取某一计算结果,特定的条为解决某一问题,或求取某一计算结果,特定的条件下,程序中反复地按某一模式进行操作。件下,程序中反复地按某一模式进行操作。循环概念循环概念问题:问题: 求求 2n次执行;nsssssss2*.2*2*1s12次执行;nsssssss2*.2*2*1s22 为解决某一问题,或求取某一计算结果,特定的条为解决某一问题,或求取某一计算结果,特定的条件下,程序中反复地按某一模式进行操作。件下,程序中反复地按某一模式进行操作。循环概念循环概念问题:问题: 求求 2n次执行;nsssssss2*.2*2*1s2 为解决某一问题,或求取某一计算结果,特定的条为解决

2、某一问题,或求取某一计算结果,特定的条件下,程序中反复地按某一模式进行操作。件下,程序中反复地按某一模式进行操作。循环概念循环概念问题:问题: 求求 2n次执行;nsssssss2*.2*2*1s4 为解决某一问题,或求取某一计算结果,特定的条为解决某一问题,或求取某一计算结果,特定的条件下,程序中反复地按某一模式进行操作。件下,程序中反复地按某一模式进行操作。循环概念循环概念问题:问题: 求求 2n次执行;nsssssss2*.2*2*1s4 为解决某一问题,或求取某一计算结果,特定的条为解决某一问题,或求取某一计算结果,特定的条件下,程序中反复地按某一模式进行操作。件下,程序中反复地按某一

3、模式进行操作。循环概念循环概念问题:问题: 求求 2n次执行;nsssssss2*.2*2*1s8 为解决某一问题,或求取某一计算结果,特定的条为解决某一问题,或求取某一计算结果,特定的条件下,程序中反复地按某一模式进行操作。件下,程序中反复地按某一模式进行操作。循环概念循环概念问题:问题: 求求 2n次执行;nsssssss2*.2*2*1 k=1, s=1 k n ? s = s * 2 k = k + 1 为解决某一问题,或求取某一计算结果,特定的条为解决某一问题,或求取某一计算结果,特定的条件下,程序中反复地按某一模式进行操作。件下,程序中反复地按某一模式进行操作。循环概念循环概念问题

4、:问题: 求求 2n典型循环结构典型循环结构 循环体的算法循环体的算法是什么是什么? 循环的条件、循环结束条件循环的条件、循环结束条件是什么是什么? 如何如何修改循环条件修改循环条件?循环条件循环条件 循环体循环体 truefalse当型循环当型循环语句形式语句形式 while( 表达式表达式 )循环体)循环体 ; 3.11.1用用while语句构成循环语句构成循环语句形式语句形式 while( 表达式表达式 )循环体)循环体 ; 关键字关键字3.11.1用用while语句构成循环语句构成循环语句形式语句形式 while( 表达式表达式 )循环体)循环体 ; 逻辑表达式逻辑表达式决定是否执行循

5、环体决定是否执行循环体3.11.1用用while语句构成循环语句构成循环语句形式语句形式 while( 表达式表达式 )循环体)循环体 ; 逻辑表达式逻辑表达式不管表达式形式如何,不管表达式形式如何,结果都作为逻辑值结果都作为逻辑值3.11.1用用while语句构成循环语句构成循环语句形式语句形式 while( 表达式表达式 )循环体循环体 ; 重复执行的操作重复执行的操作直至表达式的值为直至表达式的值为false ( 0 )3.11.1用用while语句构成循环语句构成循环语句形式语句形式 while( 表达式表达式 )循环体)循环体 ; 表达式表达式循环体循环体truefalse执行流程执

6、行流程 3.11.1用用while语句构成循环语句构成循环以以 sum = 1 + 2 + 3 模拟执行模拟执行# include using namespace std;int main () int i = 1 , sum = 0 ; while ( i = 3 ) sum = sum + i ; i + ; cout sum = sum endl ; return 0;一个简单的循环跟踪:一个简单的循环跟踪: 求1001iisum3.11.1用用while语句构成循环语句构成循环 以以 sum = 1 + 2 + 3 模拟执行模拟执行i = 3sum = sum + i; i + + ;

7、 1 10 0 i = 1; sum = 0;10isumi = 3i = 1; sum = 0;一个简单的循环跟踪:一个简单的循环跟踪: 求求1001iisum3.11.1用用while语句构成循环语句构成循环# include using namespace std;int main () int i = 1 , sum = 0 ; while ( i = 3 ) sum = sum + i ; i + ; cout sum = sum endl ; return 0; 以以 sum = 1 + 2 + 3 模拟执行模拟执行i = 5sum = sum + i; i + + ; 1 10

8、0 i = 1; sum = 0;10isumi = 31i = 3一个简单的循环跟踪:一个简单的循环跟踪: 求求1001iisum3.11.1用用while语句构成循环语句构成循环# include using namespace std;int main () int i = 1 , sum = 0 ; while ( i = 3 ) sum = sum + i ; i + ; cout sum = sum endl ; return 0; 以以 sum = 1 + 2 + 3 模拟执行模拟执行i = 3sum = sum + i; i + + ; 1 10 0 i = 1; sum =

9、0;10isumi = 31sum = sum + i; i + + ;1 + 0一个简单的循环跟踪:一个简单的循环跟踪: 求求1001iisum3.11.1用用while语句构成循环语句构成循环# include using namespace std;int main () int i = 1 , sum = 0 ; while ( i = 3 ) sum = sum + i ; i + ; cout sum = sum endl ; return 0; 以以 sum = 1 + 2 + 3 模拟执行模拟执行i = 3sum = sum + i; i + + ; 1 10 0 i = 1;

10、 sum = 0;11isumi = 31sum = sum + i; i + + ;1 + 0一个简单的循环跟踪:一个简单的循环跟踪: 求求1001iisum3.11.1用用while语句构成循环语句构成循环# include using namespace std;int main () int i = 1 , sum = 0 ; while ( i = 3 ) sum = sum + i ; i + ; cout sum = sum endl ; return 0; 以以 sum = 1 + 2 + 3 模拟执行模拟执行i = 3sum = sum + i; i + + ; 1 10 0

11、 i = 1; sum = 0;11isumi = 31sum = sum + i; i + + ;一个简单的循环跟踪:一个简单的循环跟踪: 求求1001iisum3.11.1用用while语句构成循环语句构成循环# include using namespace std;int main () int i = 1 , sum = 0 ; while ( i = 3 ) sum = sum + i ; i + ; cout sum = sum endl ; return 0; 以以 sum = 1 + 2 + 3 模拟执行模拟执行i = 3sum = sum + i; i + + ; 1 10

12、 0 i = 1; sum = 0;21isumi = 31sum = sum + i; i + + ;一个简单的循环跟踪:一个简单的循环跟踪: 求求1001iisum3.11.1用用while语句构成循环语句构成循环# include using namespace std;int main () int i = 1 , sum = 0 ; while ( i = 3 ) sum = sum + i ; i + ; cout sum = sum endl ; return 0; 以以 sum = 1 + 2 + 3 模拟执行模拟执行i = 5sum = sum + i; i + + ; 1

13、10 0 i = 1; sum = 0;21isumi = 31i = 3一个简单的循环跟踪:一个简单的循环跟踪: 求求1001iisum3.11.1用用while语句构成循环语句构成循环# include using namespace std;int main () int i = 1 , sum = 0 ; while ( i = 3 ) sum = sum + i ; i + ; cout sum = sum endl ; return 0; 以以 sum = 1 + 2 + 3 模拟执行模拟执行i = 3sum = sum + i; i + + ; 1 10 0 i = 1; sum

14、 = 0;21isumi = 31sum = sum + i; i + + ;2 + 1一个简单的循环跟踪:一个简单的循环跟踪: 求求1001iisum3.11.1用用while语句构成循环语句构成循环# include using namespace std;int main () int i = 1 , sum = 0 ; while ( i = 3 ) sum = sum + i ; i + ; cout sum = sum endl ; return 0;以以 sum = 1 + 2 + 3 模拟执行模拟执行i = 3sum = sum + i; i + + ; 1 10 0 i =

15、1; sum = 0;23isumi = 31sum = sum + i; i + + ;2 + 1 一个简单的循环跟踪:一个简单的循环跟踪: 求求1001iisum3.11.1用用while语句构成循环语句构成循环# include using namespace std;int main () int i = 1 , sum = 0 ; while ( i = 3 ) sum = sum + i ; i + ; cout sum = sum endl ; return 0; 以以 sum = 1 + 2 + 3 模拟执行模拟执行i = 3sum = sum + i; i + + ; 1 1

16、0 0 i = 1; sum = 0;23isumi = 31sum = sum + i; i + + ;一个简单的循环跟踪:一个简单的循环跟踪: 求求1001iisum3.11.1用用while语句构成循环语句构成循环# include using namespace std;int main () int i = 1 , sum = 0 ; while ( i = 3 ) sum = sum + i ; i + ; cout sum = sum endl ; return 0;以以 sum = 1 + 2 + 3 模拟执行模拟执行i = 3sum = sum + i; i + + ; 1

17、10 0 i = 1; sum = 0;33isumi = 31sum = sum + i; i + + ; 一个简单的循环跟踪:一个简单的循环跟踪: 求求1001iisum3.11.1用用while语句构成循环语句构成循环# include using namespace std;int main () int i = 1 , sum = 0 ; while ( i = 3 ) sum = sum + i ; i + ; cout sum = sum endl ; return 0; 以以 sum = 1 + 2 + 3 模拟执行模拟执行i = 5sum = sum + i; i + + ;

18、 1 10 0 i = 1; sum = 0;33isumi = 31i = 3一个简单的循环跟踪:一个简单的循环跟踪: 求求1001iisum3.11.1用用while语句构成循环语句构成循环# include using namespace std;int main () int i = 1 , sum = 0 ; while ( i = 3 ) sum = sum + i ; i + ; cout sum = sum endl ; return 0; 以以 sum = 1 + 2 + 3 模拟执行模拟执行i = 3sum = sum + i; i + + ; 1 10 0 i = 1;

19、sum = 0;33isumi = 31sum = sum + i; i + + ;3 + 3一个简单的循环跟踪:一个简单的循环跟踪: 求求1001iisum3.11.1用用while语句构成循环语句构成循环# include using namespace std;int main () int i = 1 , sum = 0 ; while ( i = 3 ) sum = sum + i ; i + ; cout sum = sum endl ; return 0;以以 sum = 1 + 2 + 3 模拟执行模拟执行i = 3sum = sum + i; i + + ; 1 10 0 i

20、 = 1; sum = 0;36isumi = 31sum = sum + i; i + + ;3 + 3 一个简单的循环跟踪:一个简单的循环跟踪: 求求1001iisum3.11.1用用while语句构成循环语句构成循环# include using namespace std;int main () int i = 1 , sum = 0 ; while ( i = 3 ) sum = sum + i ; i + ; cout sum = sum endl ; return 0;以以 sum = 1 + 2 + 3 模拟执行模拟执行i = 3sum = sum + i; i + + ; 1

21、 10 0 i = 1; sum = 0;36isumi = 31sum = sum + i; i + + ; 一个简单的循环跟踪:一个简单的循环跟踪: 求求1001iisum3.11.1用用while语句构成循环语句构成循环# include using namespace std;int main () int i = 1 , sum = 0 ; while ( i = 3 ) sum = sum + i ; i + ; cout sum = sum endl ; return 0;以以 sum = 1 + 2 + 3 模拟执行模拟执行 i = 3sum = sum + i; i + +

22、; 1 10 0 i = 1; sum = 0;46isumi = 31sum = sum + i; i + + ;一个简单的循环跟踪:一个简单的循环跟踪: 求求1001iisum3.11.1用用while语句构成循环语句构成循环# include using namespace std;int main () int i = 1 , sum = 0 ; while ( i = 3 ) sum = sum + i ; i + ; cout sum = sum endl ; return 0;以以 sum = 1 + 2 + 3 模拟执行模拟执行i = 5sum = sum + i; i + +

23、 ; 1 10 0 i = 1; sum = 0;46isumi = 3i = 30 一个简单的循环跟踪:一个简单的循环跟踪: 求求1001iisum3.11.1用用while语句构成循环语句构成循环# include using namespace std;int main () int i = 1 , sum = 0 ; while ( i = 3 ) sum = sum + i ; i + ; cout sum = sum endl ; return 0; 以以 sum = 1 + 2 + 3 模拟执行模拟执行i = 3sum = sum + i; i + + ; 1 10 0 i =

24、1; sum = 0;46isumi = 3输出输出 sum = 60一个简单的循环跟踪:一个简单的循环跟踪: 求求1001iisum3.11.1用用while语句构成循环语句构成循环# include using namespace std;int main () int i = 1 , sum = 0 ; while ( i = 3 ) sum = sum + i ; i + ; cout sum = sum endl ; return 0;以以 sum = 1 + 2 + 3 模拟执行模拟执行i = 3sum = sum + i; i + + ; 1 10 0 i = 1; sum =

25、0;46isum输出输出 sum = 6一个简单的循环跟踪:一个简单的循环跟踪: 求求1001iisum3.11.1用用while语句构成循环语句构成循环# include using namespace std;int main () int i = 1 , sum = 0 ; while ( i = 3 ) sum = sum + i ; i + ; cout sum = sum endl ; return 0;i = 100sum = sum + i; i + + ; 1 10 0 i = 1; sum = 0;想一想:想一想:循环条件是什么?循环条件是什么?循环结束条件是什么?循环结束

26、条件是什么?哪一个语句修改循环条件?哪一个语句修改循环条件?一个简单的循环跟踪:一个简单的循环跟踪: 求求1001iisum3.11.1用用while语句构成循环语句构成循环# include using namespace std;int main () int i = 1 , sum = 0 ; while ( i = 100 ) sum = sum + i ; i + ; cout sum = sum endl ; return 0; 可以写成:可以写成: sum + = i ; i + + ; 或:或: sum + = i + + ;一个简单的循环跟踪:一个简单的循环跟踪: 求求100

27、1iisum3.11.1用用while语句构成循环语句构成循环# include using namespace std;int main () int i = 1 , sum = 0 ; while ( i = 100 ) sum = sum + i ; i + ; cout sum = sum endl ; return 0;/ 例例 计算计算5个浮点数的平均值个浮点数的平均值#include using namespace std;int main() const int ListSize = 5;/ 总数总数 int ValuesProcessed = 0;/ 循环计数器循环计数器 f

28、loat ValueSum = 0;/ 累加器累加器 cout Please enter ListSize numbers endl; while (ValuesProcessed Value;/ 输入下一个数据输入下一个数据 ValueSum += Value;/ 累加累加 +ValuesProcessed;/ 计算已经输入的数据个数计算已经输入的数据个数 float Average = ValueSum / ValuesProcessed; cout nAverage: Average endl; return 0;/ 例例 计算计算5个浮点数的平均值个浮点数的平均值#include us

29、ing namespace std;int main() const int ListSize = 5;/ 总数总数 int ValuesProcessed = 0;/ 循环计数器循环计数器 float ValueSum = 0;/ 累加器累加器 cout Please enter ListSize numbers endl; while (ValuesProcessed Value;/ 输入下一个数据输入下一个数据 ValueSum += Value;/ 累加累加 +ValuesProcessed;/ 计算已经输入的数据个数计算已经输入的数据个数 float Average = ValueS

30、um / ValuesProcessed; cout nAverage: Average endl; return 0;循环条件循环条件/ 例例 计算计算5个浮点数的平均值个浮点数的平均值#include using namespace std;int main() const int ListSize = 5;/ 总数总数 int ValuesProcessed = 0;/ 循环计数器循环计数器 float ValueSum = 0;/ 累加器累加器 cout Please enter ListSize numbers endl; while (ValuesProcessed Value;/

31、 输入下一个数据输入下一个数据 ValueSum += Value;/ 累加累加 +ValuesProcessed;/ 计算已经输入的数据个数计算已经输入的数据个数 float Average = ValueSum / ValuesProcessed; cout nAverage: Average endl; return 0;循环体循环体/ 例例 计算计算5个浮点数的平均值个浮点数的平均值#include using namespace std;int main() const int ListSize = 5;/ 总数总数 int ValuesProcessed = 0;/ 循环计数器循环

32、计数器 float ValueSum = 0;/ 累加器累加器 cout Please enter ListSize numbers endl; while (ValuesProcessed Value;/ 输入下一个数据输入下一个数据 ValueSum += Value;/ 累加累加 +ValuesProcessed;/ 计算已经输入的数据个数计算已经输入的数据个数 float Average = ValueSum / ValuesProcessed; cout nAverage: Average endl; return 0;修改修改循环条件循环条件/ 例例 计算计算5个浮点数的平均值个浮

33、点数的平均值#include using namespace std;int main() const int ListSize = 5;/ 总数总数 int ValuesProcessed = 0;/ 循环计数器循环计数器 float ValueSum = 0;/ 累加器累加器 cout Please enter ListSize numbers endl; while (ValuesProcessed Value;/ 输入下一个数据输入下一个数据 ValueSum += Value;/ 累加累加 +ValuesProcessed;/ 计算已经输入的数据个数计算已经输入的数据个数 float

34、 Average = ValueSum / ValuesProcessed; cout nAverage: Average endl; return 0;3.11.1用用while语句构成循环语句构成循环注意:注意:1. 若条件表达式的值一开始就为假若条件表达式的值一开始就为假(false),则循环体一次也,则循环体一次也不执行。不执行。2. 循环体若包含一个以上语句,应该用大括号循环体若包含一个以上语句,应该用大括号“”括起来。括起来。如果不加大括号,则如果不加大括号,则while语句的范围只到语句的范围只到while后面的第后面的第一个分号处一个分号处。3. 在循环体中应该有使循环趋向于结

35、束的语句。在循环体中应该有使循环趋向于结束的语句。while( 表达式表达式 )循环体)循环体 ; 3.11.2用用do-while语句构成循环语句构成循环语句形式语句形式 do 循环体循环体 while(表达式表达式); 表达式表达式循环体循环体truefalse执行流程执行流程 3.11.2用用do-while语句构成循环语句构成循环例如,例如,用用do_while语句的求和式语句的求和式 的程序的程序 1001iisum# include using namespace std;int main () int i = 1 , sum = 0 ; do sum += i ; i + ; w

36、hile ( i = 100 ) ; cout sum = sum endl ; return 0;3.11.2用用do-while语句构成循环语句构成循环while ( i = 100 ) sum += i ; i + + ; 比较比较例如,例如,用用do_while语句的求和式语句的求和式 的程序的程序 1001iisum# include using namespace std;int main () int i = 1 , sum = 0 ; do sum += i ; i + ; while ( i = 100 ) ; cout sum = sum endl ; return 0;两

37、种典型循环结构两种典型循环结构循环条件循环条件 循环体循环体 truefalse当型循环当型循环循环条件循环条件 循环体循环体 truefalse直到型循环直到型循环例例3-11 使用级数求使用级数求 的近似值的近似值121) 1(.715131141nn分析一分析一用循环对各项值迭加,直至被加项用循环对各项值迭加,直至被加项 10-8循环终止条件:循环终止条件: | x | 10-8循环体算法:循环体算法: 累加当前项;累加当前项; 变号;求下一项分母;变号;求下一项分母; 求下一项值;求下一项值;例例3-11 使用级数求使用级数求 的近似值的近似值#include#includeusing

38、 namespace std;int main() double s = 0, x = 1, pi ; long k = 1; int sign = 1 ; do s += x ; k += 2 ; sign = -sign ; x = sign / double(k); while ( fabs (x) 1e-8 ) ; pi = s * 4 ; cout pi = pi endl ; return 0; 121) 1(.715131141nn累加当前项;累加当前项; 变号;求下一项分母;变号;求下一项分母; 求下一项值;求下一项值;#include#includeusing namespa

39、ce std;int main() double s = 0, x = 1, pi ; long k = 1; int sign = 1 ; do s += x ; k += 2 ; sign = -sign ; x = sign / double(k); while ( fabs (x) 1e-8 ) ; pi = s * 4 ; cout pi = pi endl ; return 0; 例例3-11 使用级数求使用级数求 的近似值的近似值121) 1(.715131141nn/ 累加当前项累加当前项#include#includeusing namespace std;int main(

40、) double s = 0, x = 1, pi ; long k = 1; int sign = 1 ; do s += x ; k += 2 ; sign = -sign ; x = sign / double(k); while ( fabs (x) 1e-8 ) ; pi = s * 4 ; cout pi = pi endl ; return 0; 例例3-11 使用级数求使用级数求 的近似值的近似值121) 1(.715131141nn/ 后项分母后项分母/ 累加当前项累加当前项#include#includeusing namespace std;int main() doub

41、le s = 0, x = 1, pi ; long k = 1; int sign = 1 ; do s += x ; k += 2 ; sign = -sign ; x = sign / double(k); while ( fabs (x) 1e-8 ) ; pi = s * 4 ; cout pi = pi endl ; return 0; 例例3-11 使用级数求使用级数求 的近似值的近似值121) 1(.715131141nn/ 变号变号/ 后项分母后项分母/ 累加当前项累加当前项#include#includeusing namespace std;int main() doub

42、le s = 0, x = 1, pi ; long k = 1; int sign = 1 ; do s += x ; k += 2 ; sign = -sign ; x = sign / double(k); while ( fabs (x) 1e-8 ) ; pi = s * 4 ; cout pi = pi endl ; return 0; 例例3-11 使用级数求使用级数求 的近似值的近似值121) 1(.715131141nn/ 求后项求后项注意类型转换注意类型转换/ 变号变号/ 后项分母后项分母/ 累加当前项累加当前项#include#includeusing namespace

43、 std;int main() double s = 0, x = 1, pi ; long k = 1; int sign = 1 ; do s += x ; k += 2 ; sign = -sign ; x = sign / double(k); while ( fabs (x) 1e-8 ) ; pi = s * 4 ; cout pi = pi endl ; return 0; 例例3-11 使用级数求使用级数求 的近似值的近似值121) 1(.715131141nn/ 精度判断精度判断/ 求后项求后项/ 变号变号/ 后项分母后项分母/ 累加当前项累加当前项#include#incl

44、udeusing namespace std;int main() double s = 0, x = 1, pi ; long k = 1; int sign = 1 ; do s += x ; k += 2 ; sign = -sign ; x = sign / double(k); while ( fabs (x) 1e-8 ) ; pi = s * 4 ; cout pi = pi endl ; return 0; 例例3-11 使用级数求使用级数求 的近似值的近似值121) 1(.715131141nn/ 求求 / 精度判断精度判断/ 求后项求后项/ 变号变号/ 后项分母后项分母/

45、累加当前项累加当前项/ 求求 / 精度判断精度判断/ 求后项求后项/ 变号变号/ 后项分母后项分母/ 累加当前项累加当前项#include#includeusing namespace std;int main() double s = 0, x = 1, pi ; long k = 1; int sign = 1 ; do s += x ; k += 2 ; sign = -sign ; x = sign / double(k); while ( fabs (x) 1e-8 ) ; pi = s * 4 ; cout pi = pi endl ; return 0; 例例3-11 使用级数求

46、使用级数求 的近似值的近似值121) 1(.715131141nn#include#includeusing namespace std;int main() double s = 0, x = 1, pi ; long k = 1; int sign = 1 ; do s += x ; k += 2 ; sign = -sign ; x = sign / double(k); while ( fabs (x) 1e-8 ) ; pi = s * 4 ; cout pi = pi endl ; return 0; 例例3-11 使用级数求使用级数求 的近似值的近似值121) 1(.715131

47、141nn分析二分析二 直接用通项描述迭加直接用通项描述迭加s += x ;k + ;sign = -sign ;x = double( sign ) / ( 2 * k-1 ) ;修改修改3.11.3 用用for语句构成循环语句构成循环语句形式语句形式 for ( 表达式表达式1; 表达式表达式2 ; 表达式表达式3 )循环体循环体 ;3.11.3 用用for语句构成循环语句构成循环语句形式语句形式 for ( 表达式表达式1; 表达式表达式2 ; 表达式表达式3 )循环体循环体 ;执行流程执行流程 表达式表达式2循环体循环体truefalse表达式表达式1表达式表达式33.11.3 用用f

48、or语句构成循环语句构成循环语句形式语句形式 for ( 表达式表达式1; 表达式表达式2 ; 表达式表达式3 )循环体循环体 ;关键字关键字表达式表达式2循环体循环体truefalse表达式表达式1表达式表达式3执行流程执行流程 3.11.3 用用for语句构成循环语句构成循环语句形式语句形式 for ( 表达式表达式1; 表达式表达式2 ; 表达式表达式3 )循环体循环体 ;初始表达式初始表达式表达式表达式2循环体循环体truefalse表达式表达式1表达式表达式3执行流程执行流程 3.11.3 用用for语句构成循环语句构成循环语句形式语句形式 for ( 表达式表达式1; 表达式表达式

49、2 ; 表达式表达式3 )循环体循环体 ;循环控制循环控制表达式表达式表达式表达式2循环体循环体truefalse表达式表达式1表达式表达式3执行流程执行流程 3.11.3 用用for语句构成循环语句构成循环语句形式语句形式 for ( 表达式表达式1; 表达式表达式2 ; 表达式表达式3 )循环体循环体 ;循环后置表达式循环后置表达式表达式表达式2循环体循环体truefalse表达式表达式1表达式表达式3执行流程执行流程 3.11.3 用用for语句构成循环语句构成循环语句形式语句形式 for ( 表达式表达式1; 表达式表达式2 ; 表达式表达式3 )循环体循环体 ;执行流程执行流程 表达

50、式表达式2循环体循环体truefalse表达式表达式1表达式表达式3等效于:等效于:表达式表达式1;while(表达式表达式2) 循环体;循环体; 表达式表达式3;3.11.3 用用for语句构成循环语句构成循环# include using namespace std;int main () int i , sum = 0 ; for ( i =1 ; i = 100 ; i + ) sum + = i ; cout sum = sum endl ; return 0;例如,例如,用用 for 语句的求和式语句的求和式 的程序的程序1001iisum3.11.3 用用for语句构成循环语句构

51、成循环i = 100sum + = itruefalsei = 1i +sum = 0cout sum例如,例如,用用 for 语句的求和式语句的求和式 的程序的程序1001iisum# include using namespace std;int main () int i , sum = 0 ; for ( i =1 ; i = 100 ; i + ) sum + = i ; cout sum = sum endl ; return 0;3.11.3 用用for语句构成循环语句构成循环i = 1;while ( i = n ) sum + = i ; i + ;i = 1;do sum

52、+ = i ; i + ; while ( i = n ) ;for ( i =1 ; i = n ; i + + ) sum += i ; niisum13.11.3 用用for语句构成循环语句构成循环例:例:求求 n! = 123n 的值,的值,n从键盘上输入。从键盘上输入。i = nt * = itruefalsei = 1i +t = 1cout t# include using namespace std;int main () int i , n ; long int t ; coutn ; t = 1; for ( i =1 ; i = n ; i + ) t *= i ; co

53、ut n ! = t endl ; return 0;注意:注意:1. 若若表达式表达式2的值一开始就为假的值一开始就为假(false),则循环体一次也不执,则循环体一次也不执行。行。2. 循环体循环体若包含一个以上语句,应该用花括号若包含一个以上语句,应该用花括号“”括起来。括起来。如果不加花括号,则认为只有如果不加花括号,则认为只有for之后的第一个语句属于之后的第一个语句属于循循环体环体。3. 表达式表达式3的功能应该是使循环趋向于结束。的功能应该是使循环趋向于结束。for ( 表达式表达式1; 表达式表达式2 ; 表达式表达式3 )循环体循环体 ;3.11.3 用用for语句构成循环语

54、句构成循环3.11.3 用用for语句构成循环语句构成循环niisum1不同形式的不同形式的 for 语句结构语句结构(1) i =1 ; /缺省表达式缺省表达式1 for(;i n) break ; /缺省表达式缺省表达式2(3) for(i=1;i=n;) sum=sum+i; i+; /缺省表达式缺省表达式3(4) for(i=1;i=n;sum+=i+) ; /缺省循环体缺省循环体 for(i=1;i n ) break ; /缺省全部缺省全部 for 的表达式的表达式(5) i = 1; for ( ; i =100 ; ) sum + = i ; i + +; /缺省表达式缺省表达

55、式1和表达式和表达式3 for ( i = 1 ; i = n ; i + ) sum = sum + i ; 3.11.3 用用for语句构成循环语句构成循环不同形式的不同形式的 for 语句结构语句结构niisum1(7) /表达式表达式1可以是循环变量定义。可以是循环变量定义。 for ( int i = 1 ; i =100 ; i + + ) sum = sum + i ; 只要循环变量不在程序的其他地方使用,在只要循环变量不在程序的其他地方使用,在for语句的语句的表达式表达式1中定义是最好的中定义是最好的 for ( i = 1 ; i = n ; i + ) sum = sum

56、 + i ; 3.11.3 用用for语句构成循环语句构成循环不同形式的不同形式的 for 语句结构语句结构3.11.3 用用for语句构成循环语句构成循环编写编写for循环的程序时,注意可读性!循环的程序时,注意可读性!例:例: for ( int i = 1 ; i = 2 )分析分析 可以用迭代方法求解可以用迭代方法求解迭代迭代 是是 一个不断用新值取代变量的旧值,一个不断用新值取代变量的旧值, 或或 由旧值递推出变量的新值的过程。由旧值递推出变量的新值的过程。例例3-13 求菲波那契数列的前求菲波那契数列的前 n 项项Fibonacci 数列:数列:0,1,1,2,3,5,8,13,2

57、1,34,f0 = 0f1 = 1fn = fn-1 + fn-2( n = 2 )分析分析 可以用迭代方法求解可以用迭代方法求解为了得到当前项,要使用前两项,所以用两个为了得到当前项,要使用前两项,所以用两个变量迭代变量迭代例例3-13 求菲波那契数列的前求菲波那契数列的前 n 项项Fibonacci 数列:数列:0,1,1,2,3,5,8,13,21,34,f0 = 0f1 = 1fn = fn-1 + fn-2( n = 2 )0a01a1f0f1例例3-13 求菲波那契数列的前求菲波那契数列的前 n 项项Fibonacci 数列:数列:0,1,1,2,3,5,8,13,21,34,f0

58、 = 0f1 = 1fn = fn-1 + fn-2( n = 2 )0a01a10 + 1f0f1a21f2fnfn-1fn-2n=2例例3-13 求菲波那契数列的前求菲波那契数列的前 n 项项Fibonacci 数列:数列:0,1,1,2,3,5,8,13,21,34,f0 = 0f1 = 1fn = fn-1 + fn-2( n = 2 )0a01a1f11a2fnfn-1fn-2n=31例例3-13 求菲波那契数列的前求菲波那契数列的前 n 项项Fibonacci 数列:数列:0,1,1,2,3,5,8,13,21,34,f0 = 0f1 = 1fn = fn-1 + fn-2( n

59、= 2 )1a01a1f11a2fnfn-1fn-2n=3f21例例3-13 求菲波那契数列的前求菲波那契数列的前 n 项项Fibonacci 数列:数列:0,1,1,2,3,5,8,13,21,34,f0 = 0f1 = 1fn = fn-1 + fn-2( n = 2 )1a01a1f1a2fnfn-1fn-2n=3f21 + 12f3例例3-13 求菲波那契数列的前求菲波那契数列的前 n 项项Fibonacci 数列:数列:0,1,1,2,3,5,8,13,21,34,f0 = 0f1 = 1fn = fn-1 + fn-2( n = 2 )0a01a1f22a2fnfn-1fn-2n=

60、41例例3-13 求菲波那契数列的前求菲波那契数列的前 n 项项Fibonacci 数列:数列:0,1,1,2,3,5,8,13,21,34,f0 = 0f1 = 1fn = fn-1 + fn-2( n = 2 )1a01a1f22a2fnfn-1fn-2n=4f32例例3-13 求菲波那契数列的前求菲波那契数列的前 n 项项Fibonacci 数列:数列:0,1,1,2,3,5,8,13,21,34,f0 = 0f1 = 1fn = fn-1 + fn-2( n = 2 )1a02a1f2a2fnfn-1fn-2n=4f31 + 23f4例例3-13 求菲波那契数列的前求菲波那契数列的前

温馨提示

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

评论

0/150

提交评论