C程序的流程控制管理概述gbh.pptx

上传人:jix****n11 文档编号:91047626 上传时间:2023-05-21 格式:PPTX 页数:102 大小:570.69KB
返回 下载 相关 举报
C程序的流程控制管理概述gbh.pptx_第1页
第1页 / 共102页
C程序的流程控制管理概述gbh.pptx_第2页
第2页 / 共102页
点击查看更多>>
资源描述

《C程序的流程控制管理概述gbh.pptx》由会员分享,可在线阅读,更多相关《C程序的流程控制管理概述gbh.pptx(102页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第第3 3章章 C C程序的流程控制程序的流程控制 3.1 C语句语句3.2 赋值语句赋值语句3.3 输入输出输入输出3.4 顺序结构程序设计顺序结构程序设计3.5 选择结构程序设计选择结构程序设计3.6 循环结构程序设计循环结构程序设计 C语句分为语句分为5类:类:控制语句控制语句:完成一定的控制功能。:完成一定的控制功能。选择选择语句:语句:ifelse、switch 循环语句:循环语句:for、while、dowhile 结束本次循环语句:结束本次循环语句:continue 中止执行中止执行switch或循环语句:或循环语句:break 转向语句:转向语句:goto 从函数返回语句:从函

2、数返回语句:return3.1 C语句语句函数调用语句函数调用语句:由一个函数调用加一个:由一个函数调用加一个分号构成。分号构成。例如:例如:printf(This is a C statement.);表达式语句表达式语句:由一个表达式加一个分号:由一个表达式加一个分号构成。构成。例如:例如:a=3;空语句空语句:只有一个分号(:只有一个分号(;)的语句。)的语句。复合语句复合语句:用用 括起来的一些语句。括起来的一些语句。例如:例如:z=x+y;t=z/100;printf(%f,t);3.2 赋值语句赋值语句1.赋值运算符:赋值运算符:=、+=、-=、*=、/=、%=等等作用:将一个数据

3、赋给一个变量。作用:将一个数据赋给一个变量。2.赋值表达式赋值表达式 形式:形式:变量变量=表达式表达式 将表达式的值赋给变量将表达式的值赋给变量 例如:例如:a=5 b=a*4 变量变量(+、-、*、/、%)=表达式表达式将变量与表达式的值作相应运算后再赋给将变量与表达式的值作相应运算后再赋给变量。变量。例如:例如:x-=8 等价于等价于 x=x-8 y%=a+3 等价于等价于 y=y%(a+3)3.赋值表达式的值:等于左边赋值表达式的值:等于左边变量变量的值。的值。4.赋值表达式后加分号构成赋值语句。赋值表达式后加分号构成赋值语句。写出下面表达式运算后写出下面表达式运算后a的值的值(a=3

4、*5)=4*3(a=3*5)=4*3a=3*5 a的值为的值为 15a=4*3 a的值为的值为 12a*=a a的值为的值为1212144a-=144 a的值为的值为1441440a+=0 a的值为的值为 0写出下面表达式运算后写出下面表达式运算后a的值,设原来的值,设原来a=12,a已定义为整型变量。已定义为整型变量。a+=a-=a*=a 字符输出函数字符输出函数:putchar 字符输入函数字符输入函数:getcharu 格式输出函数格式输出函数:printfu 格式输入函数格式输入函数:scanf5C语言无语言无I/O语句,语句,I/O操作由函数实现操作由函数实现5#include 头文

5、件头文件3.3 输入输出输入输出格式:格式:printf(格式控制格式控制,输出表列输出表列)功能:按指定格式向显示器输出数据功能:按指定格式向显示器输出数据printf函数(格式输出函数)函数(格式输出函数)输出表列:要输出的数据(可以没有,多个时以输出表列:要输出的数据(可以没有,多个时以“,”“,”分隔)分隔)格式控制:格式控制:格式说明:格式说明:%修饰符修饰符 格式字符格式字符,用于指定输出格式,用于指定输出格式转义字符:转义字符:nn,tt普通字符:原样输出普通字符:原样输出3.3.1 格式输出格式输出printf 格式字符格式字符格式字符格式字符使用形式使用形式功能说明功能说明d

6、%d%md%ld%mld带符号的十进制整数带符号的十进制整数o%o%mo%lo无符号的八进制整数无符号的八进制整数x,X%x%mx%lx无符号的十六进制整数无符号的十六进制整数u%u%lu 无无符号的十进制整数符号的十进制整数f%f%m.nf%-m.nf小数形式的单、双精度数小数形式的单、双精度数e,E%e%m.ne%-m.ne指数形式的单、双精度数指数形式的单、双精度数g,G%gf f、e e格式中较短者忽略格式中较短者忽略0 0c%c%mc输出一个字符输出一个字符s%s%ms%-ms%m.ns%-m.ns输出字符串输出字符串%输出输出“%”“%”其中:其中:l l 用于长整型数用于长整型数

7、 n n 小数位数或截取的字符个数小数位数或截取的字符个数m m 输出域的宽度输出域的宽度 -域内左对齐域内左对齐1%d以十进制整数形式输出。以十进制整数形式输出。例:例:#include void main()int a=123;long b=123456;printf(%d,%5d,%-5d,%2dn,a,a,a,a);printf(b=%ld,b);运行结果:运行结果:123,123,123,123b=123456 2%f以小数形式输出单精度和双精度实数。以小数形式输出单精度和双精度实数。整数部分全部输出,并输出整数部分全部输出,并输出6位小数。位小数。例例3.10:按指定的小数位数输出

8、实数:按指定的小数位数输出实数#includevoid main()float d=12.345;printf(d=%f,d=%.2f,d=%10.2f,d,d,d);运行结果:运行结果:d=12.345000,d=12.35,d=12.353%c输出一个字符。输出一个字符。例:例:#include void main()char c=a;printf(%c,c);运行结果:运行结果:a4%s输出一个字符串。输出一个字符串。例:例:#include void main()printf(%sn,CHINA);printf(%3s,%7.2s,%-5.3s,CHINA,CHINA,CHINA);运

9、行结果:运行结果:CHINACHINA,CH,CHI 3.3.2 scanf函数(格式输入函数)函数(格式输入函数)格式:格式:scanf(格式格式控制控制,地址表列),地址表列)功能:按指定格式从键盘输入数据,存入地址功能:按指定格式从键盘输入数据,存入地址表列指定的存储单元中表列指定的存储单元中,并按回车键结束并按回车键结束地址表地址表列:变量的地址,用取地址运算符列:变量的地址,用取地址运算符&例:例:scanf(%d,&a);输入:输入:10 则则 10 ascanf 格式字符格式字符格式字符格式字符使用形式使用形式功能说明功能说明d%d%md%ld%hd 带符号的十进制整数带符号的十

10、进制整数o%o%mo%lo%ho无符号的八进制整数无符号的八进制整数x,X%x%mx%lx%hx无符号的十六进制整数无符号的十六进制整数u%u%lu 无符号的十进制整数无符号的十进制整数f%f%mf%lf 小数形式的单、双精度数小数形式的单、双精度数e,E%e%le同上同上g,G%g 同上同上c%c 输入单字符输入单字符s%s 输入字符串输入字符串*%*不赋给相应变量不赋给相应变量其中:其中:mm数据输入域的宽度数据输入域的宽度 h h用于短整型数据用于短整型数据l l 用于长整型或用于长整型或doubledouble型数据型数据输入分隔符的指定:一般以空格、输入分隔符的指定:一般以空格、TA

11、BTAB或或回车键作为分隔符回车键作为分隔符例例3.11:从键盘输入两个整数,求两数之和。:从键盘输入两个整数,求两数之和。#include void main()int a,b;scanf(%d,%d,&a,&b);printf(%d,a+b);输入输入 3,5 输出输出 8例例3:scanf(a=%d,b=%d,c=%d,&a,&b,&c);输入输入 a=12,b=24,c=36 则则 12a,24 b,36c例例1:scanf(%d,%d,&a,&b);输入输入 3,4 则则 3a,4 b例例2:scanf(%d:%d:%d,&a,&b,&c);输入输入 12:30:45 则则 12 a

12、,30 b,45 c “格式控制格式控制”中出现的普通字符,中出现的普通字符,原样输入原样输入。说明:说明:用用%c%c格式符时,空格和转义字符格式符时,空格和转义字符作为有效字符输入作为有效字符输入例:例:scanf(%c%c%c,&c1,&c2,&c3);若若输入输入 a ab bc c 则则 ac1,c2,b c3输入数据时,遇以下情况认为该数输入数据时,遇以下情况认为该数据结束:据结束:遇空格、遇空格、TABTAB、或回车、或回车 遇指定的宽度结束遇指定的宽度结束 遇非法输入遇非法输入例:例:scanf(%d%c%f,&a,&b,&c);若若输入输入 1234a123o.26 则则 1

13、234 a,a b,123 c格式:格式:putchar(c)参数:参数:c为字符为字符常量、变量或表达式。常量、变量或表达式。功能:将字符输出到显示器上。功能:将字符输出到显示器上。3.3.3 字符数据的输入输出字符数据的输入输出一、一、putchar函数(字符输出函数)函数(字符输出函数)#include void main()char a,b,c;a=B;b=O;c=Y;putchar(a);putchar(b);putchar(c);putchar(n);运行结果:运行结果:BOY例:例:putchar(a);putchar(n);putchar(b);putchar(n);putch

14、ar(c);运行结果:运行结果:BOY格式格式:getchar()功能:从键盘输入一个字符。功能:从键盘输入一个字符。3.3.4 getchar函数(函数(字符输入函数字符输入函数)例例3.14:使用:使用getchar()函数输入字符函数输入字符#include void main()char c;c=getchar();putchar(c);运行情况:运行情况:a a3.4 顺序结构程序设计顺序结构程序设计#include#define PI 3.14159void main()float r,area,v;printf(“Input r:”);/*人机交互,输出提示信息人机交互,输出提示

15、信息*/scanf(%f,&r);area=PI*r*r;/*求圆的面积并将结果赋给求圆的面积并将结果赋给area*/v=4.0/3*PI*r*r*r;/*求圆球的体积并赋给求圆球的体积并赋给v*/printf(area=%6.2fn,area);printf(v=%6.2fn,v);例例3.17:输入半径,求圆的面积和球的体积输入半径,求圆的面积和球的体积 Input r:3 area=28.27v=113.10文件包含预处理命令文件包含预处理命令变量定义变量定义运行情况:运行情况:3.5.1 关系表达式关系表达式 1.关系运算符:关系运算符:、=、=、!=作用:进行比较运算。作用:进行比较

16、运算。2.关系表达式关系表达式 形式:形式:关系运算符关系运算符 如:如:a=0、x=03.优先级优先级 =(高)(高)=!=(低)(低)算术运算符算术运算符 关系运算关系运算符符 赋值运算赋值运算符符 高高低低3.5 选择结构程序设计选择结构程序设计 5.举例:举例:int a=3,b=2,c=1,d,f;则:则:ab 表达式值等于表达式值等于_ (ab)=c 表达式值等于表达式值等于_ b+cb d值等于值等于_ f=abc f值等于值等于_11010算术运算符算术运算符 关系运算关系运算符符 赋值运算赋值运算符符 高高低低4.关系表达式的值关系表达式的值:如果表达式成立,值为如果表达式成

17、立,值为 1,表示表示“真真”;否则,值为;否则,值为 0,表示,表示“假假”。#include void main()int a,b,c;a=3;b=2;c=1;printf(%d ,ab);printf(%d ,(ab)=c);printf(%d ,b+ca);printf(%dn,ab=0&x=9(数学不等式数学不等式0 x9)数学不等式数学不等式0 x9用用0=x3&84-!0=1&84-!0=1&84-1=1&8b)&(n=cd)1.简单分支结构简单分支结构格式:格式:if (表达式表达式)语句语句执行过程:先计算表达式的值,执行过程:先计算表达式的值,若其值若其值0,则执行后面的语

18、,则执行后面的语句;否则,不执行。句;否则,不执行。表达式表达式语句语句真真(非非0)假假(0)例:例:if (xy)printf(%d,x);3.5.3 if 语句语句说明:说明:u 语句可以是复合语句语句可以是复合语句u if (x)if (x!=0)例例3.22:输入两个实数,按由小到大的顺序输出。输入两个实数,按由小到大的顺序输出。#include void main()float a,b,t;printf(请输入两个实数请输入两个实数:);scanf(%f,%f,&a,&b);if (ab)t=a;a=b;b=t;printf(%5.2f,%5.2fn,a,b);运行情况:运行情况:

19、请输入两个实数请输入两个实数:7.1,5.1 5.10,7.10运行情况:运行情况:请输入两个实数请输入两个实数:5.1,7.1 5.10,7.10例例3.23:输入三个整数,按由小到大排序并输出。输入三个整数,按由小到大排序并输出。#include void main()int a,b,c,t;scanf(%d,%d,%d,&a,&b,&c);if (ab)t=a;a=b;b=t;if (ac)t=a;a=c;c=t;if (bc)t=b;b=c;c=t;printf(%d,%d,%dn,a,b,c);运行情况:运行情况:11,22,18 11,18,22表达式表达式语句语句1语句语句2真真

20、假假2.双分支结构双分支结构&格式:格式:if (表达式表达式)语句语句1 else 语句语句2例:例:if (xy)max=x;else max=y;&执行过程:先计算表达式的值,若执行过程:先计算表达式的值,若0,则执行语句则执行语句1,否则,执行语句,否则,执行语句2。例例3.25 输入三角形三条边长,求三角形面积。当输入的三条边长不能构成三角输入三角形三条边长,求三角形面积。当输入的三条边长不能构成三角形时,输出形时,输出“不能构成一个三角形不能构成一个三角形”。#include#include void main()float x,y,z,s,area;printf(请输入三角形的三

21、条边长请输入三角形的三条边长:);scanf(%f,%f,%f,&x,&y,&z);if(x+yz&y+zx&x+zy)s=0.5*(x+y+z);area=sqrt(s*(s-x)*(s-y)*(s-z);printf(面积面积=%7.2fn,area);else printf(不能构成一个三角形不能构成一个三角形n);运行结果:运行结果:请输入三角形的三条边长请输入三角形的三条边长:3,4,6 面积面积=5.333.多分支多分支if 语句语句一般格式:一般格式:if (表达式表达式1)语句语句1else if (表达式表达式2)语句语句2else if (表达式表达式3)语句语句3.els

22、e 语句语句n表达式表达式1语句语句1真真假假表达式表达式2表达式表达式3语句语句4语句语句3语句语句2真真真真假假假假例例3.28:编程计算应付金额:编程计算应付金额c,其单价,其单价s随购物随购物数量数量t变化,关系如下:变化,关系如下:20 t500 30 200t500 40 100t200 50 t100s=#include void main()int s,t,c;printf(请输入购物数量请输入购物数量:);scanf(%d,&t);if (t500)s=20;else if (t200)s=30;else if (t100)s=40;else s=50;c=s t;print

23、f(应付金额应付金额=%d,c);运行结果:运行结果:请输入购物数量请输入购物数量:600 应付金额应付金额=12000嵌套的多分支嵌套的多分支if语句语句含义:在含义:在if语句中又包含一个或多个语句中又包含一个或多个if语句,语句,称为称为if语句的嵌套。语句的嵌套。格式:格式:if ()if()语句语句 else 语句语句 2 else if()语句语句 3 else 语句语句 4 注意:注意:if与与else的配对关系。的配对关系。从内层开始,从内层开始,else总是总是与它上面最近的没有与它上面最近的没有配对的配对的if配对。配对。若若if与与else的数目不一的数目不一样,可以加样

24、,可以加 来确定来确定配对关系。配对关系。例例3.29:编写程序:编写程序 y=-5-5(x0)(x0)(x0)流程图:流程图:其中其中x,y为为int型型变量。变量。开始开始结结 束束输入输入x输出输出yx=0 x0y=-5y=0y=7YNYN#include void main()int x,y;printf(请输入请输入x:);scanf(%d,&x);if(x0)y=-5;else if(x=0)y=0;else y=7;printf(x=%d,y=%d,x,y);x0y=-5YNx=0y=0y=7YN运行结果:运行结果:请输入请输入x:-5 x=-5,y=-54.条件运算符和条件表达

25、式条件运算符和条件表达式条件运算符条件运算符?:(三目运算符)(三目运算符)条件表达式:用条件运算符连接各种表达式。条件表达式:用条件运算符连接各种表达式。形式:形式:?:例如:例如:xy?a:b表达式的值:当表达式的值:当表达式表达式1的值非的值非0时,值为时,值为表达式表达式2之值;否则,为之值;否则,为表达式表达式3之值。之值。结合方向为自右至左结合方向为自右至左 ab?a:cd?c:d a=1,b=2,c=3,d=4 表达式的值表达式的值_4当当if语句中的两个分支都只执行一个赋值语句中的两个分支都只执行一个赋值语句给同一个变量语句给同一个变量赋值赋值时,可以用条件时,可以用条件表达式

26、来处理。表达式来处理。max=(ab)?a:b;例:例:if (ab)max=a;else max=b;可以表示为可以表示为_运行情况:运行情况:A a例例3.30:输入一个字符,判断是否为大写字:输入一个字符,判断是否为大写字母,若是,将其转换成小写字母;否则,不母,若是,将其转换成小写字母;否则,不转换。然后输出最后得到的字符。转换。然后输出最后得到的字符。ch=(ch=A&ch=Z)?(ch+32):ch;#include void main()char ch;scanf(%c,&ch);if (ch=A&ch=Z)ch=ch+32;printf(%cn,ch);3.5.4 switch

27、 语句语句多分支选择语句。多分支选择语句。switch (表达式表达式)case 常量常量1:语句组语句组1;break;case 常量常量2:语句组语句组2;break;case 常量常量n:语句组语句组n;break;default:语句组语句组n+1;一般形式:一般形式:执行过程执行过程:当表达式的值与某一个:当表达式的值与某一个case后面的常量表后面的常量表达式值相等时,就执行此达式值相等时,就执行此case后面的语句组,当执行后面的语句组,当执行到到break语句时,跳出语句时,跳出switch语句。若表达式的值与所语句。若表达式的值与所有的常量表达式值都不匹配,则执行有的常量表达

28、式值都不匹配,则执行default后面的语后面的语句组。句组。#include void main()char grade;scanf(%c,&grade);switch (grade)case A:printf(85100n);break;case B:printf(7084n);break;case C:printf(6069n);break;case D:printf(60n);break;default:printf(errorn);例例3.31:要求按照考试成绩的:要求按照考试成绩的等级输出百分制分数段。等级输出百分制分数段。运行情况:运行情况:C 6069switch (grade

29、)case A:printf(85100n);case B:printf(7084n);case C:printf(6069n);case D:printf(60n);default:printf(errorn);说明:说明:执行完一个执行完一个case后面的语句后,继续执行下一后面的语句后,继续执行下一个个case语句而语句而不再进行判断不再进行判断。所以必须加上。所以必须加上break语句,以便终止语句,以便终止switch语句的执行。语句的执行。思思考考题题:如如果果去去掉掉上上例例程程序序中中的的所所有有break语语句,且输入的成绩为句,且输入的成绩为B,输出会如何?,输出会如何?运

30、行情况:运行情况:B 7084606960n);break;grade的的值值为为A、B或或C时时都都执执行行同一组语句。同一组语句。3.5.5 选择结构程序举例选择结构程序举例例例3.32:判断某一年是否是闰年。:判断某一年是否是闰年。分析:分析:满足以下两种条件之一即为闰年:满足以下两种条件之一即为闰年:能被能被4但不能被但不能被100整除;能被整除;能被400整除。整除。根据以上条件,分别考虑如下情况:根据以上条件,分别考虑如下情况:不能被不能被4整除的,不是闰年。整除的,不是闰年。能被能被4整除但不能被整除但不能被100整除的,是闰年。整除的,是闰年。能被能被400整除的,是闰年。整除

31、的,是闰年。其他都不是闰年。其他都不是闰年。例例3.32流程图流程图year被被4整除整除year被被100整除整除year被被400整除整除flag=1flag=0flag=1flag=0flag输出输出“闰年闰年”输出输出“非闰年非闰年”真真真真真真真真假假假假假假假假#include void main()int year,flag;printf(请输入年份请输入年份:);scanf(%d,&year);if(year%4=0)if(year%100=0)if(year%400=0)flag=1;else flag=0;else flag=1;else flag=0;if(flag)pr

32、intf(%d是闰年是闰年n,year);elseprintf(%d不是闰年不是闰年n,year);运行结果:运行结果:请输入年份请输入年份:1996 1996是闰年是闰年#include void main()int year,flag;scanf(%d,&year);if (year%4=0&year%100!=0)|(year%400=0)flag=1;else flag=0;if (flag)printf(%d是闰年是闰年n,year);else printf(%d不是闰年不是闰年n,year);例例3.33:求一元二次方程:求一元二次方程ax2+bx+c=0的解,的解,a、b、c由键

33、盘输入。由键盘输入。分析:分析:方程的解有以下几种可能:方程的解有以下几种可能:a=0,不是二次方程。,不是二次方程。b2-4ac=0,有两个相等实根。,有两个相等实根。b2-4ac0,有两个不等实根。,有两个不等实根。b2-4ac0b-4ac=0a=0输出输出 “非二次非二次方程方程”输出两输出两个相等个相等实根:实根:-真真真真真真假假假假假假#include#include void main()float a,b,c,disc,x1,x2,p,q;scanf(%f,%f,%f,&a,&b,&c);printf(此方程此方程);if (fabs(a)=1e-6)printf(不是二次方程

34、不是二次方程n);else disc=b*b-4*a*c;if (fabs(disc)1e-6)x1=(-b+sqrt(disc)/(2*a);x2=(-b-sqrt(disc)/(2*a);printf(有两个不等实根有两个不等实根:%8.4f and%8.4fn,x1,x2);else p=-b/(2*a);q=sqrt(-disc)/(2*a);printf(有两个共轭复根有两个共轭复根:n);printf(%8.4f+%8.4fin,p,q);printf(%8.4f-%8.4fin,p,q);运行情况:运行情况:1,2,1 此方程有两个相等实根此方程有两个相等实根:-1.00001,

35、2,2 此方程有两个共轭复根此方程有两个共轭复根:-1.0000+1.0000i -1.0000-1.0000i2,6,1 此方程有两个不等实根此方程有两个不等实根:-0.1771 and-2.8229例例5.1:一座高架桥最高限速:一座高架桥最高限速90公里公里/时,判断时,判断一辆车是否超速,若超速需要交纳罚金。根据一辆车是否超速,若超速需要交纳罚金。根据汽车时速与最高限速的比值划分:汽车时速与最高限速的比值划分:r=(v-90)/90(r为超速比,为超速比,v为汽车时速)为汽车时速)当当r=0.2时,为正常值;时,为正常值;当当0.2r0.4,须交纳,须交纳200元;元;当当0.40.6

36、时,交纳时,交纳1000元。元。方法:使用并列方法:使用并列if语句语句#includevoid main()float r,v;printf(请输入车速请输入车速v:n);scanf(%f,&v);r=(v-90)/90;if(r0.2&r0.4&r0.6)printf(请支付请支付1000元元!n);3.6 循环结构循环结构例:计算例:计算1+2+50的值。的值。分析:分析:设累加和变量为设累加和变量为sum,其初值为,其初值为0;加数变量为加数变量为i,初值为,初值为1;重复执行重复执行 sum=sum+i;i=i+1;当当i增到增到51时,停止计算。此时,时,停止计算。此时,sum的值

37、就是的值就是150的累加和。的累加和。什么是循环?什么是循环?一个循环结构包括四部分:初始化循环变一个循环结构包括四部分:初始化循环变量、循环条件、循环体、修改循环变量量、循环条件、循环体、修改循环变量C语言中三种基本的循环结构:语言中三种基本的循环结构:1、while语句构成的循环语句构成的循环(“当型当型”循环循环)2、dowhile语句构成的循环语句构成的循环(“直到型直到型”循循环环)3、for语句构成的循环语句构成的循环(“当型当型”循环循环)goto goto语句为无条件转向语句,它的一语句为无条件转向语句,它的一般形式为般形式为 goto goto 语句标号;语句标号;语句标号符

38、合标识符命名规则,即由字语句标号符合标识符命名规则,即由字母、数字和下划线组成,第一个字符必母、数字和下划线组成,第一个字符必须为字母或下划线。须为字母或下划线。例如:例如:goto label_1;goto label_1;合法合法 goto 123 goto 123;不合法不合法3.6.1 goto语句语句 结构化程序设计方法主张限制使用结构化程序设计方法主张限制使用gotogoto语句,因为滥用语句,因为滥用gotogoto语句将使程序语句将使程序流程无规律、可读性差流程无规律、可读性差.一般来说,可以有两种用途:一般来说,可以有两种用途:(1)(1)与与ifif语句一起构成循环结构;语

39、句一起构成循环结构;(2)(2)从多层循环的内层循环跳转到外层从多层循环的内层循环跳转到外层循环。循环。3.6.1 goto语句语句#include void main()int i,sum;sum=0;i=1;loop:sum=sum+i;i+;if (i=50)goto loop;printf(%dn,sum);运行结果:运行结果:1275例例3.34:计算:计算1+2+50的值。的值。一般形式一般形式:while(表达式)(表达式)语句;语句;3.6.2 while语句语句执行过程:执行过程:计算表达式的值,若为真计算表达式的值,若为真(非(非0),则执行循环体,否则退出循),则执行循环

40、体,否则退出循环,执行后面的语句。环,执行后面的语句。表达式表达式语句语句0非非0例例3.35:求:求12350 i=1i=50sum=sum+ii=i+1i=1当当i=50sum=sum+ii=i+1假假真真#include void main()int i=1,sum=0;while(i=50)sum=sum+i;i+;printf(%dn,sum);运行结果:运行结果:12751275说明:说明:(1)(1)循环体如果包含一个以上的语句,要循环体如果包含一个以上的语句,要用用 括起来,括起来,否则,只执行到第一个分否则,只执行到第一个分号处号处。(2)(2)在循环体中应有使循环趋向于结束

41、的在循环体中应有使循环趋向于结束的语句。语句。遇到数列求和、求积的问题,一般可以遇到数列求和、求积的问题,一般可以考虑使用循环解决。考虑使用循环解决。注意循环初值的设置。一般对于累加器注意循环初值的设置。一般对于累加器设置为设置为0,累乘器设置为,累乘器设置为1。一般形式一般形式:do 循环体语句循环体语句while (表达式表达式);3.6.3 dowhile 语句语句循环体语句循环体语句当表达式值为真当表达式值为真循环体语句循环体语句表达式表达式非非0(0(真)真)0(假)(假)执行过程:执行过程:先执行一次循先执行一次循环体中的语句,然后计算环体中的语句,然后计算表达式的值,若非表达式的

42、值,若非0,则,则再次执行循环体,否则结再次执行循环体,否则结束循环。束循环。例例3.36:求:求12350sum=sum+i i=i+1i=1i=50sum=sum+i i=i+1i=1当当i=50真真假假#include void main()int i,sum=0;i=1;do sum=sum+i;i+;while(i=50);printf(%dn,sum);运行结果:运行结果:12751275例例3.37:while和和dowhile比较比较#include void main()int i,sum=0;scanf(%d,&i);do sum=sum+i;i+;while (i=10)

43、;printf(%d,sum);#include void main()int i,sum=0;scanf(%d,&i);while (i=10)sum=sum+i;i+;printf(%d,sum);运行情况:运行情况:1111 0 0运行情况:运行情况:1111 1111运行情况:运行情况:1 1 5555运行情况:运行情况:1 1 5555While语句和语句和dowhile语句的区别:语句的区别:第一次执行时,第一次执行时,while语句先判断,符合语句先判断,符合条件才执行循环体;条件才执行循环体;dowhile语句不管语句不管是否符合条件,先执行一次循环体。是否符合条件,先执行一次

44、循环体。while语句:语句:while(表达式表达式)后无分号,后无分号,dowhile语句:语句:while(表达式表达式)有分号。有分号。一般形式一般形式:for (表达式表达式1;表达式表达式2;表达式表达式3)语句;语句;3.6.4 for 语句语句执行过程:执行过程:求解表达式求解表达式1。求求解解表表达达式式2,若若其其值值为为真真,则则执执行行循循环环体体语语句句,然然后后执执行行。若若为为假,转假,转。求解表达式求解表达式3,然后转,然后转继续执行。继续执行。结结束束循循环环,执执行行for语语句句的的下下一一条条语句。语句。例例3.38:求:求1+2+50运行结果:运行结果

45、:1275#include void main()int sum=0,i;for (i=1;i=50;i+)sum=sum+i;printf(%dn,sum);for语句一般应用形式:语句一般应用形式:for (循环变量赋初值循环变量赋初值;循环条件循环条件;修改循环变量修改循环变量)语句;语句;说明:说明:for语句中的三个表达式可以省略或部分省略,语句中的三个表达式可以省略或部分省略,但其中的分号不能省略。但其中的分号不能省略。例:例:for (i=1;i=100;i+)sum=sum+i;表达式表达式1省略省略 i=1;for (;i100)break;sum=sum+i;表达式表达式1

46、和和3都省略都省略 i=1;for (;i=100;)sum=sum+i;i+;i=1;while (i=100)sum=sum+i;i+;三个表达式都省略三个表达式都省略 for (;)表达式表达式3省略省略 for (i=1;i=100;)sum=sum+i;i+;例例:for (i=1;i=100;i+)sum=sum+i;例例3.40:从键盘输入一个整数:从键盘输入一个整数n,计算,计算n!#include void main()int i,n,fac=1;printf(请输入一个整数请输入一个整数:);scanf(%d,&n);for(i=1;i=n;i+)fac=fac*i;pri

47、ntf(%d!=%dn,n,fac);运行情况:运行情况:请输入一个整数请输入一个整数:5 5 5!=1205!=120含义:含义:一个循环体内又包含另一个完整的循环一个循环体内又包含另一个完整的循环结构,称为循环的嵌套。结构,称为循环的嵌套。while()while()while()do while();while()for()3.6.6 循环的嵌套循环的嵌套三种循环可以互相嵌套。三种循环可以互相嵌套。do while()while();do for(;)while();do do while();while();for(;)for(;)for(;)do while();for(;)whil

48、e()注:注:内层循环应完全嵌套在外层循环内部,不能交叉嵌套;内层循环应完全嵌套在外层循环内部,不能交叉嵌套;内层循环体执行次数内层循环体执行次数=内层循环次数内层循环次数外层循环次数。外层循环次数。例例3.42:输出九九乘法表:输出九九乘法表1*1=11*2=2 2*2=41*3=3 2*3=6 3*3=91*4=4 2*4=8 3*4=12 4*4=161*5=5 2*5=10 3*5=15 4*5=20 5*5=251*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=361*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49

49、1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=641*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81#include void main()int i,j;for (i=1;i=9;i+)for (j=1;j=i;j+)printf(%d*%d=%d ,j,i,i*j);printf(n);#include void main()int i,j;for (i=1;i=9;i+)for (j=1;j=i;j+)printf(%d*%d=%-4d,j,i,i*j);pr

50、intf(n);3.6.7 break语句和语句和continue语句语句一、一、break 语句语句功能:功能:跳出跳出switch 语句。语句。跳出循环,接着执行循环结构跳出循环,接着执行循环结构下面的语句。下面的语句。例例3.43:#include void main()int r;float area,pi=3.14159;for(r=1;r100)break;printf(r=%d,area=%fn,r,area);说明:说明:程序的作用是计算程序的作用是计算r=1到到r=10的圆面积,直的圆面积,直到面积大于到面积大于100为止。为止。(当(当r=6时,时,area100,执行执行

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 施工组织

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁