首页 第6章 循环

第6章 循环

举报
开通vip

第6章 循环nullnull第5章 循环结构的C程序设计 循环是计算机解题的一个重要特征。由于计算机运 算速度快,最适宜做重复性的工作。当我们在进行程序 设计时,总是要把复杂的不易理解的求解过程转换为容 易理解的操作的多次重复,从而降低了问题的复杂度, 同时也减少程序书写及输入的工作量。null实现循环的语句 null语句功能:5.1 if /goto 语句语句格式: 语句标号:语句; … … if (表达式) goto 语句标号; … … 当(表达式)的值为非零时则重复 执行“...

第6章 循环
nullnull第5章 循环结构的C程序设计 循环是计算机解 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 的一个重要特征。由于计算机运 算速度快,最适宜做重复性的工作。当我们在进行程序 设计时,总是要把复杂的不易理解的求解过程转换为容 易理解的操作的多次重复,从而降低了问题的复杂度, 同时也减少程序书写及输入的工作量。null实现循环的语句 null语句功能:5.1 if /goto 语句语句格式: 语句标号:语句; … … if ( 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 达式) goto 语句标号; … … 当(表达式)的值为非零时则重复 执行“语句标号”后面的语句。 标识程序中某 个语句的位置 null 请用C语言实现右侧程序 流程 快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计 图所描述的算法: 即:sum=1+2+3+4+……+100 设:i 计数器:i=i+1 sum 为累加器:sum=sum+iEXAMPLE[5-1]:null main( ) { }int sum=0, i=1;sum=sum+i;sum+=i;i=i+1;if (i<=100) printf(“%d\n”, sum);goto aa; aa:i++; 语句标号:语句; … … if (表达式) goto 语句标号;null 从键盘输入100个有符号整数,请 分别统计其中正整数和负整数的个数。 EXERCISES[5-1]:nullBeginnum=0 sum1=0 sum2=0num++输出sum1 sum2Endsum1++FX>0T输入 xsum2++num<100F111、设计算法null2、实现算法 main( ) { }int sum1, sum2, num, x;scanf(“%d”, &x);num++;if (x>0) printf(“%d,%d\n”, sum1,sum2);goto bb; bb:sum1++;sum1=sum2=num=0;else sum2++;if (num<100) null语句功能:5.2 while 语句语句格式: while(表达式) { statements; }当表达式的值为非零时,重复statements。 关系、逻辑 赋值表达式 body of loop真(非零) 循环体假(零)null main() { int n=0; while (n<3) { printf(“%d,”, n ); n++; } printf(“%d\n”, n); } 0, main( ) { int n=3; while (n) printf(“%d,”, n--); n=-3; printf(“\n”); while (n) printf(“%d,”, n++); } 1,2,33,2 ,1,-3,-2, -1,EXAMPLE[5-2]:n0123210-3-2-10null 从键盘输入100个整型数据,请找出  其中最大的数,并指出这个最大的数是  从键盘第几次输入的。   要求:1、用流程图设计算法; 2、用C语言实现算法。HOMEWORK[5-1]:null 请分别统计在输入的字符串中 字母、数字和其它字符的个数。 (以回车键作为输入结束标记) 要求:1、用流程图设计算法; 2、用C语言实现算法。HOMEWORK[5-2]:book12pen5%*#( )[ ]&字母: 7数字: 3字符: 8null main() { int d1,d2,d3; char ch; d1=d2=d3=0; scanf(“%c”, &ch); while(ch!=‘\n’) { if ((ch>=‘A’&&ch<=‘Z’) || (ch>=‘a’&&ch<=‘z’)) d1++; else if (ch>=‘0’ && ch<=‘9’) d2++; else d3++; scanf(“%c”, &ch); } printf( “%d,%d,%d\n”, d1,d2,d3); }null语句功能:5.3 do-while 语句语句格式: do { statements; } while(表达式);当表达式的值为非零时,重复statements 。 body of loop真(非零) 循环体假(零) 首先无条件地执行一次循环体中的语句,然后再判断表达式的值, 若表达式值为 “真” (即非零值), 则执行循环体中的语句;然后再计算再判断, 如此重复,直到表达式值为“假”(即0值)时,则跳出循环 null1+2+3+4+5+ … …+100 main() { int i, sum; } do printf(“%d\n”, sum); sum=0; i=1; i++; } while( ); { sum+=i; } while(i<=100); EXAMPLE[5-3]:null main( ) { int x; x=-1; do { x=x*x; } while( !x ); }EXERCISES[5-4]:A) 是死循环 B) 循环执行三次 C) 循环执行一次 D) 有语法错误 x=0; nullwhile和do~while比较#include main() { int i,sum=0; scanf("%d",&i); do { sum+=i; i++; }while(i<=10); printf("%d",sum); }#include main() { int i,sum=0; scanf("%d",&i); while(i<=10) { sum+=i; i++; } printf("%d",sum); }在if、while语句中,表达式后面都没有分号,而在do-while语句的表达式后面则必须加分号。null 为了使电文保密,往往按一定规律将其转换成 密码,收报人再按约定的规律将其译回原文。 例如,可以按以下规律将电文变成密码: 将字母A变成字母E(a变e,即将变成其后的第4 个字母)W变成字母A,X变成字母B,Y变成字母C,Z 变成字母D。 要求:字母按上述规律转换,非字母字符不变。 如,“China” 应转换为 “Glmre” 。 请输入一行字符,要求输出其相应的密文。请设计一个 译密码 的程序HOMEWORK[5-3]:null语句功能:5.4 for 语句语句格式: for(表达式1;表达式2;表达式3) { statements; } 当表达式2的值为真时,重复执行statements 。 null for(表达式1;表达式2;表达式3) { statements; } 表达式1— 循环初始表达式,用于进入循环体前为循环变量赋初值 由算术、赋值、逻辑和逗号表达式构成。 表达式2— 循环控制表达式,用于控制循环体语句的执行次数由关 系表达式或逻辑表达式构成。表达式3— 修改循环变量表达式,即每循环一次使得表达式1的值 就要变化一次。由算术、赋值、逻辑和逗号表达式构成。null main() { int n; for(n=1; n<=10; n++) printf(“%d,” ,n); }1, 2, 3, 4, 5 ,6 ,7, 8 , 9 , 10 , for(表达式1;表达式2;表达式3) { statements; } EXAMPLE[5-4]: main() { int n; n=1; while(n<=10 ) { printf(“%d,” ,n); n++; } }null main() { int x, y; for(x=0,y=0; x+y<=50; x++,y++) { printf(“%3d ”, x+y ); if (x%5==0) printf(“\n”); } }EXERCISES[5-8]:写出右侧 程序段的 运行结果 0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50nullmain( ) { int sum, i ; for(sum=0,i=1; i<=100; i++) sum+=i; printf(“sum=%d\n”, sum ); }main( ) { int sum=0, i =1; do { sum+=i; i++; } while( i<=100 ); printf(“sum=%d\n”, sum ); }main( ) { int sum=0, i =1; while( i<=100 ) { sum+=i; i++; } printf(“sum=%d\n”, sum ); }main( ) { int sum=0, i =1; label: if( i<=100) { sum+=i; i++; goto label; } printf(“sum=%d\n”, sum ); }1+2+3+4+5+ … …+100 null 请输出26个小写的英文字母以及 每个字母所对应的ASCII码值。HOMEWORK[5-5]:main() { char ch; for (ch=‘a’;ch<=‘z’;ch++) printf(“%c,%d, ”, ch,ch); } null 省略表达式1 该种格式常用于无需 给变量赋初值的情况 main() { int n; for( ; n<=10; n++ ) printf(“%d,” ,n); } main() { int n; n=1; for( ; n<=10; n++ ) printf(“%d,” ,n); }for 语句的特殊使用格式null 省略表达式2 即失去了对循环变量的 控制为此将导致无限循环 main() { int n; for( n=1; ; n++ ) printf(“%d,”,n); } main() { int n; for( n=1; ; n++ ) if (n>100) break; printf( “%d,” ,n ); }null 省略表达式3 即失去了修改循环变量的值 为此,在体内必须设有替代 表达式3的功能。 main() { int n; for(n=1; n<=10; ) printf(“%d,”,n); } main() { int n; for(n=1; n<=10; ) { printf(“%d,”,n); n++; } }null 省略表达式1、3 该种格式完全等价于while 语句 即进入循环体前必须有赋初值语 句,而且在体内要有修改循环变 量的值的语句。 main() { int n; for ( ; n<=10 ; ) printf(“%d,”, n ); } main() { int n ; n=1; for( ; n<=10; ) { printf(“%d,”,n); n++; } } while(n<=10) null #include “string.h” main() { char ch; for ( ; (ch =getchar()) !=‘\n’ ; ) printf( “ %c ”, ch ); } 省略所有的表达式 完全等价于 while(1) main() { int n; for( ; ; ) printf(“%d,”, n ); }while(1) null5.5 嵌套循环 嵌套循环是循环中的循环。嵌套 循环的深度可达两层、三层、四层, 甚至更多。实际层数可根据应用程序 的需要而定,但超过三层的嵌套循环 不多见。 … … for(i=1; i<=9; i++) { for(j=1; j<=9; j++) … … } … … … … while(a!=b) { for(n=1; n=5; n++) … … } … … do { … … for(; ;) { … … } … … }while( ); for(; ;) { … … while( ) { … … } … … } while( ) { … … while( ) { … … } … … } null … … for(i=1; i<=9; i++) { for(j=1; j<=9; j++) … … } … … 内层循环 外层循环null 请编写求解下列问题的程序 t=1*2*3*… …10n main() { int n, t;t=1;for(n=1; n<=10; n++)t=t*n; printf(“t=%d\n”, t); } t=1, n=1n<=10t=t*nn++输出 t(1~10)null 请设计求解下列问题的C语言程序: s=1!+2!+3!+… …+20!1!= 12!= 1*23!= 1*2*34!= 1*2*3*4 5!= 1*2*3*4*5 … … 20!= 1*2*3*4*5… …*20 i 1- 11~ i 1~20EXAMPLE[5-6]:1- 21- 31- 41- 5 1- 20j t=t*j nulls=1!+2!+3!+… …+20! s=0, t i (1~20) t=1j (1~i) 输出 st*=js+=tnull main() { int i, j, t; long s=0; } for ( ) i=1; i<=20; i++ for ( ) j=1; j<=i; j++ t=t*j; s+=t; { } printf(“%l\n”, s); s=1!+2!+3!+… …+20! i (1-20) j (1-i)t=1; null请设计按下列格式打印九九表程序。 1*1=1 1*2=2 1*3=3 … … 1*9= 9 2*1=1 2*2=4 2*3=6 … … 2*9=18 … … 9*1=9 9*2=18 9*3=27 … … 9*9=81 EXAMPLE[5-7]:abp=a*bnull a,b,p a (1~9)b (1~9)输出 a*b=p 1*1=1 1*2=2 1*3=3 … … 1*9= 9 2*1=1 2*2=4 2*3=6 … … 2*9=18 … … null main() { int a, b, p; }p=a*b for ( ) a=1; a<=9; a++ for ( ) b=1; b<=9; b++ printf( ); p=a*b; “%d a,b,p *%d =%d ”, { } { } printf(“\n”); 1*1=1 1*2=2 1*3=3 … … 1*9= 9 2*1=1 2*2=4 2*3=6 … … 2*9=18 … … null 前面我们介绍了四种能够实现循环的语句,它 们退出循环的方式通常都是以某个表达式的结果作 为判断条件,当其值为零时结束循环。除了这种正 常结束循环的方式外,还可以利用C 语言提供的专 门退出循环的语句。5.6 break 与 continue 语句nullbreak break 语句 nullcontinue continue 语句 null main() { int k=4, n=0; for(; n0; i--) { for( j=1; j<=i; j++) putchar(‘#’); for(j=0; j<=4-i; j++) putchar(‘*’); putchar(‘\n’); } … … # # # # * # # # * * # # * * * # * * * *HOMEWORK[5-11]:null 请编写打印下列图形的程序 * * * * * * * * * * * * * * * * * * * * * * * * * HOMEWORK[5-12]*: * * * * * * * * * * * * * * * * null * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * main() { int n1,n2,n3; for(n1=1;n1<=5;n1++) { for(n2=1;n2<=20-n1;n2++) printf(“ ”); for(n3=1;n3<=2*n1-1;n3++) printf(“*”); printf(“\n”); } for(n1=4; n1<=1; n1--) { for(n2=1;n2<=20-n1;n2++) printf(“ ”); for(n3=1;n3<=2*n1-1;n3++) printf(“*”); printf(“\n”); }null 请编写按下列格式打印九九乘法表的程序 HOMEWORK[5-13]:null 语句标号:语句; … … if (表达式) goto 语句标号; Summary while (表达式) { statements; } do { statements;} while(表达式); for(表达式1;表达式2;表达式3) { statements; }
本文档为【第6章 循环】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_875654
暂无简介~
格式:ppt
大小:730KB
软件:PowerPoint
页数:0
分类:其他高等教育
上传时间:2011-06-12
浏览量:20