第四讲 循环结构(2次)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

输出 sum 如果有一个以上的语句循环,则必须用{ 如果有一个以上的语句循环,则必须用{ } 构成复合语句。要有修改循环变量的语句。 构成复合语句。要有修改循环变量的语句。
3.3.1 三种循环结构的流程表示及执行过程
──do-while语句
一般形式: 一般形式: do 循环语句 while(表达式); (表达式);
sum =sum+i;

1+2+……+100 1+2+3+……+n 1+1/2+1/3+……+ 1/n 1+1/3+1/5+… 的前 项和 的前n项和 1-1/3+1/5-… 的前 项和 的前n项和 xn n! 1! + 2! + …. + 10! 1! + 2! + …. + n!
3.3.1 三种循环结构的流程表示及执行过程
}
for (fahr = lower ; fahr <= upper; fahr = fahr + 1)
celsius = (5.0 / 9.0) * (fahr - 32.0); printf("%d %6.1f\n", fahr, celsius); %6.1f\
for (fahr = lower ; fahr <= upper; fahr = fahr + 1); 1);
语句可以是简单的,也可以是复合的; 语句可以是简单的,也可以是复合的; 循环体中应有使循环趋向于结束的语句。 循环体中应有使循环趋向于结束的语句。 while (0) { .... } 由于循环的条件 表达式恒等于0 循环体永远也不会执行, 表达式恒等于0,循环体永远也不会执行, 是编程者的错误。 是编程者的错误。 while (1) { .... } 由于循环的条件 表达式恒等于1 表达式恒等于1,所以不可能通过循环控制 条件来结束循环体的执行,称为“ 条件来结束循环体的执行,称为“死循 环”。
0 (假)
3.3.1 三种循环结构的流程表示及执行过程
──do-while语句 1+2+3+….+100 [例] 求1+2+3+ .+100 。
main() { int i,sum=0; i=1; do { sum=sum+i; i++; } while (i<=100); printf("%d",sum); }
程序解析-温度转换表 程序解析 温度转换表
Enter lower: 30
Enter upper: 35 void main() { int fahr, lower, upper;double celsius; fahr celsius 30 -1.1 printf("Enter lower:"); 31 -0.6 scanf("%d", &lower); 32 0.0 printf("Enter upper:"); 33 0.6 34 1.1 scanf("%d", &upper); 35 1.7 printf("fahr celsius\n"); //温度重复转换 华氏温度从 温度重复转换:华氏温度从 开始,到 结束,每次增加 温度重复转换 华氏温度从lower开始 到 upper结束 每次增加 开始 结束 1°F ° for (fahr = lower; fahr <= upper; fahr ++) { celsius = (5.0 / 9.0) * (fahr - 32); printf("%d %6.1f\n", fahr, celsius); } }
celsius = (5.0 / 9.0) * (fahr - 32.0); printf("%d %6.1f\n", fahr, celsius); %6.1f\ !不要在for语句中随意加分号 不要在for语句中随意加分号
3.3.1 三种循环结构的流程表示及执行过程
──for 语句
一般形式: (表达式1;表达式2;表达式3) 1;表达式2;表达式3)语句 一般形式:for(表达式1;表达式2;表达式3)语句 for语句最常用的形式: for语句最常用的形式: 语句最常用的形式 for(初值 控制条件;增量) 初值; for(初值;控制条件;增量) 语句; 语句; 3个表达式、循环体语句 个表达式、 书写顺序和执行顺序不同 表达式1 表达式1只执行一次
──while ──while语句 while语句
一般形式: While (表达式) 语句 表达式) 一般形式: 功能:实现" 循环, 先判断,后执行" 功能:实现"当"循环,"先判断,后执行"。表达 式为真时( 执行while语句的内嵌语句 语句的内嵌语句。 式为真时(非0值),执行while语句的内嵌语句。
3.3.2 3.3.2循环的嵌套
──循环的嵌套结构 循环的嵌套结构
嵌套的概念:一个循环体内又包含另一个完整的 嵌套的概念: 循环结构,称为循环的嵌套。 循环结构,称为循环的嵌套。
循环嵌套的6种形式: 循环嵌套的6种形式: ⑵ do {… ⑴ while( ) do {… {… } while( ) while( ); {… } } } while( ); ⑷ while( ) ⑸ for( ; ; ) {… {… do while( ) {… } {} while( ) ; … … } } ⑶ for( ; ; ) { for ( ; ; ) {… } } ⑹ do { … for( ; ; ) {} } while( );
fahr++
语句:被反复执行的语句,一条语句。 语句:被反复执行的语句,一条语句。
复合语句{ 和空语句 复合语句 }和空语句 ;
for (fahr = lower; fahr <= upper; fahr ++) {
celsius = (5.0 / 9.0) * (fahr - 32.0); printf("%d %6.1f\n", fahr, celsius);
0
表达式
非0
语句
3.3.1 三种循环结构的流程表示及执行过程
──while ──while语句 while语句
[例] 求1+2+3+….+100 。 1+2+3+…
不能写成 if (i<=100)
sum=0,i=1
i<=100
非0 0
sum=sum+i i=i+1
main() { int i=1,sum=0; while (i<=100) { sum=sum+i; i++; } printf("%d",sum); }
}
表达式1:给循环变量赋初值,指定循环的起点。 表达式 :给循环变量赋初值,指定循环的起点。
fahr = lower
表达式2:给出循环的条件,决定循环的继续或结束。 表达式 :给出循环的条件,决定循环的继续或结束。
fahr <= upp百度文库r
表达式3: 设置循环的步长, 改变循环变量的值, 表达式 : 设置循环的步长 , 改变循环变量的值 , 从而可改 变表达式2的真假性。 变表达式 的真假性。 的真假性
循环结构 程序设计
3.3 循环结构程序设计
反复执行同一段程序, 反复执行同一段程序,直到满足一定的条件后 才停止执行该段程序。 才停止执行该段程序。
把这种重复过程,称为循环过程; 把这种重复过程,称为循环过程 循环过程
while语句 while语句 do-while语句 do-while语句 for语句 for语句
语句
非 0(真)
表达式
功能: 实现"直到型 循环结构。 直到型"循环结构 功能: 实现 直到型 循环结构。 说明: 说明:
中的循环体至少执行一次, ① do while 中的循环体至少执行一次,而 while 语句 中的循环语句可能一次都不执行。 中的循环语句可能一次都不执行。 后面的表达式的第一次的值为"真 时 ② 当 while 后面的表达式的第一次的值为 真"时,两 种循环得到的结果相同。否则,二者结果不相同。 种循环得到的结果相同。否则,二者结果不相同。
输入2个整数 输入 个整数lower和 upper, 输出一张华氏 个整数 和 , 摄氏温度转换表, -摄氏温度转换表,华氏温度的取值范围是 [lower, upper],每次增加1°F。 ,每次增加 ° 。
fahr celsius 30 -1.1 31 -0.6 32 0.0 33 0.6 34 1.1 35 1.7
求华氏温度 100°F 对应的摄氏温度。 ° 对应的摄氏温度。 摄氏温度 C=(5/9)(F-32) #include <stdio.h> int main(void) { int celsius, fahr; fahr = 100; celsius = 5 * (fahr - 32) / 9; printf("fahr = %d, celsius = %d\n", fahr, celsius); return 0; }
for ( i = 1; i <=n; t= ) <=n; 考虑是否可以把int t=1 考虑是否可以把inti++1放到 t= 外循环以外 t * i; t = 1; for(n=1 n<=10; for(n=1;n<=10;n++) for(n 1 { t=1 t=1; /* t 存放阶乘,每次求阶乘都从= 1; n<= 10; n++) 存放阶乘,每次求阶乘都从1开始 */ 10; { for (i = 1; i <= n; i++) for ( i = 1; i <=n; i++ ) <=n; t=t*i; t=t*i; t = t * i; /* 内层循环算出 t = i! */ sum = sum + t; sum=sum+t; sum=sum+t; } } 1!*2!*……*100! 求1! + 1!*2! + …… + 1!*2!*……*100!
for (i = 1; i <= 100; i++) 100; for (j = 1; j <= i; j++) printf ("%d %d\n", i, j ); ("%
i=1 i=2 j=1 j=1 j=2 j=1 j=2 … … j = 100 次输出) 输出 100 100 (第 5050 次输出) 输出 1 1 输出 2 1 输出 2 2 ………… 输出 100 输出 100 次输出) (第 1 次输出) 次输出) (第 2 次输出) (第 3 次输出) 次输出) 1 (第 4951 次输出) 次输出) 2 (第 4952 次输出) 次输出)
Enter lower: 30 Enter upper: 35 fahr celsius 30 -1.1 31 -0.6 32 0.0 33 0.6 34 1.1 35 1.7
for语句的说明 语句的说明
for (fahr = lower; fahr <= upper; fahr ++) {
celsius = (5.0 / 9.0) * (fahr - 32.0); printf("%d %6.1f\n", fahr, celsius);
求解表达式1 求解表达式
假 表达式2 表达式 真 语句
求解表达式3 求解表达式
for语句的 语句的 下一语句
指定次数的循环程序设计
求 1+2+……+100 抽取具有共性的算式: 抽取具有共性的算式:sum = sum + i
sum初值为 ,该算式重复 初值为0,该算式重复100次,i从1变到 变到100 初值为 次 从 变到 设i为循环变量,则: 为循环变量, 为循环变量 指定循环起点的表达式1: 指定循环起点的表达式 :i = 1 给出循环条件的表达式2: 给出循环条件的表达式 :i <= 100 设置循环步长的表达式3: 设置循环步长的表达式 :i++ 循环体语句: 循环体语句:sum = sum + i; for(i=1; i<=100; i++)
i = 100
外循环变量每循环一次, 外循环变量每循环一次,内循环就要从头到尾 执行一遍
程序举例 : 递推公式: 递推公式
n! = 1 10! n=1 嵌套循环求1! 嵌套循环求1! + 2! + …. + 当 n=1 时 for (n = 1; n <= 10; n++) 10; { item = n! sum = sum + item; item; } n! = (n-1)! * n 当 n>1 时 (nn>1 t=1 t=1;
for语句的流程 语句的流程
for (fahr = lower; fahr <= upper; fahr ++) { celsius = (5.0 / 9.0) * (fahr - 32); printf("%d %6.1f\n", fahr, celsius); } fahr = fahr+2 输出? 输出?
相关文档
最新文档