许多同学已经学习了阶乘的求法,比如要求整数n的阶乘,则n!=1×2×3×…×(n-1)×n。如:5!=1×2×3×4×5=120
之前我们学习过while循环、do-while循环,有英语基础的同学基本能读懂程序;但for循环里面的三个式子对于没有学过编程的同学来说是难以理解的,甚至觉得毫无关联,老师将通过本案例来告诉同学们三个式子的含义:for(条件式1 ; 条件式2 ;条件式3 )
for(单次表达式;条件表达式;末尾循环体),即 for(初始动作;循环继续的条件;循环每轮要做的动作)
其中,表示式皆可以省略,但分号不可省略,因为“;”可以代表一个空语句,省略了之后语句减少,即为语句格式发生变化,则编译器不能识别而无法进行编译。
可以这样:for( ; ; )
也可以这样:for( ; 条件式2 ; ) 题目描述: 输入一个正整数N,输出N的阶乘。 样例输入: 4 样例输出: 24 实现思路:
问题中的n需要我们从键盘输入。要计算n的阶乘,就得有一个变量i从1遍历到n(循环实现),进入循环用一个变量result(初始值须为1)来“记住”本次的乘积result×i,随着i的增加,result=1×1,result=1×1×2,result=1×1×2×3…,当i增加到n时,result=n!,然后输出result。
while循环:
for循环:
思考题:我们的程序是通过1乘到n来计算n!,是否可以换个方向计算呢?从n乘到1,如果按照这个思路,我们的程序需要哪些改动呢?
之前我们学习过while循环、do-while循环,有英语基础的同学基本能读懂程序;但for循环里面的三个式子对于没有学过编程的同学来说是难以理解的,甚至觉得毫无关联,老师将通过本案例来告诉同学们三个式子的含义:for(条件式1 ; 条件式2 ;条件式3 )
for(单次表达式;条件表达式;末尾循环体),即 for(初始动作;循环继续的条件;循环每轮要做的动作)
其中,表示式皆可以省略,但分号不可省略,因为“;”可以代表一个空语句,省略了之后语句减少,即为语句格式发生变化,则编译器不能识别而无法进行编译。
可以这样:for( ; ; )
也可以这样:for( ; 条件式2 ; ) 题目描述: 输入一个正整数N,输出N的阶乘。 样例输入: 4 样例输出: 24 实现思路:
问题中的n需要我们从键盘输入。要计算n的阶乘,就得有一个变量i从1遍历到n(循环实现),进入循环用一个变量result(初始值须为1)来“记住”本次的乘积result×i,随着i的增加,result=1×1,result=1×1×2,result=1×1×2×3…,当i增加到n时,result=n!,然后输出result。
while循环:
#include int main() { int n ,i = 1,result = 1; //小套路:对于求和程序,记录结果的变量初始化为0;对于求积程序,记录结果的变量初始化为1 scanf("%d", &n); while(i <= n) { result*=i; // 复合运算result=result*i i++; } printf("n的阶乘为:%d\n", result); return 0;}
for循环:
#include int main() { int n ,i = 1,result = 1; //小套路:对于求和程序,记录结果的变量初始化为0;对于求积程序,记录结果的变量初始化为1 scanf("%d", &n); for (i = 1; i <= n; i++) //i++ i+=1 i+=1都可以 //读成:对于一开始的i=1,如果i<=n,那么重复做循环体result=result*i,每一轮循环做完后,使i=i+1 { result*=i; // 复合运算result=result*i } printf("n的阶乘为:%d\n", result); return 0;}
思考题:我们的程序是通过1乘到n来计算n!,是否可以换个方向计算呢?从n乘到1,如果按照这个思路,我们的程序需要哪些改动呢?
连云港唯一一家正规编程机构,非拼装类机器人!专业的团队,南邮、东南教授研发的从入门到参加全国信息学奥林匹克竞赛课程体系!优质竞赛教研团队!
www.lygnck.com
搜索小程序查看课程体系:青少年编程与机器人教育1
我们的地址:连云港市海州区苍梧路苍梧小区北门东首20-6三楼
徐老师:17305185500
微信:18651728829