收藏 分销(赏)

vc第八讲 WHILE.doc

上传人:xrp****65 文档编号:8319901 上传时间:2025-02-09 格式:DOC 页数:4 大小:64KB 下载积分:10 金币
下载 相关 举报
vc第八讲 WHILE.doc_第1页
第1页 / 共4页
vc第八讲 WHILE.doc_第2页
第2页 / 共4页


点击查看更多>>
资源描述
第八讲 WHILE、DO WHILE FOR语句 1、 WHILE语句 while循环控制 语句一般格式 while (表达式) 语句 表达式: l 一般为关系表达式或逻辑表达式,也可以是C语言其他类型的合法表达式 l 用来控制循环体是否执行 语句: l 称为内嵌语句,可以是基本语句、控制语句,也可以是复合语句 l 是循环重复执行的部分 功能: 计算表达式的值,为非0(逻辑真)时,重复执行内嵌语句,每执行一次,就判断一次表达式的值,直到表达式的值为0 时结束循环,转去执行while后面的语句 【例】编写程序,求100个自然数的和 即: s=1+2+3+ … +100 思路:寻找加数与求和的规律 加数i——从1变到100,每循环一次,使i增1,直到i的值超过100。i的初值设为1。 求和——设变量 sum 存放和,循环求sum=sum+i,直至i超过100。 程序: main( ) { int i,sum; i=1; sum=0; while (i<=100) { sum=sum+i; i++; } printf("sum=%d\n",sum); } 注意: l 如果while的 (表达式) 值为0,则循环体一次也不执行 (例如当i的初值=101) 。 l 在循环体中必须有使循环趋向结束的操作,否则循环将无限进行(死循环)。 l 在循环体中,语句的先后位置必须符合逻辑,否则会影响运算结果。 思考程序段的输出? while (i<=100) { i++; sum=sum+i; } l 为了保证循环正常运行,应该特别注意: – 循环控制条件的描述 – 控制条件的初始状态(初始值) – 循环体内部对控制条件的影响 2、do-while语句 l 语句一般格式 do 语句 while (表达式); l 功能: – 先执行内嵌语句(循环体),之后计算表达式的值,不为0(逻辑真)时,再执行循环体并判断条件,直到表达式的值为 0 结束循环,转去执行while下面的语句。 【例】用do-while语句 求100个自然数的和 说明: l while和do-while都能实现循环控制,while结构程序通常都可以转换成do-while结构 l 区别: l do- while 语句先执行循环体再判断条件,循环体至少执行一次; l while 语句先判断条件再执行循环体,循环体有可能一次也不执行 l do—while循环体中一定要有能使表达式值趋于0的操作(如i++),否则会出现死循环。 do-while语句的简单应用 【例】用辗转相除法求m和n的最大公约数 程序: main( ) { int m,n,r; scanf("%d, %d",&m,&n); if (m<n) { r=m; m=n; n=r; } do { r=m%n; m=n; n=r; }while(r!=0); printf("%d\n",m); } 3、for语句 l 语句一般格式 for (表达式1;表达式2;表达式3) 语句 l 功能: – 计算表达式1的值,再判断表达式2,如果其值为非0(逻辑真),则执行内嵌语句(循环体),并计算表达式3;之后再去判断表达式2,一直到其值为0时结束循环,执行后续语句。 3.1省略for语句的表达式: ⑴ 表达式1、2、3全省略,即: for ( ; ; ) 就等同于:while (1),会无限循环(死循环) ⑵ 省略表达式1和表达式3,即: for(;表达式2;) 就等同于:while( 表达式2 ) ⑶ 省略表达式2,即: for(表达式1; ;表达式3) 就等同于:表达式1; while(1){…表达式3;} 注意:在省略某个表达式时,应在适当位置进行循环控制的必要操作,以保证循环的正确执行 例如: ⑴ i=1; for ( ; i<=100; i++) sum+=i; ⑵ for (i=1; ; i++) { … if(i>100)… …} ⑶ for (i=1; i<=100; ) {…i++; … } ⑷ i=1; for ( ; ; ) { … if(i>100) … i++; … } 3.2说明: 所有用 while 语句实现的循环都可以用for 语句实现。 for(表达式1;表达式2 ;表达式3) 语句; 等价于: 表达式1; while (表达式2) { 语句; 表达式3; } 3.3for语句的简单应用: 【例】求n! ,即计算p=1×2×3×…×n的值。 思路:求阶乘与求累加的运算处理过程类似,只要将“+”变为“*”。 设置: · 乘数i ,初值为1,终值为n(n是循环控制终值,需要从键盘输入) · 累乘器 p ,每次循环令p = p*i 程序: main( ) { int i, n; long p; p=1; printf("Enter n:"); scanf("%d",&n); for (i=1; i<=n; i++) p = p * i; printf("p = %ld \n",p); } 思考: · 如何输出1!, 2!, … , n! ? · 如何求s =1!+ 2!+ … + n! ? 3.4熟悉几个循环语句 l while (!x) x++; 当 x=0 时,执行循环体x++; l while ((c=getchar( )) != '\n') n=n+1; n 称为计数器,作用是统计输入字符的个数 l while (num++<=2) ; printf("%d\n",num); 循环体是空语句,退出循环后输出num的值 l do x*=-3; while(x>5); 先执行循环体x*=-3,再判断条件(x>5) l for (n=0; n<26; n++) printf("%c ", n+'A'); 作用是输出26个大写字母 l for (sum=0, i=1; i<=100; sum=sum+i, i+=2) ; 作用是计算100以内的奇数和 4、几种循环语句的比较 l while和do-while语句的表达式只有一个,for语句有三个。 l while 和for先判断循环条件后执行循环体,do-while语句先执行循环体后判断循环条件。 while语句多用于循环次数不定的情况 do-while语句多用于至少要运行一次的情况 for语句多用于要赋初值或循环次数固定的情况 5、循环的嵌套 l 如果循环语句的循环体内又包含了另一条循环语句,则称为循环的嵌套 l 例如: #include <stdio.h> main( ) { int i, j; for ( i=1; i<10; i++ ) for ( j=1; j<=i; j++ ) printf ((j==i)?"%4d\n":"%4d",i*j); } 注意: l while、do-while、for循环语句可以并列,也可以相互嵌套,但要层次清楚,不能出现交叉。 l 多重循环程序执行时,外层循环每执行一次,内层循环都需要循环执行多次。 l 例如: for(a=1;a<=10;a++) { for (b=0;b<=5;b++) …… } 外循环执行了10次,内循环执行6次 循环正常结束时,内循环执行了10×6=60次
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 管理财经 > 管理学资料

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服