C语言循环结构程序设计1
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
其作用是每读入一个字符后立即输出该字符,直到输入 一个“换行”为止。请注意,从终端键盘向计算机输入 时,是在按Enter键以后才将一批数据一起送到内存缓 冲区中去的。
6 break和continue语句
break语句 break语句 break语句可以用来从循环体 内跳出循环体,即提前结 束循环,接着执行循环下 面的语句 一般形式: 一般形式: break; 注意: 注意:break语句不能用于循 环语句和switch语句之外 的任何其他语句中。
5 for语句
例1:求Fibonacci数列前40个数。 求Fibonacci数列前40个数。 数列前40个数 F1 =1 (n=1) F2 =1 (n=2) Fn = Fn-1 +Fn –2 (n>=3) 2 分析: 分析: 为前两项n 项的和。 第n项,为前两项n-1和n-2项的和。 如用f1 f2分别表示 前两项。 分别表示, 如用f1 、f2分别表示,前两项。 则后两项f1 f2为 f1、 则后两项f1、f2为:f1=f1+f2; f2=f2+f1;
5 for语句
一般形式: for(表达式1;表达式2;表达式3) 语句; 执行过程:
1.先计算wk.baidu.com达式1 2.计算表达式2,为真执行循环体内程序,否则 结束循环 3.计算表达式3 4.转到第二步继续执行
5 for语句
执行表达式1 执行表达式 表达式2? 表达式
成立 不成立
循环初始条件 循环控制条件
t=1/i; s+=t;
}
i++;
while(t>=0.00001); } printf(“s=%d\n”,s);
4 do…while语句
例4:用 公式,求∏,最后一项绝对值<10-6
分析: 分析: (1)观察问题,从中找出规律。 观察问题, 观察问题 从中找出规律。 为各项1、 为各项 、-1/3、+1/5、-1/7…的 、 、 的 前一项求得后一项。 和,可根据 前一项求得后一项。 后项与前项符号相反,分母大2。 后项与前项符号相反,分母大 。 (2)设计算法 设计算法 k 分母 m 符号 t m/k
语句
3 while语句
例1:输出1~200中所有能被4整除的整数。
i=1 i<=200
i % 4==0 T 输出 i i++ F
#include <stdio.h> void main() { int i=1; while(i<=200) { if( i%4==0) printf(“%d,”,i); i++;
1 1 1 π /4 ≈1− + − +K 3 5 7
4 do…while语句
t=1,pi=0,m=1,k=1 pi=pi+t k=k+2 m=-m t=m/k | t |>=10-6 pi=pi*4 输出pi
#include "math.h" void main() { int s; float n,t,pi; t=1;pi=0;k=1;m=1; do { pi=pi+t; k=k+2; m=m=-m; t=m/k; ((fabs(t))>=1e-6); } while ((fabs(t))>=1e-6); pi=pi*4; printf("\npi=%10.6f\ printf("\npi=%10.6f\n",pi); }
4 do…while语句
例3:计算分数序列和: 最后项小于0.00001。
s=0 i=1 t=1/i
s = 1 + 1 1 + + ... 2 3
,直到
#include <stdio.h> void main() { int s=0,i=1; do
{
s+=t i++ t>=0.00001 输出 s
例2:计算分数序列的和: 最后项小于0.00001。
s=0 i=1 t=1/i s+=t i++ t>=0.00001 输出 s
1 1 s =1+ + + ... ,直到 2 3
3 while语句le语句
while语句用来实现“当型” while语句用来实现“当型”循环结构的语法形 语句用来实现 式。 一般形式: 0 表达式 (表达式 语句; 表达式) while (表达式) 语句; 非0 当表达式为非0值时,执行while 语句中的内嵌语句。其特点是: 先判断表达式,后执行语句。
执行语句 语句 执行表达式3
循环体
for语句等价于下列语句: 语句等价于下列语句: 语句等价于下列语句 表达式1; 表达式 ; while (表达式 ) 表达式2) { 语句; 语句; 表达式3; 表达式 ; }
执行for循环之后的语句
5 for语句
for语句使用最多的情况:
for(循环变量赋初值;循环条件;循环变量增量) 语句; 例如:for( i=1;i<100;i++ ) for( sum+=i; 注意:for语句后边括号中的三个表达式可以省略, 可是括号中的两个分号不能省略
do…while语句用来实现“当型” do while语句用来实现“当型”循环结构的语法形 while语句用来实现 式。
一般形式: do 循环体语句; while(表达式);
语句
非0
表达式
0
执行过程:先执行一次指定的循环体语句, 执行过程:先执行一次指定的循环体语句, 然后判别表达式,当表达式的值为非零(“真 然后判别表达式,当表达式的值为非零 真”) 时,返回 重新执行循环体语句,如此反复,直到表达式的值等于0 重新执行循环体语句,如此反复,直到表达式的值等于 为止,此时循环结束。 为止,此时循环结束。
5 for语句
说明: 说明:
运行情况: 运行情况: Computer↙ 输入) Computer↙ (输入) ② for( ;(c=getchar())!=′\n′;) (输出 输出) Computer (输出) printf(″%c″,c); 而不是 for语句中只有表达式2,而无表达式1和表达式3。 Ccoommppuutteerr
6 break和continue语句
k= i=2 i<=k m%i==0 T break i==k+1 T m是素数 F m不是素数 F
m
#include "math.h " #include " stdio.h " void main() { int m,i,k; scanf("%d",&m); k=sqrt(m); for (i=2;i<=k;i++) if (m%i==0) break; if (i==k+1) printf("%d is a primenumber!\n",m); else printf("%d is not a prime number!\n",m); }
6 break和continue语句
例1:分析以下程序段的功能 : float pi=3.14159; for(r=1;r<=10;r++) { area=pi*r*r; if(area>100) break; printf(″r=%f,area=%f\n″,r,area); , }
程序的作用是计算r=1到r=10时的圆面积,直到面积area大 程序的作用是计算r=1到r=10时的圆面积,直到面积area大 r=1 时的圆面积 area 100为止 从上面的for循环可以看到: area>100时 为止。 for循环可以看到 于100为止。从上面的for循环可以看到:当area>100时, 执行break语句,提前结束循环, break语句 执行break语句,提前结束循环,即不再继续执行其余的 几次循环。 几次循环。
第6章 循环结构程序设计
1 循环的引出 2 循环结构算法设计 3 while语句 4 do…while语句 5 for语句 6 break和continue语句 7循环的嵌套 8 goto语句及用goto语句构成循环
1 循环的引出
什么是循环? 什么是循环? 为什么要使用循环? 为什么要使用循环? 问题1:=∑ 问题1 y n
5 for语句
例2:循环输入20个学生某科成绩,求平均分
for(i=1,s=0;i<=20;i++) 输入一个学生成绩score s+=score ave=s/20 输出平均分
5 for语句
1.省略表达式1 int i=1; for循环前边赋初值 for( ;i<10;i++ ) sum+=i; 2.省略表达式2 for(i=0;;i++ ) 一个死循环 sum+=i;
2 循环结构算法设计
例1:输出1~200中所有能被4整除的整数。
i=1 i<=200
i % 4==0 T 输出 i i++ F
2 循环结构算法设计
直到型循环结构设计 (1)赋初值 (2)执行循环操作的语句序列 (3)判断循环条件是否为真,是则转(2) 否则转(4) (4)结束循环
2 循环结构算法设计
5 for语句
#include <stdio.h> void main() { long f1,f2; int i; f1=1;f2=1; for (i=1;i<=20;i++) { printf("%12ld %12ld ",f1,f2); if (i%2==0) printf("\ printf("\n"); f1=f1+f2; f2=f2+f1; } }
6 break和continue语句
continue语句 continue语句 作用为结束本次循环, 即跳过循环体中下面 尚未执行的语句,接 着进行下一次是否执 行循环的判定. 一般形式: 一般形式: continue;
}
}
说明:(1)循环体如果包含一个以上的语句,应该用 循环体如果包含一个以上的语句, 说明:(1)循环体如果包含一个以上的语句
花括弧括起来,以复合语句形式出现.(2)在循环 花括弧括起来,以复合语句形式出现.(2)在循环 .(2) 体中应有使循环趋向于结束的语句。 体中应有使循环趋向于结束的语句。
3 while语句
例2:求1~100之和。
sum=0 i=1 i<=100
#include <stdio.h> void main() { int sum=0,i=1; while(i<=100)
{
sum+=i
sum+=i; i++;
i++ 输出i
}
若要求1~n } 之和呢?
printf(“%d\n”,sum);
4 do…while语句
5 for语句
3.省略表达式3 for(i=0;i<10; ) i的值不变,也是 sum+=i; 死循环
5 for语句
例2:求4的10次方 …… int a=1,b=4,i; for(i=0;i<10;i++ ) a=a*b; ……
5 for语句
说明: 说明: ① for(i=0;(c=getchar())!=′\n′;i+=c); \ 在表达式2中先从终端接收一个字符赋给c,然后判断 此赋值表达式的值是否不等于′\n′(换行符),如果 不等于′\n′,就执行循环体。 注意: 注意:此for语句的循环体为空语句,把本来要在循环 体内处理的内容放在表达式3中,作用是一样的。可见 for语句功能强,可以在表达式中完成本来应在循环体 内完成的操作。
n= 1 100
问题2:求某个学生平均成绩。(其各科分数相加后除以科数 。(其各科分数相加后除以科数) 问题2:求某个学生平均成绩。(其各科分数相加后除以科数)
2 循环结构算法设计
当型循环结构设计 (1)赋初值 (2)判断循环条件是否为真,是则转(3) 否则转(4) (3)执行循环操作的语句序列,转入(2) (4)结束循环
6 break和continue语句
例2:判断m是否素数。 判断m是否素数。 判断
算法思想: 算法思想:让m被2到除,如果m能被2~之中任何一个整 数整除,则提前结束循环,此时i必然小于或等于 k(即);如果m不能被2~k(即)之间的任一整数整除, 则在完成最后一次循环后,i还要加1,因此i=k+1, 然后才终止循环。在循环之后判别i的值是否大于或 等于k+1,若是,则表明未曾被2~k之间任一整数整 除过,因此输出“是素数”。 不能被2~ 的任一数整除,则 m +1~m-1之间 的任一数整除, +1~m如m不能被2~ m 不可能有数整除m 不可能有数整除m。 所以,判断从2~ 之间进行,即可判断是否素数。 之间进行,即可判断是否素数。 所以,判断从2~ m