第5章 循环结构程序设计(课件)-《C语言程序设计》同步教学(中航出版)

2024-07-11
| 36页
| 84人阅读
| 15人下载
普通

内容正文:

<<C语言程序设计>> 课程 第5章 循环结构程序设计 Page 1 <<C语言程序设计>> 主要内容 1、循环的本质 2、三种循环结构语句(重点) while语句 do-while语句 for语句 3 循环结构控制语句 break语句 continue语句 4 综合应用案例 Page 1 <<C语言程序设计>> 已知三边长,求三角形面积? 问题引入 每次计算完毕,程序会退出,再次计算需要重新运行程序 根据指定的条件重复执行一条或多条语句,这就是循环结构。 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级 Page 1 <<C语言程序设计>> 5.1 循环的本质 printf("************ "); printf("************ "); printf("************ "); printf("************ "); printf("************ "); printf("************ "); printf("************ "); printf("************ "); printf("************ "); printf("************ "); for(int i=1;i<=8;i++) printf(“************ ); 某些相同的代码,不必重复书写,利用循环结构即可达到自动重复执行的目的,这样提高了程序编写的效率,减少了源代码的存储空间,这就是循环的本质。 等价 单击此处编辑母版文本样式 第二级 第三级 第四级 第五级 Page 1 <<C语言程序设计>> 5.1 循环的本质 for(int i=1;i<=8;i++) printf(“************ ); 循环结构三要素: 1、循环从什么时候开始,即“循环变量初值”。 2、满足什么条件要循环,即“循环控制条件表达式”。 3、每次循环要做什么,即“反复执行的语句”,简称为“循环体”。 1 2 3 Page 1 <<C语言程序设计>> 5.1 三种循环结构语句 while循环的一般形式 while(表达式) {循环体;} while(i<5) {printf(" %d,", i); i ++ ; } 表达式为真? while循环执行过程 执行循环体 真 退 出 假 循环前: i=1 i 第一次 循环次数 i<5 1 1, 第二次 2 2, 第三次 3 3, 第四次 4 4, 退出循环: i=5 Page 1 <<C语言程序设计>> 5.1 三种循环结构语句 while循环的一般形式 while(表达式) {循环体;} 当表达式为真(表达式为非0)时,执行while语句中的语句。其特点是:先判断表达式,后执行语句。while循环称为当型循环。 注意: (1) 循环体如果包含一个以上的语句,应该用花括号括起来,以复合语句形式出现。 (2) 在循环体中应有使循环趋向于结束的语句。 Page 1 <<C语言程序设计>> 例5-1 编程序,计算 s=1+2+3+……+100 (1) 如何得到加数? i: while(i<=100) { s=s+i; i ++ ;} i=1; (2) 如何实现累加? s为被加数,循环一次加一个 初始:s=0 i=1: s+i s s=s+i; i=2: i=100: …… 1、2、……100 s=0; s+=i; s+i s s+i s void main ( ) { int i,s; i=1; s=0; while(i<=100) { s+=i; i++; } } 1 1+2 1+2+...+100 i=3: s s+i 1+2+3 printf(" s=%d ",s); Page 1 <<C语言程序设计>> 【随堂练习5-1】 利用while语句计算自然数序列1,2,3,…,n的和,n的值在程序执行时输入。 void main() { int i,s; i=1; s=0; while(i<=100) { s+=i; i++; } printf("sum=%d",s); } 5.2 三种循环结构语句 Page 1 <<C语言程序设计>> #include <stdio.h> void main( ) { int i,n,s; i=1; s=0; printf("请输入n的值:"); scanf("%d",&n); while(i<=n) { s+=i; i++; } printf("sum=%d",s); } 参考代码 5.2 三种循环结构语句 Page 1 <<C语言程序设计>> 5.2 三种循环结构语句 do-while循环的一般形式 do {循环体;} while(表达式) ; while(i<5); {printf("%d," , i); i ++ ; } 表达式为真? 循环执行过程 执行循环体 真 退 出 假 void main( ) { int i; i=1; } 循环前: i=1 i 第一次 循环次数 1 1, 第二次 2 2, 第三次 3 3, 第四次 4 4, 退出循环: i=5 do Page 1 <<C语言程序设计>> 例5-3 编程序,计算 s=1+2+3+……+100 #include "stdio.h" void main( ) {int i=1,sum=0; do { sum=sum+i; i++; }while (i<=100); printf("sum=%d",sum); } Page 1 <<C语言程序设计>> 【随堂练习5-2】 利用do-while语句计算1+1/2+1/3+…+1/n。 5.2 三种循环结构语句 Page 1 <<C语言程序设计>> #include <stdio.h> void main( ) { int i,n; float s; i=1; s=0; printf("请输入n的值:"); scanf("%d",&n); do { s+=1.0/i; i++; } while(i<=n); printf("sum=%f",s); } 参考代码 5.2 三种循环结构语句 Page 1 <<C语言程序设计>> 5.2 三种循环结构语句 for循环的一般形式 for(表达式1;表达式2;表达式3) {循环体;} printf(“*”); 表达式2为真? for循环执行过程 计算表达式1 真 退 出 假 void main( ) { int i; }           for (i=0;i<10;i++) 执行循环体 计算表达式3 Page 1 <<C语言程序设计>> 5.2 三种循环结构语句 for循环的一般形式 for(表达式1;表达式2;表达式3) {循环体;} printf(“*”); for (k=0;k<10;k++) 最普通的情况:表达式1是给循环变量赋初值,表达式2是循环变量的关系型表达式,表达式3是循环变量的自加自减,使循环趋结束。 for (k=10;k>=1;k--) printf(“%d”,k); Page 1 <<C语言程序设计>> 例5-4 编程序,计算 s=1+2+3+……+100 #include "stdio.h" void main( ) { int i,sum=0; for(i=1;i<=100;i++) sum=sum+i; printf("sum=%d ",sum); } Page 1 <<C语言程序设计>> for(表达式1;表达式2;表达式3) {循环体;} (1) for语句中的“表达式1”可以省略,此时应在for语句之前给循环变量赋初值。 (2) 如果表达式2省略,此时表达式2始终为真,循环无终止地进行下去。 (3) 表达式3也可以省略,但此时程序设计者应另外设法保证循环能正常结束。 (4) 可以省略表达式1和表达式3,只有表达式2,即只给循环条件。 for(i=1;i<=100;i++) sum=sum+i; 说明: Page 1 <<C语言程序设计>> 例5-5 编程序,计算 s=1+2+3+……+100 #include <stdio.h> void main( ) { int s=0,i; i=1; //表达式1移至for语句之前 for( ;i<=10; ) { s=s+i; i++; //表达式3移至循环体末尾 } printf("s=%d",s); } i=1; while(i<=10) { s+=i; i++; } Page 1 <<C语言程序设计>> 例 编程计算n的阶乘。 n!=12 3 ……(n-1)n 思路: 类似于累加求和,每一次循环乘上一个数字,求和将和初始化为0,这里应把积初始化为? 随堂练习 Page 1 <<C语言程序设计>> n!=12 3 ……(n-1)n #include "stdio.h" void main( ) { int n,i,p; scanf("%d",&n); p=1; for(i=1;i<=n;i++) p= p* i; printf("%d",p); } Page 1 <<C语言程序设计>> 5.3 循环结构控制语句 break语句 :结束循环 break语句可以使流程跳出switch结构,继续执行switch语句下面的语句。break语句还可以用于跳出循环。 break作用使流程从循环体内跳出循环体,即提前结束循环。break语句只能用于循环语句和switch语句内,不能单独使用或用于其他语句中。 while(表达式1) { …… if(表达式2) break; …… } Page 1 <<C语言程序设计>> 5.3 循环结构控制语句 continue语句 :结束本次循环 ,即跳过本次循环下面尚未执行的语句,接着进行下一次循环。 for(int k=1;k<=50;k++) if(k%3==0&&k%5==0) { printf("%d ",k); printf("******* "); } 读程序写结果 continue; break; Page 1 <<C语言程序设计>> 例5-6 编程序,输入若干字符,对输入的英文字母原样输出,其他字符不输出,直到输入回车键结束。 Page 1 <<C语言程序设计>> #include <stdio.h> void main( ) { char ch; while(1) { ch=getchar(); if(ch==' ') break; else if(ch>='a'&&ch<='z'||ch>='A'&&ch<='Z') putchar(ch); } } 参考代码 Page 1 <<C语言程序设计>> 5.4 循环的嵌套 一个循环体内又包含另一个完整的循环结构,称为循环的嵌套。 while循环、do-while循环和for循环可以互相嵌套。 while( ) {┆ while( ) {…} } while( ) {┆ do {…}while( ); ┆} for(;;) {┆ for(;;) {…} } Page 1 <<C语言程序设计>> 5.4 循环的嵌套 #include <stdio.h> void main( ) {int i,j; for (i=1; i<=9; i++) { for (j=1; j<=i;j++) printf("%d*%d=%d ",i,j,i*j); printf(" "); } } 读程序写结果 Page 1 <<C语言程序设计>> 5.5 综合应用案例 例5-8 输入一行字符,分别统计其中英文字符、数字字符和其他字符的个数。 分析 1、 输入一行字符,字符的个数未定,可以用回车键作为输入结束的条件。 2、三个整型变量char_num、int_num、other_num作为英文字符、数字字符和其他字符的计数器。 3、定义一个字符型变量ch保存从键盘输入的字符,当输入一个字符后判断该字符的类型,对相应的计数器加1。 Page 1 <<C语言程序设计>> #include<stdio.h> void main() { char ch; int char_num=0,int_num=0,other_num=0; while((ch=getchar())!=‘ ’) //回车键结束输入 { if(ch>='A'&&ch<='Z'||ch>='a'&&ch<='z') char_num++; else if(ch>='0'&&ch<='9') int_num++; else other_num++; } printf("字母%d个; 数字%d个; 其它字符%d个. ",char_num,int_num,other_num); } 参考代码 Page 1 <<C语言程序设计>> 5.5 综合应用案例 例5-9 自幂数是指一个 n 位整数,它的每个位上的数字的 n 次幂之和等于它本身。当n为4时,自幂数称为玫瑰花数,试编程输出1000~9999范围内所有的玫瑰花数。(如1643 )。 分析 1、 4位数中逐一查找。 2、分别取出个、十、白、千位,计算判断 Page 1 <<C语言程序设计>> #include <stdio.h> void main() {int i,n,a,b,c,d; for(i=1000;i<=9999;i++) { n=i; a=n%10; b=n/10%10; c=n/100%10; d=n/1000; if(a*a*a*a+b*b*b*b+c*c*c*c+d*d*d*d==n) printf("%6d",n); } } 参考代码 Page 1 <<C语言程序设计>> 中国古代数学家张丘建在他的《算经》中提出了著名的“百钱买百鸡问题”:鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问翁、母、雏各几何? 5元 3元 1元 5.5 综合应用案例 Page 1 <<C语言程序设计>> #include "stdio.h" main( ) {int a,b,c ; /*a是公鸡数,b是母鸡数,c是小鸡数*/ printf("cock,hen,chick "); for(a=0;a<=20;a++) for(b=0;b<=33;b++) for(c=0;c<=99;c++) if( a+b+c==100 && 5*a+3*b+c/3.0==100) printf(" %d , %d , %d ",a,b,c); } 参考代码 Page 1 <<C语言程序设计>> #include "stdio.h" void main( ) {int a,b,c ; /*a是公鸡数,b是母鸡数,c是小鸡数*/ printf("cock,hen,chick "); for(a=0;a<=20;a++) for(b=0;b<=33;b++) { c=100-a-b; if(5*a+3*b+c/3.0==100) printf(" %d , %d , %d ",a,b,c); } } 参考代码 Page 1 <<C语言程序设计>> 课程小结:我们学习了什么? 循环结构本质 三种循环结构 while( ) do while( ) for() 循环控制语句 break continue Page 1 <<C语言程序设计>> <<C语言程序设计>> Page 1 <<C语言程序设计>> $$

资源预览图

第5章 循环结构程序设计(课件)-《C语言程序设计》同步教学(中航出版)
1
第5章 循环结构程序设计(课件)-《C语言程序设计》同步教学(中航出版)
2
第5章 循环结构程序设计(课件)-《C语言程序设计》同步教学(中航出版)
3
第5章 循环结构程序设计(课件)-《C语言程序设计》同步教学(中航出版)
4
第5章 循环结构程序设计(课件)-《C语言程序设计》同步教学(中航出版)
5
第5章 循环结构程序设计(课件)-《C语言程序设计》同步教学(中航出版)
6
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。