第5章 循环结构程序设计_第1页
第5章 循环结构程序设计_第2页
第5章 循环结构程序设计_第3页
第5章 循环结构程序设计_第4页
第5章 循环结构程序设计_第5页
已阅读5页,还剩67页未读 继续免费阅读

下载本文档

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

文档简介

1、1计算机基础教学部计算机基础教学部2021-11-182计算机基础教学部计算机基础教学部do-while语句语句循环的概念循环的概念 1for语句语句2while语句语句34如何跳出循环如何跳出循环5循环嵌套循环嵌套6三种循环比较及应用实例三种循环比较及应用实例73计算机基础教学部计算机基础教学部案例案例例例1、使用循环求、使用循环求sum=1+2+100的值。的值。 #include void main( ) int sum;/*用于保存计算和用于保存计算和*/int i;/*循环控制变量循环控制变量*/sum=0;for(i=1;i=100;i=i+1)sum=sum+i; printf(

2、1+2+3+4+99+100=%dn, sum);4计算机基础教学部计算机基础教学部2021-11-18设变量设变量sum=0,表示求和的初值。利用变量特性,表示求和的初值。利用变量特性,有以下累加运算:,有以下累加运算: sum=sum+1,sum=sum+2,sum=sum+100多个数据连续相加叫累加,累加结果叫累加和。多个数据连续相加叫累加,累加结果叫累加和。本题目中本题目中“累加累加”语句近语句近100条,累加是重复执行条,累加是重复执行的操作。的操作。可以使用可以使用i表示加数,表示加数,sum表示累加和,则重复的表示累加和,则重复的操作是操作是sum=sum+i,其中,其中i从从

3、1开始每次增开始每次增1变化变化。使用。使用i来控制循环,来控制循环,i的初值为的初值为1,循环条件为,循环条件为i=100,使循环趋于结束的操作是,使循环趋于结束的操作是i=i+1。程序流。程序流程图如图程图如图5-2所示。所示。i=1,s=0i=100s=s+ii=i+1输出s真假图5-2 累加和程序流程图5计算机基础教学部计算机基础教学部for循环语句格式循环语句格式forfor( (设置初始值设置初始值 ;循环条件判断循环条件判断 ;设置循环增减量设置循环增减量 ) ) 循环体语句循环体语句3个表达式、循环体语句个表达式、循环体语句!书写顺序和执行顺序不同书写顺序和执行顺序不同!第第1

4、个表达式只执行一次个表达式只执行一次条 件 判 断循 环 体真假图 5 -3 fo r语 句 执 行 过 程循 环 体 外 的 语 句设 置 循 环 初 值设 置 循 环 增 减 量6计算机基础教学部计算机基础教学部循环循环(控制控制)变量变量:for语句中,通过改变或判断某个语句中,通过改变或判断某个变量的值来控制循环的执行变量的值来控制循环的执行 for (i=1; i=100; i=i+1 ) sum=sum+i;for语句中的循环变量语句中的循环变量赋初值赋初值判断其值判断其值改变其值改变其值一般包含四个部分:一般包含四个部分:初始化:指定循环起点初始化:指定循环起点 给循环变量赋初值

5、,如给循环变量赋初值,如i = 1; 进入循环之前,设置相关变量的初值,如进入循环之前,设置相关变量的初值,如sum = 0。条件控制:条件控制: 只要只要i 100,循环结束。,循环结束。指定次数的循环程序设计方法指定次数的循环程序设计方法8计算机基础教学部计算机基础教学部for (i=1; i=100; i=i+1 ) sum=sum+i; 表达式表达式1:给循环变量赋初值,给循环变量赋初值,指定循环的起点。指定循环的起点。i=1表达式表达式2:每执行一次循环,都要检查条件表达式的值,判断是每执行一次循环,都要检查条件表达式的值,判断是否继续执行循环,循环一直执行到循环条件为否继续执行循环

6、,循环一直执行到循环条件为“假假”时结束时结束 。 i=100表达式表达式3:定义每次重复循环时如何修改循环变量的值,设置循定义每次重复循环时如何修改循环变量的值,设置循环的步长,从而可改变表达式环的步长,从而可改变表达式2的真假性。的真假性。i=i+1循环体语句:循环体语句:被反复执行的语句,可以是一条或多条语句。被反复执行的语句,可以是一条或多条语句。for语句的说明语句的说明更适于更适于循环次数循环次数已知的情况已知的情况9计算机基础教学部计算机基础教学部复合语句复合语句 和空语句和空语句 ;for(i=1;i=100;i=i+1)sum=sum+i; printf(1+2+3+4+99

7、+100=%dn, sum);for(i=1;i=100;i=i+1) sum=sum+i; printf(1+2+3+4+99+100=%dn, sum);for(i=1;i=100;i=i+1);sum=sum+i; printf(1+2+3+4+99+100=%dn, sum);注意三个程序段的区别注意三个程序段的区别求求 1+2+100抽取具有共性的算式:抽取具有共性的算式:sum = sum + i sum初值为初值为0,该算式重复,该算式重复100次,次,i从从1变到变到100设设i为循环变量,则:为循环变量,则:指定循环起点的表达式指定循环起点的表达式1:i = 1给出循环条件的

8、表达式给出循环条件的表达式2:i = 100设置循环步长的表达式设置循环步长的表达式3:i+循环体语句:循环体语句:sum = sum + i;for(i=1; i=100; i+)sum =sum+i;总结:指定次数的循环程序设计总结:指定次数的循环程序设计/* 计算计算1 + 2 + 3 + + 100 */#include main() int i, sum; sum = 0; /* 置累加和置累加和sum的初值为的初值为0 */ for ( i = 1; i = 100; i+ ) /* 循环重复循环重复100次次 */ sum = sum + i; /* 反复累加反复累加 */ pr

9、intf( “sum = %dn”, sum); /* 输出累加和输出累加和 */源程序求源程序求 1+2+100for(i=1; i=100; i+) sum=0; sum=sum+i;sum=5050输入一个正整数输入一个正整数n,求前,求前n项和,即循环项和,即循环n次次#include main() int i, sum; sum = 0; for ( i = 1; i = 100; i+ ) sum = sum + i; printf( “sum = %dn”, sum); ;练习:求练习:求 1+2+3+n for(i=1; i=n; i+) sum=sum+i;printf(“E

10、nter n:); scanf(%d, &n); Enter n: 100Sum = 5050#include main() int i, sum; sum = 0; for ( i = 1; i = 100; i+ ) sum = sum + i; printf( “sum = %dn”, sum); ;求求 1+1/2+1/3+ 1/100for(i=1; i=100; i+) sum=sum+1.0/i;int i;double sum;printf( “sum = %fn”, sum);1/i行吗?行吗?#include main() int i, sum; printf(“E

11、nter n: ); scanf(%d, &n); sum = 0; for ( i = 1; i = n; i+ ) sum = sum + i; printf( “sum = %dn”, sum); ;练习:求练习:求1+1/2+1/3+ 1/n #include main() int i; double sum; printf(“Enter n: ); scanf(%d, &n); sum = 0; for ( i = 1; i = n; i+ ) sum = sum + 1.0/i; printf( “sum = %fn”, sum); ;求前求前n项和,即循环项和,即

12、循环n次,每次累加次,每次累加1项。项。for (i = 1; i = n ; i+) sum = sum + item (第第i项项)item = 1.0 / (2 * i - 1)求求 1+1/3+1/5+ 的前的前n项和项和#include main() int i, n; double item, sum; printf(“Enter n: ); scanf (%d, &n);sum = 0 ; for ( i = 1; i = n; i+ ) item = 1.0 / (2 * i - 1); /* 计算第计算第i项的值项的值 */ sum = sum + item ; /*

13、 累加第累加第i项的值项的值 */ printf ( sum = %fn, sum); ;源程序求源程序求 1+1/3+1/5+ 求前求前n项和,即循环项和,即循环n次,每次累加次,每次累加1项。项。for (i = 1; i = n ; i+) sum = sum + item (第第i项项)flag = -flag求求 1-1/3+1/5- 的前的前n项和项和item = flag*1.0/(2 * i - 1)18计算机基础教学部计算机基础教学部例例2、求、求 1-1/3+1/5- 的前的前n项的和项的和 设置总项数变量为设置总项数变量为n;设置累加和变量为;设置累加和变量为s,初值为,

14、初值为0。设符号控制变量设符号控制变量flag,交替取,交替取1和和-1。设置循环变量设置循环变量i,初值为,初值为1。循环控制变量的步长为。循环控制变量的步长为2。加数的绝对值表示为。加数的绝对值表示为1.0/(2*i-1)。flag参与累加运算参与累加运算 :s = s + flag*(1.0/(2*i-1)。循环控制条件:循环控制条件:i=n,进行循环累加。,进行循环累加。19计算机基础教学部计算机基础教学部i=ns=s+flag*(1.0/(2*i-1); flag = -flag;真假图5-4 例5-2程序流程图s=0,i=1,flag=1输入n值i+输出结果#include voi

15、d main( ) double s=0;int i,n,flag=1;scanf(%d,&n);for (i = 1; i = n ; i=i+1)s = s + flag*(1.0/(2*i-1); flag = -flag;printf(sum=%lfn, s);20计算机基础教学部计算机基础教学部复合赋值运算复合赋值运算 运算符运算符运算运算含义含义+=x+=y相加后赋值相加后赋值-=x-=y相减后赋值相减后赋值*=x*=y相乘后赋值相乘后赋值/=x/=y相除后赋值相除后赋值%=x%=y求模后赋值求模后赋值&=x&=y按位按位AND后赋值后赋值|=x|=y按位按

16、位OR后赋值后赋值=x=y按位按位XOR后赋值后赋值=x=x=y右移后赋值右移后赋值21计算机基础教学部计算机基础教学部例如:例如:a+=5 /*等价于等价于 a=a+5*/x*=y+7/*等价于等价于x=x*(y+7)*/说明:说明:x=x*(y+7)中的小括号必不可少,不中的小括号必不可少,不能写成能写成x=x*y+7,两个式子含义不同。,两个式子含义不同。22计算机基础教学部计算机基础教学部自增和自减运算自增和自减运算 +i 变量变量i自增自增1后再参与其他运算。后再参与其他运算。-i 变量变量i自减自减1后再参与其他运算。后再参与其他运算。i+ 变量变量i先参与运算,先参与运算,i的值

17、再自增的值再自增1。i- 变量变量i先参与运算,先参与运算,i的值再自减的值再自减1。注意:自增、自减运算符可以用于注意:自增、自减运算符可以用于整型变量整型变量,但是但是不能用于常量和表达式不能用于常量和表达式,因为无法给常,因为无法给常量和表达式进行赋值。量和表达式进行赋值。例如表达式例如表达式“+3”和和“(i+6)+”都不是合法的都不是合法的表达式。表达式。23计算机基础教学部计算机基础教学部自增、自减运算符的使用示例自增、自减运算符的使用示例#include void main( ) int i=8; printf(%d,+i); printf(%d,-i); printf(%d,(

18、i+)*2); printf(%d,i-); printf(%d,-i+); printf(%dn,(-i-)*2); 运行结果:运行结果:9,8,16,9 ,-8 ,-1824计算机基础教学部计算机基础教学部逗号运算逗号运算 逗号表达式的一般形式为:逗号表达式的一般形式为: 表达式表达式1,表达式,表达式2,计算规则:计算规则: 逗号表达式的求值过程是顺序求解表达逗号表达式的求值过程是顺序求解表达式式1、表达式、表达式2的值,的值,并以,并以最后一个表最后一个表达式的值达式的值作为整个逗号表达式的值。作为整个逗号表达式的值。25计算机基础教学部计算机基础教学部逗号运算举例逗号运算举例#inc

19、lude void main( ) int x,y=7;int z=4;x=(y=y+6,y/z);printf(x=%dn,x);x=50;y=(x=x-5, x/5) ;printf(y=%dn,y);运行结果运行结果:x=3y=926计算机基础教学部计算机基础教学部逗号表达式的用途逗号表达式的用途逗号表达式在逗号表达式在C C语言中的主要用途在语言中的主要用途在forfor循循环中环中现将案例程序进行改写如下:现将案例程序进行改写如下:#include void main( ) int sum;int i;for(i=1, sum=0;i=0&ch=a&ch=A&

20、ch=Z)letter+;else other+;ch=getchar(); 分号不能省!分号不能省!此例中循环次数未知!此例中循环次数未知!29计算机基础教学部计算机基础教学部while语句语句while语句的一般形式为:语句的一般形式为:while(条件判断条件判断) 循环体语句循环体语句条件判断循环体真假图5-5 while语句执行过程循环体外的语句一条语句或多条语句一条语句或多条语句先判断,后循环先判断,后循环30计算机基础教学部计算机基础教学部while 语句和语句和for语句语句都是在循环前先判断条件都是在循环前先判断条件while 语句说明语句说明表达式表达式1;while (表

21、达式表达式2) for的循环体语句的循环体语句; 表达式表达式3;把把for语句改写成语句改写成while语句语句for(表达式表达式1; 表达式表达式2; 表达式表达式3) 循环体语句循环体语句31计算机基础教学部计算机基础教学部while 和和 for 的比较的比较for (i = 1; i = 100; i+) sum = sum + i; 将案例改编:将案例改编:i = 1; 循环变量赋初值循环变量赋初值while (i = 100) 循环条件循环条件 sum = sum + i; i+; 循环变量的改变循环变量的改变循环体循环体 高级程序设计语言高级程序设计语言C 天津城建学院电子与

22、信息系天津城建学院电子与信息系例例 用用while循环求循环求2+4+6+8+502+4+6+8+50的值的值 #include void main()int i=2,sum=0; while(i=0&ch=a&ch=A&ch=Z)letter+;else other+;ch=getchar(); 34计算机基础教学部计算机基础教学部应用程序举例应用程序举例 用格里高利公式求用格里高利公式求的近似值的近似值使用格里高利公式求使用格里高利公式求的近似值,要求精的近似值,要求精确到最后一项的绝对值小于确到最后一项的绝对值小于104。11114357使用格里高利公式求使用格里

23、高利公式求的近似值,要求精确到最后一项的绝的近似值,要求精确到最后一项的绝对值小于对值小于104。#include main() int denominator, flag; double item, pi; flag = 1; denominator = 1 ; item = 1.0; pi = 0; while(fabs (item) = 0.0001) pi = pi + item; flag = -flag; denominator = denominator +2; item = flag * 1.0 / denominator; pi = pi * 4; printf ( “pi

24、= %fn”, pi); pi = 3.141613 item=0.0 ?fabs(item) 0.0001程序解析程序解析1111435736计算机基础教学部计算机基础教学部例例4、求某正整数中各位数字之和、求某正整数中各位数字之和 分析:分析:循环变量赋初值循环变量赋初值,sum=0,n的值的值由键盘任意输入。由键盘任意输入。循环体及循环变循环体及循环变量修正:取个位累量修正:取个位累加加“sum+=n%10;”,形成新高位,形成新高位数据即修正循环变数据即修正循环变量量“n=n/10;”循环条件判断:循环条件判断:修正的循环变量值修正的循环变量值为为0则结束循环。则结束循环。#inclu

25、de void main( ) int sum=0,m,n;scanf(%d,&n);while(n0)m=n%10;sum=sum+m; n=n/10; printf(各位数字和各位数字和sum=%dn, sum);37计算机基础教学部计算机基础教学部do-while语句语句 do-while语句一般形式为:语句一般形式为:do循环体语句循环体语句while(条件判断条件判断); 条件判断循环体真假图5-7 do-while语句执行过程循环体外的语句先循环,后判断先循环,后判断 while 是先判别条件,再决定是否循环;是先判别条件,再决定是否循环; do-while 是先至少循环一

26、次,然后再根据循是先至少循环一次,然后再根据循环的结果决定是否继续循环。环的结果决定是否继续循环。 高级程序设计语言高级程序设计语言C 天津城建学院电子与信息系天津城建学院电子与信息系例例5-1 用用dowhile循环求循环求2+4+6+8+50的值的值 #include void main()int i=2,sum=0;dosum+=i;i+=2;while(i=50); printf(%d,sum); 高级程序设计语言高级程序设计语言C 天津城建学院电子与信息系天津城建学院电子与信息系例例5-2 while和和dowhile比较比较#include void main() int i,su

27、m=0; scanf(“i=%d,&i); do sum+=i;i+; while(i=10); printf(“sum=%d,sum);i=1sum=55i=1sum=55i=11sum=11i=11sum=0#include void main() int i,sum=0; scanf(“i=%d,&i); while(i=10) sum+=i;i+; printf(“sum=%d,sum);循环语句的选择循环语句的选择if(循环次数已知)(循环次数已知) 使用使用for语句语句else /* 循环次数未知循环次数未知 */if (循环条件在进入循环时明确循环条件在进入循环

28、时明确)使用使用while语句语句else /* 循环条件需要在循环体中明确循环条件需要在循环体中明确 */使用使用do-while语句语句41计算机基础教学部计算机基础教学部break语句语句 break语句的一般格式:语句的一般格式:if(p) break;功能:当条件功能:当条件p成立时,强行结束其所在的循环体语句的成立时,强行结束其所在的循环体语句的执行,转向循环体语句外的下一条语句。执行,转向循环体语句外的下一条语句。用途:用途:switch结构结构 ,循环结构,循环结构注意:注意:对于嵌套循环语句和对于嵌套循环语句和switch语句,语句,break语句的执行只能语句的执行只能退出

29、包含退出包含break的那一层结构。的那一层结构。42计算机基础教学部计算机基础教学部continue语句语句 continue语句的一般格式:语句的一般格式:if(p) continue;功能:对于功能:对于for循环,跳出循环体其余语句,循环,跳出循环体其余语句,转向循环表达式转向循环表达式3的计算;对于的计算;对于while和和do-while循环,跳出循环体其余语句,转向循循环,跳出循环体其余语句,转向循环控制条件的判断。环控制条件的判断。用途:仅用于循环结构用途:仅用于循环结构。continue语句和语句和break语句的语句的区别区别:continue语句只结束本次循环,而不是终止

30、整语句只结束本次循环,而不是终止整个循环的执行。个循环的执行。break语句则结束整个循环过程,不再判断执语句则结束整个循环过程,不再判断执行循环的条件是否成立行循环的条件是否成立44计算机基础教学部计算机基础教学部应用举例判断素数应用举例判断素数算法:除了算法:除了1和和m,不能被其它数整除。,不能被其它数整除。设设 i 取值取值 2, m-1 如果如果m不能被该区间上的任何一个数整除,即对不能被该区间上的任何一个数整除,即对每个每个i,m%i 都不为都不为0,则,则m是素数是素数只要找到一个只要找到一个i,使,使m%i为为0,则,则m肯定不是素数肯定不是素数m %2 %3 %4 %5 %(

31、m-1)不是素数不是素数( | ) = 0 =0 =0 是素数是素数 (&) !=0 !=0 !=0 i 取值取值 2, m-1for(i = 2; i = m) printf(yesn)else printf(non”);45计算机基础教学部计算机基础教学部void main() int i, m;printf(“Enter a number: );scanf (%d, &m);for (i = 2; i =m ) printf(%d is a prime number! n, m); else printf(No!n); 源程序判断素数源程序判断素数Enter a numb

32、er: 9NoEnter a number: 1111 is a prime number!for (i = 2; i = m-1; i+) if (m % i = 0) printf(No!n); else printf(%d is a prime number! n, m); 循环条件循环条件?循环的结束条件循环的结束条件?46计算机基础教学部计算机基础教学部标记法判断素数标记法判断素数也可以设标记变量也可以设标记变量flag=1表示某正整数表示某正整数n是素数。若找到该正整是素数。若找到该正整数的一个因子,则先前的数的一个因子,则先前的“假设假设”不成立,修改不成立,修改flag=0,并

33、结,并结束循环。循环结束后根据束循环。循环结束后根据flag的值来判断该数是否为素数。的值来判断该数是否为素数。 注意:注意:前面代码中前面代码中i的的 取值为取值为 2, m-1m不可能被大于不可能被大于 m/2 的数整除的数整除 i 取值取值 2, m-1 、 2, m/2 、 2, 为减少循环次数,根据因子的偶对性,若一个数为减少循环次数,根据因子的偶对性,若一个数n在在2,sqrt(m)范围内无因子。这相对于范围范围内无因子。这相对于范围2,m-1可大大提高判断素数的处理效率。可大大提高判断素数的处理效率。47计算机基础教学部计算机基础教学部标记法判断素数标记法判断素数#include

34、 void main( )int m,i,flag=1;printf(请输入一个大于请输入一个大于1的正整数:的正整数:);scanf(%d,&m);for(i=2;i=m-1;i+)if(m%i=0)flag=0;break;if(flag=1)printf(%d is a primen,m);elseprintf(%d is not a primen,m);48计算机基础教学部计算机基础教学部v三种循环可互相嵌套三种循环可互相嵌套, ,层数不限层数不限v外层循环可包含两个以上内循环外层循环可包含两个以上内循环, ,但不能相互交叉但不能相互交叉v嵌套循环的执行流程嵌套循环的执行流程(

35、1) while() while() . (2) do do while( ); . while( );(3) while() do while( ); . (4) for( ; ;) do while(); while() .内循环内循环外循环外循环内循环内循环循环的嵌套循环的嵌套49计算机基础教学部计算机基础教学部例例6、打印输出九九乘法表、打印输出九九乘法表 #include void main( )int i,j;for(i=1;i10;i+)for(j=1;j=i;j+)printf(%d*%d=%2d ,i,j,i*j);printf(n);50计算机基础教学部计算机基础教学部初始

36、化 i=1i10初始化 j=1j=i输出换行符,i+输出i*j,j+真真假假图5-9 九九乘法表的程序流程图for(i=1;i10;i+)for(j=1;j=i;j+) printf(%d*%d=%2d ,i,j,i*j); printf(n);51计算机基础教学部计算机基础教学部例例7 7、求、求500500以内的全部素数,每行输出以内的全部素数,每行输出1010个个for (m = 2; m = 500; m+) if (m是素数是素数) printf( %d, m);n = sqrt(m);for(i = 2; i n) printf(yesn)else printf(non”);for

37、 (m = 2; m = 500; m+) n=sqrt(m); for(i = 2; i n) printf(%d, m) 52计算机基础教学部计算机基础教学部源程序源程序#include #include void main() int count, i, m, n; count = 0; for (m = 2; m = 500; m+)n=sqrt(m);for (i = 2; i n) /* 如果如果m是素数是素数 */ printf(%6d, m); count+; if (count %10 = 0) printf(“n”); 53计算机基础教学部计算机基础教学部三种循环比较三种循

38、环比较for、while和和do-while三种循环语句的形式不同,都可以用来处三种循环语句的形式不同,都可以用来处理同一问题,一般情况下它们可以互相代替。理同一问题,一般情况下它们可以互相代替。 循环特性循环特性循环种类循环种类for循环循环while循环循环do-while循环循环前置条件检查前置条件检查是是是是否否后置条件检查后置条件检查否否否否是是循环体中是否需要自己更改循环控制变量循环体中是否需要自己更改循环控制变量的值的值否否是是是是循环重复的次数循环重复的次数一般已知一般已知未知未知未知未知最少执行循环体次数最少执行循环体次数0次次0次次1次次何时重复执行循环何时重复执行循环循环

39、条件成立循环条件成立循环条件成立循环条件成立循环条件成立循环条件成立54计算机基础教学部计算机基础教学部应用程序举例应用程序举例 求某班级所有学生某门课程成绩的平均值求某班级所有学生某门课程成绩的平均值解法解法1:循环次数已知:循环次数已知设变量设变量n表示学生人数,表示学生人数,n的值由键盘任意输入。的值由键盘任意输入。设设score表示某学生成绩,表示某学生成绩,sum表示成绩和,表示成绩和,i用来用来统计循环次数统计循环次数(1) 循环变量赋初值。循环控制变量循环变量赋初值。循环控制变量i,初值为,初值为1。(2) 循环体及循环变量修正。每输入一个学生成绩循环体及循环变量修正。每输入一个

40、学生成绩,利用公式,利用公式sum+=score求和。求和。(3) 循环条件。学生实际人数为循环终值,所以循循环条件。学生实际人数为循环终值,所以循环控制条件为环控制条件为i=n。55计算机基础教学部计算机基础教学部源程序源程序#include void main( ) int i,n;float sum=0,score,ave;printf(请输入学生人数:请输入学生人数:n);scanf(%d,&n);for(i=1;i=0&score=100。57计算机基础教学部计算机基础教学部源程序源程序#include void main( ) int i=0;float sum=0

41、,score,ave;scanf(%f,&score);while(score=0&score=100)sum+=score;i+=1;scanf(%f,&score);ave=sum/i; printf(成绩平均值为成绩平均值为%fn, ave);58计算机基础教学部计算机基础教学部n! = 1*2*nfor (i = 1; i = n ; i+) product = product * item (第第i项项)item=i应用程序举例应用程序举例 求求n!product = ?59计算机基础教学部计算机基础教学部#include void main() int i,

42、 n; float product; printf(input n: n); scanf (%d, &n) ; product=1; /* 置阶乘置阶乘product的初值为的初值为1 */ for ( i = 1; i = n; i+ ) /* 循环重复循环重复n次,计算次,计算n! */ product = product * i ; printf ( product = %.0fn, product ); 源程序源程序60计算机基础教学部计算机基础教学部输入实数输入实数x和正整数和正整数n,计算计算xn = x * x * * xfor (i = 1; i = n ; i+) p

43、ower = power * item (第第i项项)item=?应用程序举例应用程序举例 求求 xn 61计算机基础教学部计算机基础教学部#include void main() int i, n; float x, power ; printf(“Enter x, n: n); scanf (%f%d, &x, &n) ; power = 1; /* 置置power的初值为的初值为1 */ for ( i = 1; i = n; i+ ) /* 循环重复循环重复n次,计算次,计算x的的n次幂次幂 */ power = power * x; printf( %.1fn, po

44、wer);源程序求源程序求 xn 62计算机基础教学部计算机基础教学部#include void main() float s=0 , t , a=2 , b=1 ,p ; int i ; for ( i=1 ; i=20 ; i+ ) t=a/b ; s=s+t ; p=a ; a=a+b ; b=p ; printf ( “s=%f” , s ) ; 有一分数序列有一分数序列2/1,3/2,5/3,8/5,13/8,21/13,求出这个数列的前,求出这个数列的前20项之和。项之和。应用程序举例应用程序举例63计算机基础教学部计算机基础教学部应用程序举例应用程序举例 求求1! + 2! +

45、. + 100!for (i = 1; i = 100; i+) item = i ! sum = sum + item;for(i = 1; i = 100; i+) item = 1; for (j = 1; j = i; j+) item = item * j; sum = sum + item; 64计算机基础教学部计算机基础教学部源程序源程序#include void main() int i, j;double item, sum; /* item 存放阶乘存放阶乘 */sum = 0; for(i = 1; i = 100; i+) item = 1; /* 每次求阶乘都从每次求

46、阶乘都从1开始开始 */ for (j = 1; j = i; j+) /* 内层循环算出内层循环算出 item = i! */ item = item * j; sum = sum + item; printf(1! + 2! + 3! + + 100! = %en, sum);65计算机基础教学部计算机基础教学部内层循环的初始化内层循环的初始化for(i = 1; i = 100; i+) item = 1; for (j = 1; j = i; j+) item = item * j; sum = sum + item; 应用程序举例应用程序举例 求求1! + 2! + . + 100!

47、item = 1;for(i = 1; i = 100; i+) for (j = 1; j = i; j+) item = item * j; sum = sum + item; 求求1! + 1!*2! + + 1!*2!*100! 66计算机基础教学部计算机基础教学部分析嵌套循环的执行过程分析嵌套循环的执行过程for(i = 1; i = 100; i+) item = 1; for (j = 1; j = i; j+) item = item * j; sum = sum + item; n 外层循环变量外层循环变量 i 的每个值的每个值内层循环变量内层循环变量 j 变化一个轮次;变化一个轮次;n 内外层循环变量不能相同内外层循

温馨提示

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

评论

0/150

提交评论