《C语言程序设计》 第5章循环结构
C语言 第五章-循环结构程序设计

执行过程如图所示。其中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循环结构程序设计

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课件

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章 循环结构

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章

表达式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单元

例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课件

}
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语言程序设计课件教案第五章循环结构教学目的掌握循环结构中的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(循环条件表达式);执行过程:先执行循环体语句,再检查循环条件表达式的值是否为真,如果为真则继续执行循环体语句,否则结束循环。
- 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); }