第六章 循环程序设计 - 副本
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
例2:统计从键盘输入一行字符的个数。
#include <stdio.h> main() { int n=0; printf("输入一个字符:\n"); while(getchar()!='\n') n++; printf("%d",n); }
输入数据,-1结束并显示求和结果。 #include "stdio.h" void main() { int i,s=0; scanf("%d",&i); while(i!=-1) {s=s+i; scanf("%d",&i); } printf("%d",s); }
例:在屏幕上打印5次hello。
#include “stdio.h” void main() { int i; for (i=1;i<=5;i++) { printf(“hello\n"); } }
例:求1~100之间5的倍数的个数。
例: 求12+22+32+42+52+……1002 include "stdio.h" void main( ) {int k; long int sum=0; for(k=1;k<=100;k++) sum=sum+k*k; printf(“sum=%ld\n",sum); }
运行结果: 1↙ sum=55 再运行一次: 11↙ sum=11
for语句
for语句使用最为灵活,不仅可以用于循环次数已经确 定的情况,而且可以用于循环次数不确定而只给出循 环结束条件的情况,它完全可以代替while语句。
for语句
for(表达式1;表达式2;表达式3) 一般形式: 循环体语句;
作业
1~100之间所有的偶数 1~100之间所有的奇数 1~100之间所有偶数的和 1~100之间所有奇数的和
1~100之间所有的偶数(倒序输出) 1~100之间所有的奇数(倒序输出)
从键盘输入 n值,输出n行每行6个*号。 例:输入 n=4,输出的图形如下: #include "stdio.h" void main() { int i=1,n; scanf("%d",&n); while(i<=n) {printf("******\n"); i++;} }
一、为什么需要循环
没有使用循环结构 ("我是最棒的!"); ("我是最棒的!"); ("我是最棒的!"); ("我是最棒的!"); ("我是最棒的!"); ("我是最棒的!"); …… ("我是最棒的!"); 使用while循环 int i = 1; while ( ii<=10000 <= 100 ) { printf("我能行! "); "我是最棒的!"); i ++; }
1、while语句
流程图:
基本格式
表达式 0 (假)
while ( 条件表达式) { 语句 ; }
非 0 (真)
语句 A
若表达式(条件)的值为真,则执行内嵌语句A,再判 断表达式(条件)· · · ,当表达式的值为假时,执行while后 面的语句。
1、while语句
while语句的说明:
(1) while语句属当型循环,即先 判断条件(表达式),再执行循环体。
do~while语句
特点:先执行循环体,然后判断循环条件是否成立。
Fra Baidu bibliotek
一般形式:
执行流程 : 先执行一次循环 执行过程:
体语句,然后判别表达式, 当表达式的值为真时,返回 重新执行循环体语句,如此 反复,直到表达式的值等于0 为止,此时循环结束。
do {循环体语句;} while(表达式);
do 循环体 while expr 假(0)
6.5 用for 语句实现循环
说明:
(1) for语句的一般形式中的“表达式1”可以省略,此 时应在for语句之前给循环变量赋初值。注意省略表 达式1时,其后的分号不能省略。如 for(;i<=100;i++) sum=sum+i;
执行时,跳过“求解表达式1”这一步,其他不变。
6.5 用for 语句实现循环 说明:
n
n 1
100
运行结果:5050
例6.3 求1到100的和 #include <stdio.h> void main() { int i,sum=0; i=1; do {sum=sum+i; i++; }while(i<=100); printf("%d\n″,sum); }
举例
如果我国当前人口是13亿,假设我国的人口每年 增长的速度是千分之三,问经过多少年我国人口 将达到60亿??
}
输 出 s
例:求5!
例:打印输出1000以内的水仙花数(三位数)。 main() { int m,a,b,c; for(m=100;m<1000;m++) {a=m/100; b=m/10%10; c=m%10; if(m==a*a*a+b*b*b+c*c*c) printf("%6d",m); } }
0 (假)
(2) 表达式为一条件,用于控制循 环是否可继续执行,故称控制表达式。 (3) 语句A为内嵌式语句,是循环结 构的循环体。它可以是单语句也可以 是复合语句,且该语句中必须包含有 对循环条件进行修改的语句。
表达式
非0 (真)
语句A
while范例
在屏幕上打印5 次hello
#include “stdio.h” void main() {
i++;
循环条件改变语句
printf("s=%ld\n", s);
输 出s
}
while语句注意事项
1、计数变量要有初始值 2、计数变量在执行语句中要有变化 3、条件最后必须为假,来结束语句。否则 为死 循环 4、如果循环体中包含多个语句,应用括号括起 来。如果不加括号,则while语句只负责它后面 的第一个语句
5、在循环体中应该有使循环趋向结束的语句, 否则会导致死循环。
如上例中的语句改写 成如下形式: i=1; while ( i < = 100 ) s+=i; 则while语句的循环体语句为: s+=i; 循环变量i的值没有改变,循 环不能终止,陷入死循环
i++;
作业
1、输出1~10十个整数。 2、求10!(10的阶层)。 3、输出100内所有的偶数。 4、输出100内所有的偶数个数。 5、计算1~100之间所有奇数的和。 6、求1-100内不能被3整除的数之和。 7、1~100之间可以被7整除,但不能被13整除的数 据的和 8、1~n之间所有整数的和,用户输入n
main() { int n=0; double renkou=13; while (renkou<60) { renkou=renkou*(1+0.003); n++; } printf("%ld\n",n); }
作业
1、输出1~10十个整数。 2、计算1+2+3…+99+100的和 3、求5! 4、求1~100之间5的倍数的个数。
* * * * * * * *
* * * *
* * * *
* * * *
* * * *
拓展题:
例:求 12+22+32+42+52+……1002 include "stdio.h" void main( ) {int k; long int result=0; while(k<=100) {result=result+k*k; k++;} printf("result=%ld\n",result); }
真(非0)
do…while范例
在屏幕上打印 5次hello
#include <stdio.h> void main() { int i=1; do { printf(“hello\n"); i++; }while (i<=5); }
do~while语句特点和说明
特点:先执行循环体,后判断表达式 说明:至少执行一次循环体
求和表达式: 初值: 循环次数 i :
S=S+i S=0 1~100
流程图:
定义 变 量 s , i
程序: main ( ) { int s, i;
循环初
s=0, i=1;
s = 0,i = 1;
N
循环初值
i≤ 100
while ( i < = 100 )
Y
s+=i;
{ s=s+i;
i++; }
循环终值 循环条件
求10!(10的阶层)
#include "stdio.h" void main() { long int i=1,s=1; while(i<=10) {s=s*i; i++;} printf("%ld",s); }
例:输出100内所有的偶数及偶数个数。 #include "stdio.h" void main() {int i=1,j=0; while(i<=100) {if(i%2==0) {j++;printf("%d ",i);} i++;} printf("\n总个数:%d",j); }
第六章 循环型程序设计
while语句 do_while语句
for语句
一、为什么需要循环
1、第一天晨训,班主任为了提高同学们的斗志,要 求大家说一百遍“我能行!”
("第1次说:我能行!"); 100条 ("第2次说:我能行!"); …… ("第100次说:我能行!");
2、第二天,班主任要求说10000遍“我是最棒的!”, 怎么办?
S=S×i S=1 1~n
流程图:
定 义 符号 常量 N
程序:
#define N 10
定义 变 量 n, i, s
main ( )
{ int i;
N
s=1; i=1
i≤ N
long int s=1; for ( i=1; i<=N; i++ ) s =s* i;
Y s *= i
i++
printf("s=%ld\n", s);
循环结构程序举例
例:求 n!
求阶乘的过程为:
1) S=1 2) S=1×2 3) S=1×2×3 · · · · · · n) S=1×2× · · · ×n S0 = 1 S1 = S0 × 1 S2 = S1 × 2 S3 = S2 × 3 · · · · · · Sn = Sn-1×100
求阶乘表达式: 初值: 循环次数 i :
for语句最简单的形式: for(循环变量赋初值;循环条件;循环变量增值) 例如: for(i=1;i<=100;i++) sum=sum+i; 用for语句 简单、方便。
main() {int i,sum=0; for(i=1;i<=100;i++)
sum=sum+i;
printf(“%d”,sum); }
for 执行流程:
表达式1 表达式2 假(0)
真(非0)
循环体
表达式3
for语句的执行过程:
(1) 先求解表达式1。 (2) 求解表达式2,若其值为真,则执 行for语句中指定的内嵌语句,然后 执行下面第(3)步。若为假,则结束 循环,转到第(5)步。 (3) 求解表达式3。 (4) 转回上面第(2)步骤继续执行。 (5) 循环结束,执行for语句下面的一 个语句
初值(从什么情 况开始)
int i=1;
条件(结束值,什么 情况结束)
while (i<=5) {
循环体(重 复什么)
printf(“hello\n"); i++; } }
循环体中改变 循环条件的语 句)
例 求1+2+· · · · · ·+ 100
分析: 求和的过程为:
1) S=1 2) S=1+2 3) S=1+2+3 · · · · · · 100) S=1+2+ · · · +100 S=0 S =S+1 S =S+2 S = S+ 3 · · · · · · S= S+100
(2) 如果表达式2省略,即不判断循环条件,循环无终 止地进行下去。也就是认为表达式2始终为真。 例如:for(i=1; ;i++) sum=sum+i; 表达式1是一个赋值表达式,表达式2空缺。它相当于: i=1; while(1) {sum=sum+1;i++;}
二、什么是循环
生活中的循环
打印50份试卷
10000米赛跑
锲而不舍地学习
旋转的车轮
循环结构的特点
循环结构 循环条件 循环操作
二、什么是循环
循环结构也称重复结构:程序中反复执行的一 组指令或程序段。 循环体:被反复执行的程序段。 循环变量:用来控制循环是否继续进行的变量。
三、循环语句
while 循环 do...while 循环 for 循环
do-while、while的区别
while语句和用do-while语句的比较:在一般情 况下,用while语句和用do-while语句处理同 一问题时,若二者的循环体部分是一样的, 它们的结果也一样。但是如果while后面的表 达式一开始就为假(0值)时,两种循环的结 果是不同的。
运行结果: 1↙ sum=55 再运行一次: 11↙ sum=0