130 likes | 235 Views
第六章. 循环结构程序设计 (二). 第六章 循环 结构程序设计. 主要内容. 一、循环嵌套 二、循环结构程序设计举例. 第六章 循环 结构程序设计. for i=1 to 4. for j=1 to 4. 输出 i*j. 换行. 一、循环嵌套. 概念. 一个循环体内又包含另一个完整的循环结构,称为循环嵌套。. 举例. 打印乘法口诀表。. 1 2 3 4 2 4 6 8 3 6 9 12 4 8 12 16. #include <stdio.h>
E N D
第六章 循环结构程序设计 (二)
第六章 循环结构程序设计 主要内容 一、循环嵌套 二、循环结构程序设计举例
第六章 循环结构程序设计 for i=1 to 4 for j=1 to 4 输出i*j 换行 一、循环嵌套 概念 一个循环体内又包含另一个完整的循环结构,称为循环嵌套。 举例 打印乘法口诀表。 1 2 3 4 2 4 6 8 3 6 9 12 4 8 12 16 #include <stdio.h> void main() { int i,j; for (i=1;i<=4;i++) { for (j=1;j<=4;j++) printf(“%4d”,i*j); printf(“\n”); } } i=1, j=1 1*1 j=2 1*2 j=3 1*3 j=4 1*4 i=2, j=1 2*1 j=2 …… i=3 i=4
第六章 循环结构程序设计 一、循环嵌套 思考1 1 2 4 3 6 9 4 8 12 16 #include <stdio.h> void main() { int i,j; for (i=1;i<=4;i++) { for (j=1;j<=i;j++) printf(“%4d”,i*j); printf(“\n”); } }
第六章 循环结构程序设计 一、循环嵌套 思考2 #include <stdio.h> void main() { int i,j; for (i=1;i<=4;i++) { for (j=1;j<=5-i;j++) printf(“%4d”,i*j); printf(“\n”); } } 1 2 3 4 2 4 6 3 6 4
第六章 循环结构程序设计 一、循环嵌套 思考3 #include <stdio.h> void main() { int i,j; for (i=1;i<=4;i++) { for (j=1;j<=4-i;j++) printf(“%4d”,’ ‘); for (j=5-i;j<=4;j++) printf(“%4d”,i*j); printf(“\n”); } } 4 6 8 6 9 12 4 8 12 16
第六章 循环结构程序设计 一、循环嵌套 思考4 1 2 3 4 4 6 8 9 12 16 #include <stdio.h> void main() { int i,j; for (i=1;i<=4;i++) { for (j=1;j<=i-1;j++) printf(“%4d”,’ ‘); for (j=i;j<=4;j++) printf(“%4d”,i*j); printf(“\n”); } }
思考:使用那一种循环控制语句? 第六章 循环结构程序设计 二、程序举例 例1 利用公式:/4=1-1/3+1/5-1/7+… 求的近似值,直到某一项的绝对值小于10-6为止。 #include <stdio.h> #include <math.h> void main() { int s; float n,t,pi; t=1;pi=0;n=1.0;s=1; while((fabs(t))>1e-6) {pi=pi+t; n=n+2; s=-s; t=s/n;} pi=pi*4; printf("pi=%10.6f\n",pi); } pi=1-1/3+… 输出4* pi s=1(-1) n=1,3,5,7… t=s/n
第六章 循环结构程序设计 二、程序举例 P116 #include <stdio.h> void main() { long int f1,f2; int i; f1=1;f2=1; for(i=1;i<=20;i++) { printf("%12ld%12ld",f1,f2); if(i%2==0) printf("\n"); f1=f1+f2; f2=f2+f1; } } 1 1 2 3 5 8 13 21 34 55 89 144 … … 例2 求Fibonacci数列的前40个数。 特点:第1、2个数为1、1。从第三个数开始,该数是其前面两个数之和。 F1=1 (n=1) F2=2 (n=2) Fn=Fn-1+Fn-2 (n>=3)
第六章 循环结构程序设计 二、程序举例 例3 判断m是否为素数。 素数(质数): 只能被1和它本身整除的数。 判别方法: 57:若2~56之间的每一个数都除不开56,则56为素数,否则56不是素数。 m, k=m-1,i=2~k : 若每一个 i 的值都除不开m,则m为素数,否则m不是素数。 k=m-1; k=[m/2];[(m+1)/2]; k=[sqrt(m)];[sqrt(m+1)] flag=1; k=m-1; for (i=2;i<=k;i++) if (m%i=0) flag=0; if (flag==1) printf(“yes!”); else printf(“no!”); k=m-1; for (i=2;i<=k;i++) if (m%i=0) break; if (i>=k+1) printf(“yes!”); else printf(“no!”);
第六章 循环结构程序设计 for m=101 to 200 ①判断m是否为素数 ②若m是素数,则输出并统计个数n. ③每输出10个素数,换行 二、程序举例 例3 输出 101~200之间的全部素数。 #include <stdio.h> #include <math.h> void main() { int m,k,i,n=0; for(m=101;m<=200;m=m+2) { k=sqrt(m); for(i=2;i<=k;i++) if(m%i==0) break; if(i>=k+1) { printf("%d ",m); n=n+1; } if(n%10==0) printf("\n"); } printf("\n"); }
第六章 循环结构程序设计 二、程序举例 例4 译密码。输入一行字符,输出其相应的密码。(119页) 译码规律:将字母变成其后的第4个字母,非字母字符不变。 #include <stdio.h> void main() { char c; while((c=getchar())!='\n') { if((c>'a'&&c<='z')||(c>'A'&&c<='Z')) { c=c+4; if((c>'Z'&&c<='Z'+4)||c>'z') c=c-26; } printf("%c\n",c); } }
第六章 循环结构程序设计 作业 P120: 6.4, 6.8, 6.6, 6.11