(5.1)--第5章 循环结构程序设计.ppt
商商商商商商洛洛洛洛洛洛学学学学学学院院院院院院 C C C C C C语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计教学目标和要求教学目标和要求 了解循环结构程序设计方法,掌握各种循环语句应了解循环结构程序设计方法,掌握各种循环语句应用的特点及异同,在三种基本循环结构的基础上,进一步用的特点及异同,在三种基本循环结构的基础上,进一步掌握循环嵌套及复合循环结构。掌握循环嵌套及复合循环结构。返回本书目录返回本书目录第第5 5章章 循环结构程序设计循环结构程序设计教学重点及难点教学重点及难点重点掌握各种循环语句的使用方法、应用特点及异同,重点掌握各种循环语句的使用方法、应用特点及异同,熟练掌握循环语句的使用。难点是循环熟练掌握循环语句的使用。难点是循环结构结构的嵌套的嵌套。商商商商商商洛洛洛洛洛洛学学学学学学院院院院院院 C C C C C C语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计循环结构的引入循环结构的引入问题提出问题提出问题提出问题提出1 1 1 1、由比较数、由比较数、由比较数、由比较数a a a a、b b b b、c c c c大小输出其中最大的数程序实现,分析输入大小输出其中最大的数程序实现,分析输入大小输出其中最大的数程序实现,分析输入大小输出其中最大的数程序实现,分析输入10101010个数个数个数个数比较比较比较比较大大大大小,输出其中最大的数的程序实现问题?小,输出其中最大的数的程序实现问题?小,输出其中最大的数的程序实现问题?小,输出其中最大的数的程序实现问题?返回本节目录返回本节目录#includestdio.hint main()int a,b,c,max;scanf(%d,%d,%d,&a,&b,&c);max=a;if(ab)max=b;if(maxc)max=c;printf(max=%dn,max);return 0;#includestdio.hint main()int a,max,i=0;printf(input a=?);scanf(%d,&a);max=a;while(i10)printf(input a=?);scanf(%d,&a);if(maxa)max=a;printf(max=%dn,max);return 0;商商商商商商洛洛洛洛洛洛学学学学学学院院院院院院 C C C C C C语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计问题提出问题提出问题提出问题提出2 2、由上节实验作业:输入一个同学的某门课程成绩,输出其课程成绩对应等由上节实验作业:输入一个同学的某门课程成绩,输出其课程成绩对应等级中,如何通过程序判断保证输入成绩数据的正确性?(级中,如何通过程序判断保证输入成绩数据的正确性?(0=score=1000=score=100)返回本节目录返回本节目录#include int main()float score;char grade;printf(请输入学生成绩请输入学生成绩:);scanf(%f,&score);while(score100|score0)printf(n 输入有误输入有误,请重输请重输);printf(请再输入学生成绩请再输入学生成绩:);scanf(%f,&score);switch(int)(score/10)case 10:case 9:grade=A;break;case 8:grade=B;break;case 7:grade=C;break;case 6:grade=D;break;case 5:case 4:case 3:case 2:case 1:case 0:grade=E;printf(成绩是成绩是%5.1f,相应的等级相应的等级是是%cn,score,grade);return 0;循环结构的引入循环结构的引入商商商商商商洛洛洛洛洛洛学学学学学学院院院院院院 C C C C C C语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计循环结构的三种基本语句循环结构的三种基本语句循环结构的三种基本语句循环结构的三种基本语句 C C语言共有三种类型的循环语句,语言共有三种类型的循环语句,语言共有三种类型的循环语句,语言共有三种类型的循环语句,whilewhile、do-whiledo-while和和和和forfor语句。前两个称为条件循环,即根据条件来决定是否语句。前两个称为条件循环,即根据条件来决定是否语句。前两个称为条件循环,即根据条件来决定是否语句。前两个称为条件循环,即根据条件来决定是否继续循环;后一个称为计数循环,即根据设定的执行次继续循环;后一个称为计数循环,即根据设定的执行次继续循环;后一个称为计数循环,即根据设定的执行次继续循环;后一个称为计数循环,即根据设定的执行次数来执行循环。数来执行循环。数来执行循环。数来执行循环。pwhile语句语句 do-while语句语句pfor 语句语句返回本节目录返回本节目录商商商商商商洛洛洛洛洛洛学学学学学学院院院院院院 C C C C C C语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计5.1 while5.1 while语句语句语句语句返回本节目录返回本节目录1 1.whilewhile语句的一般形式语句的一般形式 while()说说明明:while语语句句是是C的的关关键键字字,其其后后面面的的一一对对括括号号中中的的,可可以以是是C语语言言的的任任意意合合法法表表达达式式,由由它它来来控控制制循循环环体体语语句句是是否否执执行行,括括号号不不能能省省略略。可可以以是是一一条条语语句句,也也可可以以是是多多条条语语句句,一一般般来来说说循循环环体体是是一一条条语语句句时时不不用用加加,如如果果是是多多条条语语句句,就就一一定定要要加加 构构成成复复合合语语句句。其其中中的的语语句句可可以以是是空空语语句句、表表达达式式语语句句或或作作为为循循环环体体一一部部分分的的复复合合语语句句,如如果果循循环环体体是是一一个个空空语语句句,表表示示不不执执行任何操作(一般用于延时)。行任何操作(一般用于延时)。商商商商商商洛洛洛洛洛洛学学学学学学院院院院院院 C C C C C C语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计返回本节目录返回本节目录5.1 while5.1 while语句语句语句语句图4-1While循环流程图2 2.whilewhile语句的执行过程语句的执行过程 先先计计算算while后后值值。当当值值为为非非零零时时(逻逻辑辑真真值值),则则执执行行循循环环体体语语句句,再再继继续续重重复复计计算算判判断断的的值值;直直到到当当值值为为零零时时(逻逻辑辑假假值值)则则退退出出while循环,执行循环,执行while循环的后续语句。循环的后续语句。商商商商商商洛洛洛洛洛洛学学学学学学院院院院院院 C C C C C C语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计3.while3.while语句应用实例语句应用实例 例【例【1】用】用while语句实现求语句实现求1+2+100的和的和,并将结果输出。,并将结果输出。#include stdio.h main()int sum=0,i=1;while(i=100)sum=sum+i;i+;printf(sum=%dn,sum);运行结果:运行结果:sum=5050返回本节目录返回本节目录5.1 while5.1 while语句语句语句语句商商商商商商洛洛洛洛洛洛学学学学学学院院院院院院 C C C C C C语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计do while();说说明明:do是是C语语言言的的关关键键字字,必必须须和和while联联合合使使用用。do-while循循环环由由do开开始始,到到while结结束束在在while结结束束后后必必须须有有分分号号,它表示该语句的结束。其它同它表示该语句的结束。其它同while循环语句。循环语句。5.2 do-while5.2 do-while语句语句语句语句1.do-while语句的一般形式返回本节目录返回本节目录while后必后必须有分号!须有分号!商商商商商商洛洛洛洛洛洛学学学学学学院院院院院院 C C C C C C语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计返回本节目录返回本节目录图图4-2 do-while 循环流程图循环流程图5.2 do-while5.2 do-while语句语句语句语句2.do-while语句的执行过程(1)先执行)先执行do后面的后面的。(2)再再计计算算while后后的的值值。当当值值为为非非零零时时(逻逻辑辑真真值值),继继续续转转去去执执行行步步骤骤(1)。直直到到当当值值为为零零时时(逻逻辑假值),则执行步骤(辑假值),则执行步骤(3)退出循环。)退出循环。(3)退出)退出while循环。循环。商商商商商商洛洛洛洛洛洛学学学学学学院院院院院院 C C C C C C语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计运行结果:运行结果:sum=50503.do-while3.do-while语句实例语句实例【例【例2】用】用do-while语句实现求语句实现求1+2+100的和。的和。返回本节目录返回本节目录#include stdio.h main()int sum=0,i=1;do sum=sum+i;i+;while(i=100);printf(“sum=%dn,sum);5.2 do-while5.2 do-while语句语句语句语句商商商商商商洛洛洛洛洛洛学学学学学学院院院院院院 C C C C C C语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计5.3 for 5.3 for 语句语句语句语句for语语句句是是C语语言言提提供供的的一一种种在在功功能能上上比比前前面面两两种种循循环环语语句句更更强强的的一一种种循循环环语句语句。for循环语句格式如下:循环语句格式如下:for(;)返回本节目录返回本节目录1 1.forfor语句的一般形式语句的一般形式说明:说明:for是是C语言的关键字,三个表达式之间的必须用分号语言的关键字,三个表达式之间的必须用分号“;”隔开。隔开。三个表达式可以是任意形式的三个表达式可以是任意形式的C表达式,通常主要用于表达式,通常主要用于for循环的控制。循环的控制。一般一般用于计算循环变量初始值,用于计算循环变量初始值,为循环体判断条件,为循环体判断条件,改变循环变量的值。改变循环变量的值。在某种情况下,用在某种情况下,用for语句表示循环,显得紧凑而清晰。它能利用语句表示循环,显得紧凑而清晰。它能利用自动地使循环变量发生改变,而自动地使循环变量发生改变,而while和和do-while结构要在循环体中结构要在循环体中改变循环条件的值。改变循环条件的值。商商商商商商洛洛洛洛洛洛学学学学学学院院院院院院 C C C C C C语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计返回本节目录返回本节目录2.for2.for语句的执行过程语句的执行过程首先计算首先计算。求求的的值值;若若其其值值为为非非零零,则则转转去去执执行行;若若的值为零,则转去执行的值为零,则转去执行,结束,结束for语句。语句。执行一次执行一次for循环体。循环体。求解求解,转,转执行。执行。结束循环,执行循环之后的语句。结束循环,执行循环之后的语句。商商商商商商洛洛洛洛洛洛学学学学学学院院院院院院 C C C C C C语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计返回本节目录返回本节目录5.3 for 5.3 for 语句语句语句语句图图5-3 for 循环流程图循环流程图表达式1表达式2循环体表达式3假真商商商商商商洛洛洛洛洛洛学学学学学学院院院院院院 C C C C C C语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计返回本节目录返回本节目录5.3 for 5.3 for 语句语句语句语句3.for3.for语句实例语句实例#includestdio.hmain()intsum=0;for(i=1;i=100;i+)sum=sum+i;printf(sum=%dn,sum);运行结果:sum=5050【例【例3】用】用for语句实现求语句实现求1-100之和。之和。商商商商商商洛洛洛洛洛洛学学学学学学院院院院院院 C C C C C C语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计返回本节目录返回本节目录由于C语言中表达式的形式十分丰富,对for语句的三个控制表达式可以灵活运用,因此造成for语句形式多种多样,使用灵活。(3)三个控制表达式全部为空)三个控制表达式全部为空for循环的三个表达式中,任何一个都可以省略,但是分号“;”不可省略。所以下面的写法:for(;)形成一个无限循环,即死循环。5.3 for 5.3 for 语句语句语句语句(1)为空语句为空语句如上例3中求1-100的和,由完成的初始化可提到循环之前完成。(2)为空语句为空语句 由完成的调整循环变量的值可放在循环体内完成。商商商商商商洛洛洛洛洛洛学学学学学学院院院院院院 C C C C C C语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计返回本节目录返回本节目录上节回顾上节回顾 C C语言共有三种类型的循环语句,语言共有三种类型的循环语句,语言共有三种类型的循环语句,语言共有三种类型的循环语句,whilewhile、do-whiledo-while和和和和forfor语句。语句。语句。语句。前两个称为条件循环,即根据条件来决定是否继续循环;后一前两个称为条件循环,即根据条件来决定是否继续循环;后一前两个称为条件循环,即根据条件来决定是否继续循环;后一前两个称为条件循环,即根据条件来决定是否继续循环;后一个称为计数循环,即根据设定的执行次数来执行循环。个称为计数循环,即根据设定的执行次数来执行循环。个称为计数循环,即根据设定的执行次数来执行循环。个称为计数循环,即根据设定的执行次数来执行循环。pwhile语句语句 pdo-while语句语句pfor 语句语句商商商商商商洛洛洛洛洛洛学学学学学学院院院院院院 C C C C C C语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计返回本节目录返回本节目录5.4 三种循环语句的比较 在在C语言中语言中,以上三种循环语句一般可以相互代替用来处理同以上三种循环语句一般可以相互代替用来处理同一问题,一问题,但具体使用时又存在一些细微差别。但具体使用时又存在一些细微差别。需要用户特别注意一下几点:需要用户特别注意一下几点:(1)while和和do-while循环,只在循环,只在while后面指定循环条件,后面指定循环条件,在在循环体中应包含使循环趋于结束的语句循环体中应包含使循环趋于结束的语句(如(如i+,或或i=i+1等)。等)。for语句使用形式灵活,功能更强,语句使用形式灵活,功能更强,一般凡能用一般凡能用while循环能完成的循循环能完成的循环,用环,用for循环都能实现,循环都能实现,但但for循环更适合于解决循环次数已知循环更适合于解决循环次数已知的循环问题。的循环问题。商商商商商商洛洛洛洛洛洛学学学学学学院院院院院院 C C C C C C语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计返回本节目录返回本节目录商商商商商商洛洛洛洛洛洛学学学学学学院院院院院院 C C C C C C语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计5.4 三种循环语句的比较 (2)用)用while和和do-while循环时,循环时,循环变量初始化的工作应在循环变量初始化的工作应在while和和do-while语句之前完成语句之前完成。而。而for语句语句可以在表达式可以在表达式1中实现循中实现循环变量的初始化。环变量的初始化。(3)while和和for循环是先测试表达式,后执行循环体,循环是先测试表达式,后执行循环体,属当型属当型循环;循环;而而do-while语句是先执行一次循环体,再判断表达式,语句是先执行一次循环体,再判断表达式,属直属直到型循环。到型循环。商商商商商商洛洛洛洛洛洛学学学学学学院院院院院院 C C C C C C语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计5.5 5.5 循环的嵌套循环的嵌套 C C C C C C语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计 (V VVi iis ssu uua aal ll C CC+6 66.0 00环环环环环环境境境境境境)返回本节目录返回本节目录 在一个循环内又完整地包含另一个循环,称为循环的嵌套,即循环体自身包含循环语句。前面介绍了三种类型的循环,它们自己本身可以嵌套,如在for循环中包含另一个for循环,也可以互相嵌套,例如可以for循环中包含一个while循环或者do-while循环等等。商商商商商商洛洛洛洛洛洛学学学学学学院院院院院院 C C C C C C语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计5.5 5.5 循环的嵌套循环的嵌套 C C C C C C语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计 (V VVi iis ssu uua aal ll C CC+6 66.0 00环环环环环环境境境境境境)返回本节目录返回本节目录【例【例4】打印如下形式的乘法小九九表:】打印如下形式的乘法小九九表:1*1=12*1=22*2=43*1=33*2=63*3=99*1=99*2=189*3=279*9=81分析:分析:表体共九行表体共九行,所以首先考虑一个打印九行的算法:,所以首先考虑一个打印九行的算法:for(i=1;i=9;i+)打印第打印第i行行其其次次考考虑虑:如如何何打打印印第第i行行。每每行行都都有有i个个表表达达式式?*?=积积,可以写为:for(j=1;j=i;j+)打印第打印第j个表达式个表达式商商商商商商洛洛洛洛洛洛学学学学学学院院院院院院 C C C C C C语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计循环的嵌套实例循环的嵌套实例 C C C C C C语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计 (V VVi iis ssu uua aal ll C CC+6 66.0 00环环环环环环境境境境境境)返回本节目录返回本节目录打印第j个表达式,可写为:printf(%d*%d=%-3d,i,j,i*j);在写这个语句时,不写换行,只能在第j个表达式输出后写一个语句使之换行。printf(n);商商商商商商洛洛洛洛洛洛学学学学学学院院院院院院 C C C C C C语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计循环的嵌套实例循环的嵌套实例 C C C C C C语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计 (V VVi iis ssu uua aal ll C CC+6 66.0 00环环环环环环境境境境境境)返回本节目录返回本节目录#includestdio.hintmain()inti,j;/*i,j分别控制行和列的输出*/for(i=1;i=9;i+)for(j=1;j=i;j+)printf(%d*%d=%-3d,i,j,i*j);printf(n);/*另起一行*/return0;商商商商商商洛洛洛洛洛洛学学学学学学院院院院院院 C C C C C C语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计4.6 break4.6 break语句和语句和continuecontinue语句语句 C C C C C C语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计 (V VVi iis ssu uua aal ll C CC+6 66.0 00环环环环环环境境境境境境)返回本节目录返回本节目录1.break1.break语句语句2.continue2.continue语句语句商商商商商商洛洛洛洛洛洛学学学学学学院院院院院院 C C C C C C语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计1.break1.break语句语句 C C C C C C语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计 (V VVi iis ssu uua aal ll C CC+6 66.0 00环环环环环环境境境境境境)返回目录返回目录前面已经介绍过用break语句跳出当前的switch语句流程。在循环结构中,也可以用break语句使流程跳出本层循环体,从而提前强制性结束本层循环。break语句的一般形式为:break;商商商商商商洛洛洛洛洛洛学学学学学学院院院院院院 C C C C C C语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计1.break1.break语句语句 C C C C C C语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计 (V VVi iis ssu uua aal ll C CC+6 66.0 00环环环环环环境境境境境境)返回目录返回目录【例【例5】在循环体中】在循环体中break语句执行示例。语句执行示例。#includestdio.hmain()inti,s=0;for(i=1;i5)break;printf(s=%dn,s);printf(使用break语句时,s的最终值为:%dn,s);商商商商商商洛洛洛洛洛洛学学学学学学院院院院院院 C C C C C C语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计 C C C C C C语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计 (V VVi iis ssu uua aal ll C CC+6 66.0 00环环环环环环境境境境境境)break语句使用说明:(1)只能在switch语句体和循环体内使用break语句。返回目录返回目录1.break1.break语句语句(2)当break语句出现在,其作用是跳出该switch语句体。当break语句出现在循环体中,但并不在switch语句体内时,则在执行break语句后,使流程跳出本层循环体。商商商商商商洛洛洛洛洛洛学学学学学学院院院院院院 C C C C C C语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计2.Continue2.Continue语句语句 C C C C C C语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计 (V VVi iis ssu uua aal ll C CC+6 66.0 00环环环环环环境境境境境境)continue语句的一般形式为:continue;返回目录返回目录商商商商商商洛洛洛洛洛洛学学学学学学院院院院院院 C C C C C C语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计2.Continue2.Continue语句语句 C C C C C C语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计 (V VVi iis ssu uua aal ll C CC+6 66.0 00环环环环环环境境境境境境)#includestdio.hmain()inti,s=0;for(i=1;i5)continue;printf(s=%dn,s);printf(使用continue语句时,s的最终值为:%dn,s);返回目录返回目录【例例6】将将前前例例中中的的break语语句句改改用用continue语语句句,来来比比较较两者的区别。两者的区别。商商商商商商洛洛洛洛洛洛学学学学学学院院院院院院 C C C C C C语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计2.Continue2.Continue语句语句 C C C C C C语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计 (V VVi iis ssu uua aal ll C CC+6 66.0 00环环环环环环境境境境境境)返回目录返回目录商商商商商商洛洛洛洛洛洛学学学学学学院院院院院院 C C C C C C语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计ContinueContinue和和breakbreak语句的比较语句的比较 C C C C C C语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计 (V VVi iis ssu uua aal ll C CC+6 66.0 00环环环环环环境境境境境境)返回目录返回目录商商商商商商洛洛洛洛洛洛学学学学学学院院院院院院 C C C C C C语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计5.7 5.7 编程实例编程实例1 1 C C C C C C语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计 (V VVi iis ssu uua aal ll C CC+6 66.0 00环环环环环环境境境境境境)返回本节目录返回本节目录【例【例7】编程输出如下图形:】编程输出如下图形:*#includestdio.hmain()inti,j;for(i=1;i=5;i+)for(j=1;j=10-i;j+)printf();for(j=1;j=2*i-1;j+)printf(*);printf(n);商商商商商商洛洛洛洛洛洛学学学学学学院院院院院院 C C C C C C语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计5.7 5.7 编程实例编程实例2 2 C C C C C C语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计 (V VVi iis ssu uua aal ll C CC+6 66.0 00环环环环环环境境境境境境)返回本节首返回本节首【例【例8 8】求整数】求整数3-1003-100中的素数。为了检查某数是否。中的素数。为了检查某数是否。采用的方法:辗辗转转相相除除法法。即即从从n=3起起直直到到100止止,逐逐个个用用i=2n/2去去试试除除n,只要有一个能整除,说明该数不是素数。,只要有一个能整除,说明该数不是素数。商商商商商商洛洛洛洛洛洛学学学学学学院院院院院院 C C C C C C语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计5.7 5.7 编程实例编程实例2 2 C C C C C C语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计 (V VVi iis ssu uua aal ll C CC+6 66.0 00环环环环环环境境境境境境)返回本节首返回本节首#includeintmain()inti,n,num;for(n=3,num=0;n=100;n+)for(i=2;i1e-6)t=t*n;/*求n!*/e=e+1/t;/*实现求n!的倒数的和*/n+;printf(e=%8.6fn,e);运行结果:运行结果:e=2.7182825.8 5.8 综合实训综合实训1 1商商商商商商洛洛洛洛洛洛学学学学学学院院院院院院 C C C C C C语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计5.8 5.8 综合实训综合实训2 2 C C C C C C语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计 (V VVi iis ssu uua aal ll C CC+6 66.0 00环环环环环环境境境境境境)返回本节目录返回本节目录【例例10】百百钱钱百百鸡鸡问问题题。公公元元前前,我我国国古古代代数数学学家家张张丘丘建建在在算算经经一一书书中中提提出出了了百百鸡鸡问问题题:鸡鸡翁翁一一,值值钱钱五五,鸡鸡母母一一,值值钱钱三三,鸡鸡雏雏三三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?分析:这是一个有名的不定方程问题。分析:这是一个有名的不定方程问题。设:cocks:鸡翁数、hens:鸡母数、chicks:鸡雏数,则有:cocks+hens+chicks=1005*cocks+3*hens+chicks/3=100商商商商商商洛洛洛洛洛洛学学学学学学院院院院院院 C C C C C C语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计5.8 5.8 综合实训综合实训2 2 C C C C C C语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计 (V VVi iis ssu uua aal ll C CC+6 66.0 00环环环环环环境境境境境境)返回本节目录返回本节目录【例例10】百百钱钱百百鸡鸡问问题题。公公元元前前,我我国国古古代代数数学学家家张张丘丘建建在在算算经经一一书书中中提提出出了了百百鸡鸡问问题题:鸡鸡翁翁一一,值值钱钱五五,鸡鸡母母一一,值值钱钱三三,鸡鸡雏雏三三值值钱钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?据上述不定方程,很容易得到三个变量的取值条件:据上述不定方程,很容易得到三个变量的取值条件:cocks:0-19之间的整数。之间的整数。hens:0-33之间的整数。之间的整数。chicks:0-100之间的整数。之间的整数。解解题题思思路路:依次取cocks值域中的一个值,然后再在试取hens值域中的每一个值,根据前两者取值,求出chicks后,看是否合乎题意,合乎者为解。商商商商商商洛洛洛洛洛洛学学学学学学院院院院院院 C C C C C C语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计 C C C C C C语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计 (V VVi iis ssu uua aal ll C CC+6 66.0 00环环环环环环境境境境境境)返回本节目录返回本节目录#includestdio.hintmain()intcocks,hens,chicks;for(cocks=1;cocks=19;cocks+)for(hens=1;hens=33;hens+)chicks=100-cocks-hens;if(5*cocks+3*hens+chicks/3.0=100)printf(cocks=%d,hens=%d,chicks=%dn,cocks,hens,chicks);return0;程序运行结果如下:程序运行结果如下:cocks=4,hens=18,chicks=78cocks=8,hens=11,chicks=81cocks=12,hens=4,chicks=84商商商商商商洛洛洛洛洛洛学学学学学学院院院院院院 C C C C C C语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计课后作业布置课后作业布置 C C C C C C语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计 (V VVi iis ssu uua aal ll C CC+6 66.0 00环环环环环环境境境境境境)返回本节目录返回本节目录商商商商商商洛洛洛洛洛洛学学学学学学院院院院院院 C C C C C C语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计课后作业布置课后作业布置 C C C C C C语语语语语语言言言言言言程程程程程程序序序序序序设设设设设设计计计计计计 (V VVi iis ssu uua aal ll C CC+6 66.0 00环环环环环环境境境境境境)返回本节目录返回本节目录