欢迎来到天天文库
浏览记录
ID:57371125
大小:43.50 KB
页数:18页
时间:2020-08-13
《循环和数组课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、循环与数组一、级数问题二、多重循环三、穷举法四、数组的应用一、级数问题级数求和要解决2个问题:通项的变化规律;求和的结束条件(按给定项数或按某种要求)。例:习题集P715题编写程序,计算当时N的值分析:本题中通项的变化规律是每次分母加1,求和的结束条件是sum>10。for(n=1;sum<=10.0;n++)sum=sum+1.0/n;例:习题集P7221题某级数的前两项A1=1,A2=1,以后各项具有关系:An=An-2+2An-1。编写程序,要求依次对于整数M=100,1000,10000求出对应的n值,使其满足Sn2、这里Sn=A1+A2+…+An。分析:本题中通项的变化规律是An=An-2+2An-1,求和的结束条件是Sn3、++)/*n是项数,从第3项开始*/{计算an,s2;if(s1=m){break;}else{s1=s2;a1=a2;a2=an;}}printf("n=%d",n-1);}二、多重循环多重循环是循环嵌套(循环套循环),要特别注意它的执行过程是外循环每执行一次,内循环要执行若干次。例:习题集P7111题编写程序,计算500~800区间内素数的个数cnt,并按所求素数的值从大到小的顺序,计算其间隔减、加之和,即第1个素数-第2个素数+第3个素数-第4个素数+第5个素数…的值sum。分析:按照题意,要对800~500区间(因为是从4、大到小)内的数逐个作出判断,而判断一个数是否为素数又要用一重循环,这样就构成了二重循环(外循环控制区间范围,内循环判断一个数是否为素数),每找出一个素数,cnt就要加1,再根据cnt的奇偶对sum进行加或减计算。cnt=0,sum=0;循环(i=800~500){判断i是否为素数;if(i是素数){cnt++;输出cnt,i;if(cnt为偶数)sum-=i;elsesum+=i;}}输出sum;例:习题集P7115题编写程序验证下列结论:任何一个自然数n的立方,都等于n个连续奇数之和。例如:13=1;23=3+5;33=7+9+11。要求程序对5、每个输入的自然数计算并输出相应的连续奇数,直到输入的自然数为0时止。分析:首先考虑输入的自然数个数不确定,可用while语句对每一个数进行处理,在循环体内输入n,然后找连续n个奇数,使它们的和等于n的立方。接下来要考虑的是连续n个奇数的起始数是未知的,因此需要循环测试。设变量k为起始数(k的初值为1),再设一个变量j从k开始循环累加连续n个奇数,若求出的和s等于n的立方,则结束测试k的循环,从k开始输出连续n个奇数,否则k=k+2;继续循环测试。while(1)/*该循环控制多个自然数*/{输入一个自然数n);if(n==0)break;/*当输6、入0时,跳出循环*/k=1;do/*该循环找出连续n个奇数,k是起始数*/{s=0;for(i=1,j=k;i<=n;i++,j=j+2)s+=j;k+=2;}while(s!=n*n*n);输出n;输出从k开始的连续n个奇数}三、穷举法穷举法是指不重复,不遗漏地穷举所有可能情况,以便从中寻求满足条件的结果。在穷举法编程中,主要使用循环语句和选择语句。循环语句用于列举所有的可能性;而选择语句判定当前的条件是否为所求的解。例:习题集P7222题一个自然数的七进制表达式是一个三位数,而这个自然数的九进制表示也是一个三位数,且这两个三位数的数码正好相反7、,编写程序,求这个自然数。分析:三位九进制最大为(888)9即(728)10,三位七进制最小为(100)7即(49)10,因此要找的自然数一定在此范围内,可采用穷举法对该范围内的每一个数都判断是否满足条件。为了判断条件,要将自然数分别按九进制和七进制分解出三位数码,然后按题目给出的条件判断。for(n=49;n<=728;n++){分解出七进制的三位数a1,b1,c1,分解出九进制的三位数a2,b2,c2if(c1==a2&&b1==b2&&c2==a1){输出n;输出n的9进制三位数和7进制三位数;break;}}四、数组的应用对数组进行操作,8、通常是依靠循环来实现的。因此,数组和循环是分不开的。例:习题集P973题编写程序计算m行n列(m和n小于10)整型数组a周边元素之和(即
2、这里Sn=A1+A2+…+An。分析:本题中通项的变化规律是An=An-2+2An-1,求和的结束条件是Sn3、++)/*n是项数,从第3项开始*/{计算an,s2;if(s1=m){break;}else{s1=s2;a1=a2;a2=an;}}printf("n=%d",n-1);}二、多重循环多重循环是循环嵌套(循环套循环),要特别注意它的执行过程是外循环每执行一次,内循环要执行若干次。例:习题集P7111题编写程序,计算500~800区间内素数的个数cnt,并按所求素数的值从大到小的顺序,计算其间隔减、加之和,即第1个素数-第2个素数+第3个素数-第4个素数+第5个素数…的值sum。分析:按照题意,要对800~500区间(因为是从4、大到小)内的数逐个作出判断,而判断一个数是否为素数又要用一重循环,这样就构成了二重循环(外循环控制区间范围,内循环判断一个数是否为素数),每找出一个素数,cnt就要加1,再根据cnt的奇偶对sum进行加或减计算。cnt=0,sum=0;循环(i=800~500){判断i是否为素数;if(i是素数){cnt++;输出cnt,i;if(cnt为偶数)sum-=i;elsesum+=i;}}输出sum;例:习题集P7115题编写程序验证下列结论:任何一个自然数n的立方,都等于n个连续奇数之和。例如:13=1;23=3+5;33=7+9+11。要求程序对5、每个输入的自然数计算并输出相应的连续奇数,直到输入的自然数为0时止。分析:首先考虑输入的自然数个数不确定,可用while语句对每一个数进行处理,在循环体内输入n,然后找连续n个奇数,使它们的和等于n的立方。接下来要考虑的是连续n个奇数的起始数是未知的,因此需要循环测试。设变量k为起始数(k的初值为1),再设一个变量j从k开始循环累加连续n个奇数,若求出的和s等于n的立方,则结束测试k的循环,从k开始输出连续n个奇数,否则k=k+2;继续循环测试。while(1)/*该循环控制多个自然数*/{输入一个自然数n);if(n==0)break;/*当输6、入0时,跳出循环*/k=1;do/*该循环找出连续n个奇数,k是起始数*/{s=0;for(i=1,j=k;i<=n;i++,j=j+2)s+=j;k+=2;}while(s!=n*n*n);输出n;输出从k开始的连续n个奇数}三、穷举法穷举法是指不重复,不遗漏地穷举所有可能情况,以便从中寻求满足条件的结果。在穷举法编程中,主要使用循环语句和选择语句。循环语句用于列举所有的可能性;而选择语句判定当前的条件是否为所求的解。例:习题集P7222题一个自然数的七进制表达式是一个三位数,而这个自然数的九进制表示也是一个三位数,且这两个三位数的数码正好相反7、,编写程序,求这个自然数。分析:三位九进制最大为(888)9即(728)10,三位七进制最小为(100)7即(49)10,因此要找的自然数一定在此范围内,可采用穷举法对该范围内的每一个数都判断是否满足条件。为了判断条件,要将自然数分别按九进制和七进制分解出三位数码,然后按题目给出的条件判断。for(n=49;n<=728;n++){分解出七进制的三位数a1,b1,c1,分解出九进制的三位数a2,b2,c2if(c1==a2&&b1==b2&&c2==a1){输出n;输出n的9进制三位数和7进制三位数;break;}}四、数组的应用对数组进行操作,8、通常是依靠循环来实现的。因此,数组和循环是分不开的。例:习题集P973题编写程序计算m行n列(m和n小于10)整型数组a周边元素之和(即
3、++)/*n是项数,从第3项开始*/{计算an,s2;if(s1=m){break;}else{s1=s2;a1=a2;a2=an;}}printf("n=%d",n-1);}二、多重循环多重循环是循环嵌套(循环套循环),要特别注意它的执行过程是外循环每执行一次,内循环要执行若干次。例:习题集P7111题编写程序,计算500~800区间内素数的个数cnt,并按所求素数的值从大到小的顺序,计算其间隔减、加之和,即第1个素数-第2个素数+第3个素数-第4个素数+第5个素数…的值sum。分析:按照题意,要对800~500区间(因为是从
4、大到小)内的数逐个作出判断,而判断一个数是否为素数又要用一重循环,这样就构成了二重循环(外循环控制区间范围,内循环判断一个数是否为素数),每找出一个素数,cnt就要加1,再根据cnt的奇偶对sum进行加或减计算。cnt=0,sum=0;循环(i=800~500){判断i是否为素数;if(i是素数){cnt++;输出cnt,i;if(cnt为偶数)sum-=i;elsesum+=i;}}输出sum;例:习题集P7115题编写程序验证下列结论:任何一个自然数n的立方,都等于n个连续奇数之和。例如:13=1;23=3+5;33=7+9+11。要求程序对
5、每个输入的自然数计算并输出相应的连续奇数,直到输入的自然数为0时止。分析:首先考虑输入的自然数个数不确定,可用while语句对每一个数进行处理,在循环体内输入n,然后找连续n个奇数,使它们的和等于n的立方。接下来要考虑的是连续n个奇数的起始数是未知的,因此需要循环测试。设变量k为起始数(k的初值为1),再设一个变量j从k开始循环累加连续n个奇数,若求出的和s等于n的立方,则结束测试k的循环,从k开始输出连续n个奇数,否则k=k+2;继续循环测试。while(1)/*该循环控制多个自然数*/{输入一个自然数n);if(n==0)break;/*当输
6、入0时,跳出循环*/k=1;do/*该循环找出连续n个奇数,k是起始数*/{s=0;for(i=1,j=k;i<=n;i++,j=j+2)s+=j;k+=2;}while(s!=n*n*n);输出n;输出从k开始的连续n个奇数}三、穷举法穷举法是指不重复,不遗漏地穷举所有可能情况,以便从中寻求满足条件的结果。在穷举法编程中,主要使用循环语句和选择语句。循环语句用于列举所有的可能性;而选择语句判定当前的条件是否为所求的解。例:习题集P7222题一个自然数的七进制表达式是一个三位数,而这个自然数的九进制表示也是一个三位数,且这两个三位数的数码正好相反
7、,编写程序,求这个自然数。分析:三位九进制最大为(888)9即(728)10,三位七进制最小为(100)7即(49)10,因此要找的自然数一定在此范围内,可采用穷举法对该范围内的每一个数都判断是否满足条件。为了判断条件,要将自然数分别按九进制和七进制分解出三位数码,然后按题目给出的条件判断。for(n=49;n<=728;n++){分解出七进制的三位数a1,b1,c1,分解出九进制的三位数a2,b2,c2if(c1==a2&&b1==b2&&c2==a1){输出n;输出n的9进制三位数和7进制三位数;break;}}四、数组的应用对数组进行操作,
8、通常是依靠循环来实现的。因此,数组和循环是分不开的。例:习题集P973题编写程序计算m行n列(m和n小于10)整型数组a周边元素之和(即
此文档下载收益归作者所有