第六章
-
Upload
lewis-dixon -
Category
Documents
-
view
39 -
download
0
description
Transcript of 第六章
![Page 1: 第六章](https://reader036.fdocument.pub/reader036/viewer/2022082411/56812f26550346895d94bc75/html5/thumbnails/1.jpg)
1
第六章循环结构程序设计
(二)
![Page 2: 第六章](https://reader036.fdocument.pub/reader036/viewer/2022082411/56812f26550346895d94bc75/html5/thumbnails/2.jpg)
2
第六章 循环结构程序设计
一、循环嵌套
二、循环结构程序设计举例
主要内容
![Page 3: 第六章](https://reader036.fdocument.pub/reader036/viewer/2022082411/56812f26550346895d94bc75/html5/thumbnails/3.jpg)
3
概念 一个循环体内又包含另一个完整的循环结构,称为循环嵌套。
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*4i=2, j=1 2*1 j=2 ……i=3i=4
i=1, j=1 1*1 j=2 1*2 j=3 1*3 j=4 1*4i=2, j=1 2*1 j=2 ……i=3i=4
for i=1 to 4
输出 i*j
for j=1 to 4
换行
一、循环嵌套第六章 循环结构程序设计
![Page 4: 第六章](https://reader036.fdocument.pub/reader036/viewer/2022082411/56812f26550346895d94bc75/html5/thumbnails/4.jpg)
4
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”); }}
一、循环嵌套思考 1
第六章 循环结构程序设计
![Page 5: 第六章](https://reader036.fdocument.pub/reader036/viewer/2022082411/56812f26550346895d94bc75/html5/thumbnails/5.jpg)
5
#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”); }}
一、循环嵌套思考 2
1 2 3 4 2 4 6 3 6 4
第六章 循环结构程序设计
![Page 6: 第六章](https://reader036.fdocument.pub/reader036/viewer/2022082411/56812f26550346895d94bc75/html5/thumbnails/6.jpg)
6
#include <stdio.h>void main(){ int i,j; for (i=1;i<=4;i++) {for (j=1;j<=4-i;j++) p
rintf(“%4d”,’ ‘); for (j=5-i;j<=4;j++) printf(“%4d”,i*j); printf(“\n”); }}
一、循环嵌套思考 3
4 6 8 6 9 12 4 8 12 16
第六章 循环结构程序设计
![Page 7: 第六章](https://reader036.fdocument.pub/reader036/viewer/2022082411/56812f26550346895d94bc75/html5/thumbnails/7.jpg)
7
#include <stdio.h>void main(){ int i,j; for (i=1;i<=4;i++) {for (j=1;j<=i-1;j++) p
rintf(“%4d”,’ ‘); for (j=i;j<=4;j++) printf(“%4d”,i*j); printf(“\n”); }}
一、循环嵌套思考 4
1 2 3 4 4 6 8 9 12 16
第六章 循环结构程序设计
![Page 8: 第六章](https://reader036.fdocument.pub/reader036/viewer/2022082411/56812f26550346895d94bc75/html5/thumbnails/8.jpg)
8
例 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* pis=1(-1)n=1,3,5,7…t=s/n
![Page 9: 第六章](https://reader036.fdocument.pub/reader036/viewer/2022082411/56812f26550346895d94bc75/html5/thumbnails/9.jpg)
9
例 2
求 Fibonacci 数列的前 40 个数。
#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 、 2 个数为 1 、 1 。从第三个数开始,该数是其前面两个数之和。
F1=1 (n=1)
F2=2 (n=2)
Fn=Fn-1+Fn-2 (n>=3)
P116 1 1 2 3 5 8 13 21 34 55 89 144 … …
二、程序举例第六章 循环结构程序设计
![Page 10: 第六章](https://reader036.fdocument.pub/reader036/viewer/2022082411/56812f26550346895d94bc75/html5/thumbnails/10.jpg)
10
例 3 判断 m 是否为素数。
素数(质数) : 只能被 1 和它本身整除的数。
判别方法:57 :若 2~56 之间的每一个数都除不开 56 ,则 56 为素数,否则 56 不是素数。m, k=m-1 , i=2~k :若每一个 i 的值都除不开 m, 则 m 为素数,否则 m 不是素数。
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!”);
k=m-1;k=[m/2];[(m+1)/2];k=[sqrt(m)];[sqrt(m+1)]
k=m-1;k=[m/2];[(m+1)/2];k=[sqrt(m)];[sqrt(m+1)]
二、程序举例第六章 循环结构程序设计
![Page 11: 第六章](https://reader036.fdocument.pub/reader036/viewer/2022082411/56812f26550346895d94bc75/html5/thumbnails/11.jpg)
11
例 3 输出 101~200 之间的全部素数。
for m=101 to 200
①判断 m 是否为素数
②若 m 是素数,则输出并统计个数 n.
③每输出 10 个素数,换行
#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");}
二、程序举例第六章 循环结构程序设计
![Page 12: 第六章](https://reader036.fdocument.pub/reader036/viewer/2022082411/56812f26550346895d94bc75/html5/thumbnails/12.jpg)
12
例 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); }}
二、程序举例第六章 循环结构程序设计
![Page 13: 第六章](https://reader036.fdocument.pub/reader036/viewer/2022082411/56812f26550346895d94bc75/html5/thumbnails/13.jpg)
13
作业P120: 6.4, 6.8, 6.6, 6.11
第六章 循环结构程序设计