《C语言程序设计》 第5章循环结构
C语言 第五章-循环结构程序设计
![C语言 第五章-循环结构程序设计](https://img.taocdn.com/s3/m/05424e3610a6f524ccbf85d3.png)
执行过程如图所示。其中i为外循环的控制变 量,j为内循环的控制变量。
i =0 当 i <=10
j=0 当 j<=10
printf(“%d ”, i*j ) j++ i++
例4 编程打印“九九乘法表”。
分析:九九乘法表 1×1=1 1×2=2 1×3=3 … 2×1=2 2×2=4 2×3=6 … 3×1=3 3×2=6 3×3=9 … …… 9×1=9 9×2=18 9×3=27 …
i ++ ; } while ( i <= 100 ) ; printf ( " %d " , sum ) ; }
结果相同
同样是下列程序,但如果while后面的表达式结果一开始就是 假时,两种循环结果会不一样。
main ( ) /*程序1*/
{ int i , sum = 0 ; i = 101 ;
所以程序需要设计成二重循环。由于题目只 要求找到一组解,所以在循环过程中只要找到一组 满足条件的x, y, z就可以跳出循环。
跳出循环的方法可以采用break语句,但是, 因为是二重循环,所以要考虑使用break是否方便。
程序 百钱买百鸡问题。 void main ( ) { int x , y , z ;
打印第2行 ( i = 2 ) for (j=1;j<=9;j++) printf(“%5d”,i*j) ; printf ( “ \n ” ) ; /*换行打印*/
…… 打印第9行 ( i = 9 )
for (j=1;j<=9;j++) printf(“%5d”,i*j) ; printf ( “ \n ” ) ; /*换行打印*/
C语言程序设计_05循环结构程序设计
![C语言程序设计_05循环结构程序设计](https://img.taocdn.com/s3/m/d298f79f6529647d272852ad.png)
5.2 DO…WHILE循环结构 5.2.1 DO…WHILE语句的格式 DO…WHILE语句的一般格式为: DO 语句 WHILE(表达式); DO…WHILE语句中的表达式表示循环的条件,可 以是任何表达式,常用的是关系表达式和逻辑表达 式。表达式必须加圆括号。语句是重复执行的部分, 称作循环体。
由亍循环体在表达式2乊后表达式3乊前执行所以把循环体语句放在表达式3的开头循环体语句不原来的i构成逗号表达式作为循环语句新的表达式3从而也就没有循环体语句了
第5章 循环结构程序设计
5.1 WHILE循环结构 5.2 DO…WHILE循环结构 5.3 FOR循环结构 5.4 与循环有关的控制语句 5.5 3种循环语句的比较 5.6 循环的嵌套 5.7 循环结构程序举例 本章小结
图5-6 FOR语句执行过 程
FOR语句的执行过程如图5-6所示。具体由以下几步 完成: (1)求表达式1。 (2)求表达式2,并判定其值为0或非0。若值为非0, 转步骤(3);否则结束FOR语句。 (3)执行语句,然后求表达式3。 (4)转向步骤(2)。 由FOR语句的执行流程可知,表达式1的作用是为循 环控制的有关变量赋初值,表达式2是循环控制条件, 表达式3用于修正有关变量,语句是重复执行部分。
【例5.7】输入20个数,求出其中的最大值与最小值。
5.3.3 FOR语句的各种变形 1.在FOR语句中省略表达式 FOR语句中的3个表达式可以部分或全部省略,下面 给出语句的4种基本变形。 (1)表达式1移至FOR语句前,但它后面的分号必 须保留。这时FOR语句的形式为: 表达式1; FOR(; 表达式2; 表达式3) 语句
(2)表达式3移至循环体语句之后,但它前面的分 号必须保留。FOR语句的形式为: FOR(表达式1; 表达式2;) { 语句; 表达式3; } 对于求P=5!的程序段,省略表达式3,将其放在循环 体中,则程序段写成:
C语言第5章循环结构PPT课件
![C语言第5章循环结构PPT课件](https://img.taocdn.com/s3/m/d9023e1f5fbfc77da369b1c0.png)
3. 用for 语句实现循环 4. 循环的嵌套
5. break语句和continue语句 6. 几种循环的比较 7. 程 序 举 例
第2页/共63页
一、循环概述
3
第3页/共63页
在很多实际问题中会遇到有规律性的重复运算,因 此在程序中就需要将某些语句重复执行。 • 一组被重复执行的语句称为循环体; • 每重复一次,都必须作出是继续还是停止循环的决 定,这个决定所依据的条件称为循环条件;
do {
......
for(;;) { ......
}while();
}
47
第47页/共63页
例7. 打印乘法“九九表”
1 2 3 4 56 7 89 11 22 4 33 6 9 4 4 8 12 16 5 5 10 15 20 25 6 6 12 18 24 30 36 7 7 14 21 28 35 42 49 8 8 16 24 32 40 48 56 64 9 9 18 27 36 45 54 63 72 81
循环的概念 用while语句和do-while语句实现循环
用for 语句实现循环 循环的嵌套
break语句和continue语句 几种循环的比较 程序举例
第44页/共63页
循环的嵌环中还可以嵌套循环,这就是多重循环。
循环1
循环2
28
第28页/共63页
29
第29页/共63页
(2):从高位到低位求每一位。
30
第30页/共63页
(3):从低位到高位求每一位。
31
第31页/共63页
循环结构程序设计
1. 循环的概念 2. 用while语句和do-while语句实现循环
C语言程序设计:第5章 循环结构
![C语言程序设计:第5章 循环结构](https://img.taocdn.com/s3/m/78bcfe7f770bf78a64295418.png)
12
do...while语句(cont...)
课堂练习: 1.输出1---n之间的数,其中n从键盘输入。
int main(void) {
//1.定义变量i和n //2.输入n的值 //3.思考循环的开始条件:i从1开始 //4.思考循环的结束条件:i++,i > n //5.循环的条件:i<=n //6.循环要做的事情:输出i的值 return 0; }
} 相当于 while(1) {
}
26
小结
❖for(i=m;i<n;i++)//循环次数:n-m次 ❖for(i=m;i<=n;i++)//循环次数:n-m+1次
27
循环语句的练习
课堂练习: 1.输出n---1之间的数,其中n>1且n从键盘输入。 2.计算1*2*3*...*n的值(n的阶乘n!), 其中n从键盘输入。 3.计算10- 1/2 - 1/3 -....1/n的值 以上练习分别以while、do...while、for语句实现
int main(void) {
//1.定义变量i,n,sum //2.输入n的值 //3.思考循环的开始条件:i从1开始 //4.思考循环的结束条件:i++,i > n //5.循环的条件:i<=n //6.循环要做的事情:累加i的值 //7.输出计算结果 return 0; }
24
for语句(cont...)
{
sum = sum + i;
if(sum > 100)break;
C语言程序设计第5章
![C语言程序设计第5章](https://img.taocdn.com/s3/m/d96179a8c77da26925c5b0b8.png)
表达式2 为真?
N
Y 循环体
计算表达式3
上例:编写程序求1+2+3+…+100的和。 #include <stdio.h> main() { int i; int s=0; for (i=1;i<=100;i++) s=s+i; printf(“s=%d\n”,s); }
练习:以下程序执行后的输出结果是_____。
main() {int k=5,n=0; do {switch(k) {case 1: case 3: n+=1; k--; break; default: n=0;k--; case 2: case 4:n+=2;k--;break;} printf(“%d”,n); } while(k>0&&n<5); } 程序运行后的输出结果是(235)
0
填空:执行语句s=0;n=5;while(--n) s+=n;后变量s,n 值依次为_______。
10,0
练习:设有如下程序段: int x=0,s=0; while (!x!=0) s+=++x; printf(“%d”,s); A)运行程序段后输出0 B)运行程序段后输出1 √ C)程序段中的控制表达式是非法的
* 练习:下面程序的输出结果是: ** *** main( ) ****
{ int i,j;
for(i=4;i>=1;i--) { printf(“*”); for(j=1;j<=4-i;j++) printf(“*”);
printf(“\n”);
} }
5.5 break和continue语句在循环体中的作用 break语句也可以用在循环体中,作用是结束循环。
C语言程序设计第5单元
![C语言程序设计第5单元](https://img.taocdn.com/s3/m/77d03376e45c3b3567ec8bf9.png)
例5.2流程图
N
8
5.1 while语句
程序代码: #include<stdio.h> main() { int i=1,n;
float fac=1; printf("please input an integer>=0:\n"); scanf("%d",&n); if(n==0||n==1)
printf("factorial is 1.\n"); else
int i,sum=0,score; float ave=0; printf("\n计算学生总成绩和平 均成绩\n"); printf("请输入10名学生的成 绩:\n");
for(i=1;i<=10;i++) { scanf("%d",&score); sum=sum+score; } ave=sum/10.0; printf("总成绩为%d 平均成绩为
1. break语句
出现在循环体中的break语句使循环结束。若在多层循环体 中使用break语句,则只结束本层循环。
【例5.11】使用for语句输出50个“*”,使用break控制数量。
#include <stdio.h>
main()
{
int i;
for(i=1;;i++)
{
if(i>50) break;
方法三:
#include "stdio.h"
int main()
{
int i=1;
for(;i<=10;)
{
第5章 循环结构程序设计PPT课件
![第5章 循环结构程序设计PPT课件](https://img.taocdn.com/s3/m/3b1c6859bed5b9f3f90f1c5a.png)
}
C语言程序设计
第5章 循环结构程序设计
§ 5.2 用while语句实现循环i=1w; hile (i<=100)
2、while语句的注意事项
{ sum=sum+i;
注意:
i++; }
(1) 循环体如果包含一个以上的语句,应该用花括弧括
起来,以复合语句形式出现
(2) 在循环体中应有使循环趋向于结束的语句。如果无
C语言程序设计
第5章 循环结构程序设计
§ 5.2 用while语句实现循环
1、while语句的一般形式
while语句用来实现“当型”循环结构 一般形式: while (表达式)
循环体语句
当表达式为非0值时,执行while 语句中的循环体语句 其特点是:
先判断表达式,后执行语句
C语言程序设计
第5章 循环结构程序设计
} 运行结果:
}
1↙ sum=55 再运行一次:
}说明:当while后面的表达式的第一次的
值为“真”时,两种循环得到的结果相
11↙ sum=0
同。否则,二者结果不相同
C语言程序设计
第5章 循环结构程序设计
§ 5.4 用for语句实现循环
1、for语句的一般形式
C语言中的for语句使用最为灵活,不仅可以用于 循环次数已经确定的情况,而且可以用于循环次数 不确定而只给出循环结束条件的情况,它完全可以 代替while语句
语句,转到第(5)步
(3) 求解表达式3
(4) 转第(2)步骤继续执行
(5) 循环结束,执行for语句下面的一个语句
C语言程序设计
第5章 循环结
执行表达式1
循环初始条件
C语言程序设计:第5章-循环结构-课件教案
![C语言程序设计:第5章-循环结构-课件教案](https://img.taocdn.com/s3/m/e86ea564f11dc281e53a580216fc700abb6852bd.png)
C语言程序设计课件教案第五章循环结构教学目的掌握循环结构中的while语句、dowhile语句、for语句的用法,掌握中断语句中break和continue语句的用法。
教学要求1.熟练掌握while语句、dowhile语句、for语句2.熟练掌握break语句、continue语句重点和难点1.while语句、dowhile语句、for语句的使用2.break语句、continue语句的使用教学支撑环境与教学资源:1.笔记本电脑2.VC20103.投影仪教学方法讲授法、练习法、讨论法授课课时6课时教学过程AM一、课程引入计算1+2+3+...+n有几种方法,需要多少步骤?、循环结构语句什么时候用到循环结构:处理重复的问题的时候。
循环结构的三大语句:while语句、dowhile语句、for语句。
1.while语句while(循环条件表达式)循环体语句;执行过程:只有循环条件表达式的值为真就执行循环体语句,先判断后执行。
1.输出1---n之间的数intmain(void){inti=1;intn=0;printf("请输入n的值:");scanf("%d",&n);//1015while(i<=n)15printf("%d\n",i);i++;}return0;}2.计算m+...+n 的值intmain(void){inti=1;intn=0;intm=0;intsum=0;printf("请依次输入m 和n 的值:");scanf("%d%d",&m,&n);//m+...n10while(m<=n){sum=sum+m ;m++;}printf("sum=%d\n",sum);return0;}2.do...while 语句do循环体语句;}while(循环条件表达式);执行过程:先执行循环体语句,再检查循环条件表达式的值是否为真,如果为真则继续执行循环体语句,否则结束循环。
第5章 循环结构程序设计
![第5章 循环结构程序设计](https://img.taocdn.com/s3/m/49f3b798d1d233d4b14e852458fb770bf78a3b26.png)
运行结果:
printf("%d\n",sum);
sum = 5050
}
while语句和用do-while语句的比较:
一般情况,用while循环语句和用do -while循环语句处理问 题时,若循环体部分一样,结果也一样。但是如果while循 环语句循环条件一开始为“假”,则循环结果不同。while 循环语句一次也不执行,而do -while循环语句不论条件是 否成立,先执行一次循环体语句。
循环变量不增值。无终止地执行循环体。
例5-7用for语句求1 + 2 + 3 + … + 100
#include <stdio.h> void main() {
int i,sum=0; /*将累加器sum初始化为0*/ for(i=1; i<=100; i++) sum += i;/*实现累加*/ printf("sum=%d\n",sum); } 程序运行的结果为: sum=5050 解析:先执行变量赋初值,然后判定循环继续条件, 如果为“真”,执行循环体语句,i 为运算项目和循 环变量,执行完一次,增加一次,最后累加和。
if(n%3!=0) /*循环体*/
printf("%5d",n);
}
§5.4 多重循环
• 当循环中的内嵌语句是循环语句时,称为循 环的嵌套使用。内嵌的循环中嵌套循环,称 为多重循环。
C语言程序设计技术基础
第5章 循环结构程序设计
第5章 循环结构程序设计
5.1 while 循环语句 5.2 do while循环语句 5.3 for循环语句 5.4 多重循环 5.5 break语句与continue语句 5.6 几种循环语句的比较 5.7 循环结构程序举例
大一C语言教材《C语言程序设计》第5章 循环程序设计
![大一C语言教材《C语言程序设计》第5章 循环程序设计](https://img.taocdn.com/s3/m/36ea8cfd6f1aff00bfd51e1b.png)
复合赋值运算符
种类:+= -= *= /= %= 《= 》= &= 含义: 变量 op= 表达式 变量 = 变量
^= |= op 表达式
x%=3 x*=y+8 a+=3
x=x%3 x=x*(y+8) a=a+3
运算符和表达式
说明:
结合方向:自右向左 左侧必须是变量,不能是常量或表达式
例 int i; 例 3=x-2*y; i=2.56; //结果 i=2; a+b=3;
赋值转换规则:使赋值号右边表达式值自动 转换成其左边变量的类型
赋值表达式的值与变量值相等,且可嵌套g a=b=c=5 a=(b=5) a=5+(c=6) a=(b=4)+(c=6) a=(b=10)/(c=2) //表达式值为5,a,b,c值为5 // b=5;a=5 //表达式值11,c=6,a=11 //表达式值10,a=10,b=4,c=6 //表达式值5,a=5,b=10,c=2
例 -i++ i=3;
-(i++) printf(“%d”,-i++);
//-3
无论是作为前缀还是作为后缀运算符,对于变量本身来 说自增1或自减1都具有相同的效果,但作为表达式来说却有 着不同的值。
例
j=3; k=++j; j=3; k=j++; j=3; printf(“%d”,++j); j=3; printf(“%d”,j++); a=3;b=5;c=(++a)*b; a=3;b=5;c=(a++)*b;
c5第五章 循环结构程序设计
![c5第五章 循环结构程序设计](https://img.taocdn.com/s3/m/5428bb06bb68a98271fefae4.png)
conio是Console Input/Output(控制台输 入输出)的简写,其中定义了通过控制 台进行数据输入和数据输出的函数,主 要是一些用户通过按键盘产生的对应操 作,比如getch()、putch()函数等等。
2
附件: warning C4013: „system‟ undefined; assuming extern returning int 警告信息的解决
4
5.1 while语句
1、while 语句 常称为“当型”循环语句。
表达式
!0 循环体
0
5
2 、while 语句的形式: while (表达式)
循环体;
特点:先判断表达式,后执行语句。 说明: – 循环体有可能一次也不执行 – 循环体可为任意类型语句 – 下列情况,退出while循环 • 条件表达式不成立(为零) • 循环体内遇break,return,goto – 无限循环:
7
例 (ch5_02.c)显示1~10的平方
#include <stdio.h> #include <conio.h> main() { int i=1; while(i<=10){ 运行结果: 1*1=1 2*2=4 3*3=9 4*4=16 5*5=25 6*6=36 7*7=49 8*8=64 9*9=81 10*10=100 8
printf("%d*%d=%d\n",i,i,i*i);
i++; } getch(); }
5.2 do--while语句
1、do--while语句 常称为“直到型”循
环语句。
循环体
!0
表达式
0
第5章-C语言程序设计(第2版)教材习题答案
![第5章-C语言程序设计(第2版)教材习题答案](https://img.taocdn.com/s3/m/7314b9dd195f312b3169a516.png)
【教材】《C语言程序设计(第2版)》清华大学出版社,黄保和,江弋编著。
2011年10月第二版。
ISBN:978-7-302-26972-4。
售价:35元。
【答案版本】本习题答案为2012年2月修订版本。
一、选择题1. 设有程序段”int k=10; while(k=0) k=k-1;”,则下面叙述正确的是D)循环体语句一次也不执行。
A. while循环执行10次B. 循环是无限循环C. 循环体语句执行一次D. 循环体语句一次也不执行2. 设有程序段”int x=0,s=0;while(!x!=0) s+=++x; printf(“%d”,s);”则A)运行程序段后输出1。
A. 运行程序段后输出1B. 程序段执行无限次C. 运行程序段后输出0D. 程序段中的控制表达式是非法的3. 下面循环语句中,错误的是D) int a=1,b=2;do b-- while(b= =0);。
A. int a=1,b=2; while(b--);B. int a=1,b=2; do a++; while(a==b);C. int a=1,b=2; while(a=3);D. int a=1,b=2; do b-- while(b==0);4. 已知”int i=5;”,下列do…while循环语句的循环次数为C) 5。
do{ printf(“%d\n”,i--); } while(i!=0);A. 0B. 1C. 5D. 无限5. 循环语句”for(int i=0,j=10; i==j; i++,j--)”的循环次数是A) 0。
A. 0B. 5C. 10D. 无限6. 下述有关break语句的描述中,不正确的是C) break语句用于if语句的内嵌语句内,它结束该if语句。
A. break语句用于循环体内,它将结束该循环B. break语句用于开关语句,它结束该开关语句C. break语句用于if语句的内嵌语句内,它结束该if语句D. break语句在一个循环体内可使用多次7. 下面关于循环语句的描述中,错误的是B)循环体内必须同时出现break语句和continue 语句。
C语言程序设计循环结构程序设计
![C语言程序设计循环结构程序设计](https://img.taocdn.com/s3/m/c7d92fa7aff8941ea76e58fafab069dc5122476c.png)
假
体现式
真
语句
假如体现式旳值一开始就为0,则语 句一次也不会被执行。
上一页
下一页
while语句举例
问题: 求学生旳平均成绩,以输入负数成绩为结束
算法分析:
1. 定义变量score存储学生成绩,定义s=0存储累加旳成绩,
定义n=0统计录入旳成绩数目。
2. 输入第一种学生旳score
3. 若score>=0,执行第4步,不然执行第7步
上一页
下一页
例: 求 1+2 +…+99
分析:用变量i从1到99循环, 把i旳值累加到变量s中,最 终输出s旳值。
程序如下:
#include<stdio.h> main( ) { int i,s=0;
for(i=1;i<=99;i++) s=s+i;
printf(“s=%d”,s); }
上一页
下一页
在某些情况下,for语句中旳体现式1、2、3都能够 省略,而改用其他旳方式来实现这些功能。我们还用 上面旳例子阐明for语句省略体现式旳情形。
上一页
下一页
1.省略体现式1: #include<stdio.h> main( ) { int i=1,s=0;
for(;i<=99;i++) s=s+i;
因为do-while语句至 少要被执行一次,特
别要注意n和s旳取值 问题!
s=s+score;
}while(score>=0);
if(n>1) printf (“ \n %f” ,(s-score)/(n-1));
else printf(“no student score!”);
c语言 第5章循环结构(while do-while for)
![c语言 第5章循环结构(while do-while for)](https://img.taocdn.com/s3/m/331af8cc08a1284ac85043dd.png)
第1次运行: Input data: 11 22 33 44 55 66 77 88 99 0 1 2 11 22 33 44 55 66 77 88 99 0 sum=495 第1次运行: Input data: 0 0 sum=0 sum的初值与0的和
5.4 for语句
#include <stdio.h> int main() { int i=1,sum=0; while (i<=100) { sum=sum+i; i++; } printf("sum=%d\n",sum); return 0; for (i=1;i<=100;i++) } #include <stdio.h> int main() { int i=1,sum=0; do { sum=sum+i; i++; }while(i<=100); printf("sum=%d\n",sum); return 0; }
i++ for ( i = 1; i <= 100; i = i + 1 ) printf ( “**********\n” );
语句是?
【例1】在3~100之间所有3的倍数中,找出个位 数为2的数。
编程点拨 3~100内3的倍数有3 6 9 … 99 for ( i=3; i<=100; i=i+3 )
第1次运行: Input data: 11 22 33 44 55 66 77 88 99 0 1 2 11 22 33 44 55 66 77 88 99 sum=495 第2次运行: Input data: 0 (空一行) sum的初值 sum=0
C语言程序设计教程(第4版)_第5章_循环结构
![C语言程序设计教程(第4版)_第5章_循环结构](https://img.taocdn.com/s3/m/6daba22783c4bb4cf7ecd11f.png)
5.1 for语句
程序流程图: 程序:example5_2.c 思考: ①该算法的缺点; ②设计更好的算法。 ③假如输入的数可以为任意整数, 如果a≤b,计算 i ; 如果a>b,则计算 i 。 请设计算法并编写程序验证。
i b ia ia i b
5.1 for语句
例3:编写程序,从键盘输入m和n的值,用符号“*”在屏幕 上打印出如下所示具有m行n列的矩形图案。 ******* ******* ******* ******* ******* ******* ******* ******* 分析: ①图案有规律,共有m行,每行有n个*号。 ②可采用循环嵌套的方式: 第1层(外层)控制行数,用i来表示,输出m行“*” ; 第2层(内层)控制列数,用j来表示,输出n列“*” 。
100
5.1 for语句
for语句所具有的特性。 1.<初始表达式>可以省略,但须保留分号(;),同时在for之 前必须给循环控制变量赋值,形式为: <初始表达式>; for(;<条件表达式>;<循环表达式>) <循环体语句> 2.<条件表达式>一般不可省略,否则为无限循环。 例如: for(i=1;; i++) sum =sum+i; 相当于条件总为真,程序会一直不停地执行直到“数据溢出”。
5.2 while语句
例7:编写程序,统计从键盘输入的字 符个数(回车换行符也是一个字符) ,当遇到结束标志时程序结束。 分析:关键是循环计数。
开始 count=0
(ch=getchar())!=EOF
F
设置一个累加器count(初值为0),
每次从键盘输入一个字符,只要该字 符的值不等于结束标志,累加器的值 就增1:count=count+1; 算法流程图如图所示。 程序: example5_7.c
《C语言程序设计》课件 《C语言程序设计》课件 第5章-循环结构程序设计
![《C语言程序设计》课件 《C语言程序设计》课件 第5章-循环结构程序设计](https://img.taocdn.com/s3/m/b0cb1efba2161479161128db.png)
Page 28
参考代码
#include<stdio.h> void main() {
char ch; int char_num=0,int_num=0,other_num=0; while((ch=getchar())!=‘\n’) //回车键结束输入 {
if(ch>='A'&&ch<='Z'||ch>='a'&&ch<='z') char_num++;
printf("************\n ");
printf("************\n ");
printf("************\n ");
printf("************\n "); printf("************\n "); 等价 for(int i=1;i<=8;i++)
{ s=s+i;
i++; //表达式3移至循环体末尾
}
printf("s=%d",s);
}
<<C语言程序设计>>
Page 19
随堂练习
例 编程计算n的阶乘。
n!=1 2 3 ……〔n-1〕 n
思路:
类似于累加求和,每一次循环乘上一个数字,求和 将和初始化为0,这里应把积初始化为?
<<C语言程序设计>>
#include "stdio.h" void main( ) { int i,sum=0;
北京航空航天大学《C语言程序设计》课件-第五章循环结构程序设计
![北京航空航天大学《C语言程序设计》课件-第五章循环结构程序设计](https://img.taocdn.com/s3/m/f4145d4b793e0912a21614791711cc7931b7783c.png)
2023/4/2
5.3 do-while语句
15
语句一般格式
do
{语句组} while (表达式);
功能:
– 先执行内嵌语句(循环体),之后计算 表达式的值,不为0(逻辑真)时,再 执行循环体并判断条件,直到表达式的 值为 0 结束循环,转去执行while下面 的语句。
2023/4/2
do-while循环的算法
for(n=100;n<=200;n++) {
if (n%7!=0) continue;
printf("%6d",n); j++; if (j%10==0)
printf("\n"); } printf(" \n j=%d\n",j); }
29
2023/4/2
5.5.2 循环中break的应用
30
功能:
}
无循环体
} 循环体
2023/4/2
5.5 循环结构中的跳转语句
25
有如下三种语句实现跳转: – continue语句 – break语句 – goto语句
功能:在循环语句的循环体中使用,可 以进行循环的流程控制
2023/4/2
5.5.1 continue语句及应用
26
功能:
– 中断循环体的本次执行(即跳过循环体中尚未 执行的语句),立即开始执行下一次循环。
– 利用break语句能够强迫终止本层循环, 转到后续语句执行。
while语句
表达式? N
Y
… break;
…
do-while语句
… break;
…
表达式? N
Y
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
5.1 while语句 5.2 do-while语句
5.3 for语句
5.4 三种循环语句的比较 5.5 循环的嵌套 5.5 break语句和continue语句 5.7 综合实例
1
第5章 循环结构
循环结构又称重复结构,可以完成重复 性、规律性的操作。 如求若干数的和、迭代求根等等。 C语言共有三种类型的循环语句: – while – do-while – for
}
} 运行结果为: 1 2
运行结果为: *1 *2 **3
8
# include "stdio.h" void main() { char c;】 输入一行字符,按字母、数字和其它分成三类, 【例 5.4 int alpha,digit,other; 分别统计各类字符的数目 (换行符'\n'不在统计范围内)。 alpha=digit=other=0; 字母的条件: c>='a'&&c<= 'z'|| c>= 'A'&&c<= 'Z'成立, printf("input characters end of newline:\n"); 则 c为一个字符。 while(c=getchar()!='\n') 数字的条件: c>=‘ ’&&c<= ‘9’成立,则 if (c>='a'&&c<= 'z'||0 c>= 'A'&&c<= 'Z') c为一个数字。 alpha++; 算法: else if (c>='0'&&c<= '9') 0。 ⑴ 将各计数器变量置初值为 digit++; ⑵ 提示用户输入一行字符。 else ⑶ 读入一个字符。 other++; ⑷ 检查 c是否为换行符‘\n’,如果不是,则检查c符合哪种字 printf("alpha=%d\ndigit=%d\nother= 符条件,并将相应计数器变量的值加 1,然后转步骤⑶(循 %d\n", alpha,digit,other); 环);如果 c是'\n'字符,则结束循环,转步骤⑸。 9 } ⑸ 输出计数结果。
循环体
假
3
5.1 while语句
【例5.1】编程实现1+2+3+…+100。
# include "stdio.h" 用传统流程图(图5.2)和N-S结构流图 (图 5.3)表示算法。 main() { int i,sum=0; i=1 i=1; 当i<=100 while(i<=100) { sum=sum+i sum+=i; i=i+1 i++; } 图5.3 printf("%d\n",sum); } 图5.2
4
5.1 while语句
需要注意的是: ⑴循环体如果包含一个以上的语句,应该用 花括号括起来,以复合语句的形式出现。如 果不用花括号,则while语句的范围只到 while 后面第一个分号处。例如本例中 while 语句若 无花括号,则 while 语句范围只到“ sum+=i;” 。
⑵在循环体中应该有使循环趋向于结束的语 句。如无此语句,循环将永不结束。
2
5.1 while语句
While语句的一般格式: 流程图: while(表达式) { 循环体 } 表达式 功能:先判断表达式的值的真假,若 为真(非零)时,就执行循环体的语句 真 系列,否则退出循环结构。 说明:所谓循环是指使用一定条件对 同一个程序段重复执行若干次。被重 复执行的部分(可能由若干语句组成) 称为循环体。
5
5.1 while语句【例5.2】看一个简单 Nhomakorabea印数程序。
# include "stdio.h"
main() {
int number=0;
while(number<=1) { number++;
运行结果为: 1 2
printf("%d\n",number); } }
6
5.1 while语句
【例5.3】 第二个印数程序。
5.1 while语句
# include "stdio.h" #【例 define IN】输入一正文,统计正文包含的行数,字数和字符数。 1 5.4 # define OUT 0 分析:正文的一行是以 '\n'为结束标志的一串字符,一个 /*count lines,words and characters in input*/ void main(void) 字是以 ' '为结束标志的一串字符。而字符数则是对每个输入 { 的字符(不包含 EOF)进行计数 . int c,nl,nw,nc,state; state=OUT; 算法: nl=nw=nc=0; ⑴将标志state置初值0,表示字符不在字中;各计数器变量均 printf("input a text end of ctrl+z:\n"); 置初值为0。 while((c=getchar())!=EOF) { ⑵ 读一个字符c,如果c不是EOF,则 ++nc; ⑵-1 字符数加1。 if(c=='\n') ++nl; -2 若c是 '\n'则行数加1。 if(c==' ⑵ '|| c=='\n'|| c=='\t') state=OUT; ⑵-3 如果c是空格字符‘ ’、换行字符‘\n’ 或制表字符‘ else if (state==OUT) 将标志置为 0,表示c字符不在字中;否则(c为非空白符),如 { 果标志为0(表示c是字的第一个字符)则将字数加1,并修改标 state=IN; ++nw; 志为1(表示当前字符c是一个字中的字符)。 }/*end⑵ of -4 else-if*/ 转步骤⑵循环. }/*end of while*/ 如果c是EOF ,则循环结束,转步骤⑶ 10 printf("lines=%d words=%d characters=%d\n",nl,nw,nc); } ⑶ 输出计数结果。
# include "stdio.h" main() { int number=0; while(number++<=1) printf("*%d\n",number); 运行结果为: *1 *2 **3
printf("**%d\n",number);
}
7
5.1 while语句
# include "stdio.h" main() { int number=0; while(number<=1) { number++; printf("%d\n",number); # include "stdio.h" main() { int number=0; while(number++<=1) printf("*%d\n",number); printf("**%d\n",number); }