C语言的控制结构实用教案

上传人:工**** 文档编号:569274596 上传时间:2024-07-28 格式:PPT 页数:79 大小:3.18MB
返回 下载 相关 举报
C语言的控制结构实用教案_第1页
第1页 / 共79页
C语言的控制结构实用教案_第2页
第2页 / 共79页
C语言的控制结构实用教案_第3页
第3页 / 共79页
C语言的控制结构实用教案_第4页
第4页 / 共79页
C语言的控制结构实用教案_第5页
第5页 / 共79页
点击查看更多>>
资源描述

《C语言的控制结构实用教案》由会员分享,可在线阅读,更多相关《C语言的控制结构实用教案(79页珍藏版)》请在金锄头文库上搜索。

1、11 C语言本身不提供输入输出语句,得由标准I/O库函数提供。输入输出库函数很丰富,可以从键盘、显示器、磁盘文件和硬件端口进行输入或输出操作。本节主要(zhyo)介绍用于键盘输入和显示器输出的函数。3.23.2数据的输入数据的输入(shr)(shr)与与输出输出第1页/共78页第一页,共79页。223.23.2数据的输入数据的输入(shr)(shr)与与输出输出3.2.1字符数据的输入(shr)与输出1 1、字符、字符(z f)(z f)输入函输入函数数int getchar(void)函数功能:函数功能:从输入设备从输入设备(一般为键盘一般为键盘)上输入一个字符。上输入一个字符。它每被调用一

2、次,就从标准输入设备上取一个字符,返回它每被调用一次,就从标准输入设备上取一个字符,返回值是该字符的值是该字符的ASCII编码值。可以赋给字符变量或整型编码值。可以赋给字符变量或整型变量。变量。执行执行getchar()时输入字符后要回车。时输入字符后要回车。 例:例:#includevoidmain(void)charc;c=getchar();putchar(c);输出结果输出结果:A A第2页/共78页第二页,共79页。333.23.2数据数据(shj)(shj)的输入的输入与输出与输出2 2、字符、字符(z f)(z f)输出输出函数函数int putchar(int)函数功能:向标准

3、输出设备函数功能:向标准输出设备(一般为显示器一般为显示器)输出一个字符,输出一个字符,并返回该字母的并返回该字母的ASCII码值。参数可以是字符常量码值。参数可以是字符常量(chngling),变量或整型数。,变量或整型数。例:例: #include void main(void ) char a, b, c; a = b; b = o; c = y; putchar(a); putchar(b); putchar(c); 输出结果输出结果:boy第3页/共78页第三页,共79页。443.23.2数据数据(shj)(shj)的输入的输入与输出与输出格式(g shi)输出函数的一般形式prin

4、tf(“格式控制格式控制(kngzh)字符串字符串”,输出参输出参数表数表);可以是一个或多个输出项. 可以是常量或变量表达式,用逗号分隔。类型可以是整型实型字符型和字符串型.用双引号括起来,控制输出项的格式和输出一些提示信息 说明说明:格式字符要用小写(个别的可用大写)格式字符与输出项个数应相同,按先后顺序一一对应格式字符与输出项类型不一致,自动按指定格式输出函数功能:函数功能:按用户指定的格式,把指定的数据显示到显示器按用户指定的格式,把指定的数据显示到显示器屏幕上屏幕上,并返回输出的字符数。这个函数可以输出多字,并返回输出的字符数。这个函数可以输出多字信息。信息。3.2.2格式输出函数第

5、4页/共78页第四页,共79页。55例:例:include void main(void ) int i = 97; char ch = a; printf (“i =%d ,%cn”, i, i ); 两个输出项都是变量两个输出项都是变量i , i , 但以不同的格式但以不同的格式(g shi)(g shi)输输出出, ,一个是输出的整型数一个是输出的整型数, ,一个输出的是字符一个输出的是字符a. a. 其格其格式式(g shi)(g shi)是由是由%d%d与与%c%c控制的控制的. .输出输出(shch)结果结果:i=97,a3.23.2数据的输入数据的输入(shr)(shr)与输出与

6、输出第5页/共78页第五页,共79页。66printf (“i =%d ,%c n”, i, i );3.23.2数据的输入数据的输入(shr)(shr)与输出与输出普通字符,按原样输出转义字符指明特定的操作,如n表示换行而格式说明部分由%和格式字符串组成,下面详细讨论。格式控制由格式控制字符串实现(shxin)。格式控制符由三部分组成:普通字符:输出时按原样输出,主要用于输出提示信息转义字符:指明特定的操作。输出项格式说明%flagswidth.prech|l|Ltype第6页/共78页第六页,共79页。77%flagswidth.prech|l|LtypeFlags为选择的标志为选择的标志

7、(biozh)字符。常用的有:字符。常用的有:- : 为左对齐,否则右对齐为左对齐,否则右对齐+:正数输出:正数输出+,负数输出,负数输出-空格:正数输出空格,负数输出空格:正数输出空格,负数输出-Width为宽度指示符。用十进制数来设置输出值的最少输出个数,为宽度指示符。用十进制数来设置输出值的最少输出个数,少则补空格,多则少则补空格,多则(du z)按实际输出,缺省则按实际输出。按实际输出,缺省则按实际输出。3.23.2数据的输入数据的输入(shr)(shr)与输出与输出flagswidth.prec为精度指示符。用小数点加十进制正整数构成,用来限为精度指示符。用小数点加十进制正整数构成,

8、用来限制输出数的精度。制输出数的精度。.prech|l|L为长度修饰符为长度修饰符h短整数据的值短整数据的值 l 长整型数据的值长整型数据的值 L长双精度数据的值长双精度数据的值h|l|L第7页/共78页第七页,共79页。88type为格式字符。用来进行为格式字符。用来进行(jnxng)格格式转换式转换d以带符号的十进制形式输出整数(正数不输出符号)以带符号的十进制形式输出整数(正数不输出符号) o以以8进制无符号形式输出整数(不输出前导符进制无符号形式输出整数(不输出前导符O) x(X)以以16进制无符号形式输出整数(不输出前导符进制无符号形式输出整数(不输出前导符Ox) u以无符号以无符号

9、10进制形式输出整数进制形式输出整数 c以字符形式输出一个字符以字符形式输出一个字符s输出字符串输出字符串 f以小数形式输出单、双精度数,隐含输出以小数形式输出单、双精度数,隐含输出6位小数位小数 e(E)以标准指数形式输出单、双精度数,小数位数为以标准指数形式输出单、双精度数,小数位数为6位位 g(G)选用选用%f或或%e格式中输出宽度较短的一种格式格式中输出宽度较短的一种格式 %百分号百分号3.23.2数据数据(shj)(shj)的输入的输入与输出与输出%flagswidth.prech|l|Ltypetype第8页/共78页第八页,共79页。9printf 常用(chn yn)格式字符转

10、换转换字符字符参数参数类型类型输输 出出格格 式式dint以带符号的十进制形式输出整数以带符号的十进制形式输出整数(正数不输出符号正数不输出符号) oint以八进制无符号形式输出整数以八进制无符号形式输出整数(不输出前导符不输出前导符0)。 xint以十六进制无符号形式输出整数以十六进制无符号形式输出整数(不输出前导符不输出前导符0x)。uint以无符号十进制形式输出整数。以无符号十进制形式输出整数。 cint单个字符单个字符schar * 字符串字符串fdouble 以小数形式输出单、双精度数以小数形式输出单、双精度数,隐含输出隐含输出6位小数。位小数。edouble以标准制数形式输出单、双

11、精度数以标准制数形式输出单、双精度数,数字部分小数位数为数字部分小数位数为6位。位。gdouble选用选用%f或或%e格式中输出宽度较短的一种格式,不输出格式中输出宽度较短的一种格式,不输出无意义的无意义的0。 第9页/共78页第九页,共79页。10printf附加格式(gshi)说明字符字字 符符意意 义义特征符特征符-(减号)(减号)在指定的区域内以左对齐方式输出在指定的区域内以左对齐方式输出+输出正值时前冠以正号输出正值时前冠以正号+空格空格输出第一个字符不是符号时,要输出一个空格输出第一个字符不是符号时,要输出一个空格0(零)(零)在域宽范围内用前导在域宽范围内用前导0填补空位填补空位

12、#对于对于O格式输出前导格式输出前导0,对于,对于X或或x格式要输出格式要输出0X或或0x前缀,对于前缀,对于G或或g格式不删除尾部零格式不删除尾部零域宽域宽m(正整数)(正整数)指出输出数据的最小域宽。如果数据的实际宽度指出输出数据的最小域宽。如果数据的实际宽度m ,则按实际宽度输出。,则按实际宽度输出。m.n对实数,表示输出数据共占对实数,表示输出数据共占m列列 ,n指出输出数据指出输出数据的精度,表示输出的精度,表示输出n位小数位小数长度修饰符长度修饰符h指出输出参数是指出输出参数是 short intl指出输出参数是指出输出参数是 long intL指出输出参数是指出输出参数是 lon

13、g double第10页/共78页第十页,共79页。11113.23.2数据的输入数据的输入(shr)(shr)与输出与输出3.2.2格式(g shi)输入函数函数功能函数功能(gngnng):从键盘输入任何类型的数据给所指:从键盘输入任何类型的数据给所指定的单元,并返回输入的数据个数。定的单元,并返回输入的数据个数。格式输入函数一般形式scanf(“格式控制字符串格式控制字符串”,地址列表地址列表);例如:例如:scanf(“%d%d%f ”,&a,&b,&c);控制字符串说明了需输入数据的类型,两个整型数和控制字符串说明了需输入数据的类型,两个整型数和一个实型数。一个实型数。&a&a,&b

14、&b和和&c&c是变量是变量a a,b b和和c c的地址。的地址。第11页/共78页第十一页,共79页。1212% * widthh|l|Ltype输入赋值抑制输入赋值抑制(yzh)字符,输入数据但不字符,输入数据但不赋值赋值3.23.2数据数据(shj)(shj)的输入的输入与输出与输出*widthhL宽度指示符,表示宽度指示符,表示(biosh)最多可输入的字最多可输入的字符个数。符个数。| |输入数据类型。输入数据类型。h短整型,短整型,l长整型,长整型,L长双精度型长双精度型l第12页/共78页第十二页,共79页。1313% * widthh|l|Ltypetype是必须是必须(bx

15、)的,表示输入后转换的数据类型。的,表示输入后转换的数据类型。d(D)十进制整数十进制整数o(O)八进制整数八进制整数x(X)十六进制整数十六进制整数i(I)自动根据数头分辨十、八、十六进制自动根据数头分辨十、八、十六进制u(U)无符号十进制整数无符号十进制整数c单个字符单个字符s字符串字符串f(e,g,G)实数实数n不输入数据,将已读入的字符输送到对应的地址中不输入数据,将已读入的字符输送到对应的地址中%百分号百分号3.23.2数据的输入数据的输入(shr)(shr)与输出与输出type第13页/共78页第十三页,共79页。14scanf常用的格式(gshi)字符格式字符格式字符参数类型参数

16、类型说说明明dint *用来输入十进制整数oint *用来输入八进制整数xint *用来输入十六进制整数uunsigned *用来输入无符号十进制整数cchar *用来输入单个字符。 schar *无空白字符的字符串;参数指向一个可容纳该字符串的足够大的数组,转换时要添加0e,f,gfloat *用来输入float 数,可以用小数形式或指数形式输入。第14页/共78页第十四页,共79页。1515使用(shyng)scanf应注意:scanfscanf()的格式控制字符串中的字符不是用于输出()的格式控制字符串中的字符不是用于输出的的, ,都是要求都是要求(yoqi)(yoqi)输入的。输入的。

17、 scanf scanf(”x=%d”x=%d”,&x&x); ;参数的第二部分一定是地址列表参数的第二部分一定是地址列表, ,不能是表达式,请不能是表达式,请记得在变量前加上记得在变量前加上& &。且地址列表的参数与格式说明。且地址列表的参数与格式说明个数应保持一致。个数应保持一致。执行执行scanf( )scanf( )输入数据时,在两个数据之间允许以一输入数据时,在两个数据之间允许以一个或多个空格间隔,也可以用回车键、个或多个空格间隔,也可以用回车键、tabtab键分隔。键分隔。实数不许规定精度,像实数不许规定精度,像%10.4f%10.4f是不合法的。是不合法的。% %后面有后面有*

18、*号时,该数据会被禁止使用。号时,该数据会被禁止使用。如果输入时类型不匹配则停止处理,返回如果输入时类型不匹配则停止处理,返回0 0。3.23.2数据的输入数据的输入(shr)(shr)与输出与输出第15页/共78页第十五页,共79页。16例1:inti;charc;scanf(%d%c,&i,&c);执行(zhxng)时输入1234a则1234被赋给i,a被赋给c。但若输入1234a则i值同上,c被赋予一个空格。第16页/共78页第十六页,共79页。17例2:intday,year;charmonth10;scanf(%d%s%d,&day,month,&year);执行时输入(shr):2

19、5Dec1996则整数25被赋予day,字符串“Dec”被赋予数组month,整数1996被赋予month.第17页/共78页第十七页,共79页。18例3:inti,j;scanf(%d%d,&i,&j);执行时输入12a则整数12被赋予i,由于第二输入域是字符a,与第二个转换说明%d不相匹配而不能转化(zhunhu),因而j未被赋值.第18页/共78页第十八页,共79页。19例4:当格式字符串中包含有普通字符时,在输入流中相应位置中必须有相同(xintn)的字符与之匹配。scanf(%d,%d,%d),&i,&j,&k);执行时输入10,20,30其中10,20和30之间必须有且仅有一个逗号

20、字符。第19页/共78页第十九页,共79页。20例5:若要读入long和double数据,需用长度(chngd)修饰符doubley;longx;scanf(%lf%ld,&y,&x);执行时输入1260浮点数12.0赋予y,60赋予x第20页/共78页第二十页,共79页。21例6:若指定了*,则输入域被跳过,不赋值。doublev1,v2,v3;scanf(%lf%*d%lf%*d%lf%*d,&v1,&v2,&v3);执行(zhxng)时输入112233445566浮点数11.0赋予v1,33.0赋予v2,55.0赋予v3;输入域22,44,66被跳过。第21页/共78页第二十一页,共79

21、页。22例7:指定域宽的整数,如果说明了域宽,则输入域直到域宽用完为止(wizh)。charname20;scanf(%8s,name);执行时输入abcdefghi字符串abcdefgh被赋给字符数组name,输入域为9个字符,域宽为指定的8,所以只有前8个字符被读入。第22页/共78页第二十二页,共79页。2323例例3.1 3.1 输入圆的半径,输出圆的周长和面积。输入圆的半径,输出圆的周长和面积。分析:分析: 1.1.定定义义实实型型变变量量r r、l l、s s用用于于存存放放(cnfng)(cnfng)半半径、周长、面积;径、周长、面积;2.2.调用输入函数,输入调用输入函数,输入

22、r r:3.3.分别利用周长公式和面积公式求出分别利用周长公式和面积公式求出l l、s s;4.4.调用输出函数输出调用输出函数输出l l、s s。程序程序(chngx)(chngx)举例举例 3.23.2数据的输入数据的输入(shr)(shr)与输出与输出第23页/共78页第二十三页,共79页。2424程序(chngx):#include void main()float r,l,s; scanf(%f,&r); /*输入(shr)一个浮点数据,存入地址&r*/ l=2*3.14159*r; /*计算周长,赋值给l */ s=3.14159*r*r; /*计算面积,赋值给s */ print

23、f(n l=%8.4f,l); /*周长占8个字符宽,4位小数*/ printf(n s=%8.4f,s); /*输出面积,数据共占8个字符宽,4位小数*/ 3.23.2数据的输入数据的输入(shr)(shr)与输出与输出第24页/共78页第二十四页,共79页。2525分析(fnx):1.输入小写字母存入变量a;2.转换成大写a = a-32;3.输出 a.例例3.2 3.2 从从键键盘盘输输入入一一个个小小写写字字母母,用用大大写写形形式式(xngsh)(xngsh)输出该字母。输出该字母。3.23.2数据数据(shj)(shj)的输入的输入与输出与输出第25页/共78页第二十五页,共79页

24、。2626#include “stdio.h”void main() char a;printf(“Input a lowercase letter:”);a = getchar();a = a-32;/*将大写字母转换成对应的小写字母*/printf(“%c n”,a);思考:如何使程序可以处理任何字符的输入。即判断输入的是小写字母,才转换成大写;如果(rgu)输入的其他字符,则直接输出。 3.23.2数据的输入数据的输入(shr)(shr)与输出与输出程序(chngx):第26页/共78页第二十六页,共79页。2727结构化程序设计基本思想:任何程序都可以用三种基本结构表示,限制使用无条件

25、转移(zhuny)语句(goto)结构化程序:由三种基本结构反复嵌套构成的程序叫优点:结构清晰,易读,提高程序设计质量和效率三种基本结构3.33.3基本控制结构与流程基本控制结构与流程(lichng)(lichng)控制控制语句语句顺序顺序(shnx)结构结构ABab第27页/共78页第二十七页,共79页。2828二分支二分支(fnzh)选择结构选择结构多分支选择多分支选择(xunz)结构结构选择选择(xunz)结构结构3.33.3基本控制结构与流程控制语句基本控制结构与流程控制语句PAB真假bakA1A2AiAnk=k2k=k1k=knk=ki. ab第28页/共78页第二十八页,共79页。

26、2929l当型循环(xnhun)结构l直到型循环(xnhun)结构PA假真baAP假真ba循环循环(xnhun)结构结构3.33.3基本控制结构与流程控制语句基本控制结构与流程控制语句第29页/共78页第二十九页,共79页。30303.33.3基本基本(jbn)(jbn)控制结构与流程控制语控制结构与流程控制语句句三种基本控制结构的特点:三种基本控制结构的特点:只有一个入口只有一个入口只有一个出口只有一个出口结构内的每一部分都有机会结构内的每一部分都有机会(jhu)被执行到。即,对每被执行到。即,对每一个框来说,都应当有一条从入口到出口的路径通过它一个框来说,都应当有一条从入口到出口的路径通过

27、它结构内不存在死循环结构内不存在死循环APAB注:注:A,B,A1.An可以是一个简单语句,也可以是一个基本可以是一个简单语句,也可以是一个基本(jbn)结构结构x xx x第30页/共78页第三十页,共79页。3131例如(lr)计算分段函数分析:计算 x0 ,如果结果为1:计算:y=3-x;否则,计算:y=2 * x;需要根据x的值进行流程选择(xunz)(分支)。3.43.4选择选择(xunz)(xunz)结构控制结构控制第31页/共78页第三十一页,共79页。3232#include void main(void) float x , y; scanf(“%f ”, &x); y =

28、2 * x ; if ( x 0 ) y = 3 - x ; printf(“y= %6.2f”, y ); 形式一(单分支选择结构):形式一(单分支选择结构):格式格式(gshi):if(表达式表达式)语句语句执行过程:执行过程:表达式语句语句非非0=0表达式语句语句1语句语句2非非0=0形式二(双分支选择结构):形式二(双分支选择结构):格式格式(g shi):if (表达式表达式) 语句语句1else语句语句2执行过程:执行过程:3.4.1if语句(yj)的形式#include void main(void) float x , y; scanf(“%f ”, &x); if ( x 0

29、 ) y = 3 - x ; else y = 2 * x ; printf(“y= %6.2f”, y ); 3.43.4选择结构控制选择结构控制#include void main(void) float x , y; scanf(“%f ”, &x); y = 2 * x ; if ( x b则输出a;否则,输出b。#includevoidmain(void)floata,b;scanf(“%f%f”,&a,&b);if(ab)printf(“%f”,a);elseprintf(“%f”,b);第33页/共78页第三十三页,共79页。3434表达式1语句语句1非非0=0表达式2表达式3语

30、句语句n语句语句3语句语句2非非0非非0=0=0形式三(多分支选择结构):形式三(多分支选择结构):格式格式(g shi): if ( 表达式表达式1) 语句语句1else if (表达式表达式2 ) 语句语句2. else 语语句句n 执行过程:执行过程:3.43.4选择结构选择结构(jigu)(jigu)控制控制例:例:if (salary1000) index=0.4; else if (salary800) index=0.3; else if (salary600) index=0.2; else if (salary400) index=0.1; else index=0; 第34

31、页/共78页第三十四页,共79页。35353.43.4选择选择(xunz)(xunz)结构控制结构控制写一个程序完成下列功能:1输入一个分数(fnsh)score2score60输出E360=score70输出D470=score80输出C580=score90输出B590=score输出A#include void main(void) int score; scanf(“%d”, &score); if ( score60) printf(“%c” , E); else if ( score 70) printf(“%c” , D); else if (score 80) printf(“

32、%c” , C); else if (score 90) printf(“%c” , B); else printf(“%c” , A); 第35页/共78页第三十五页,共79页。3636如:如:if(a=b&x=y) printf(“a=b,x=y”); if(3) printf(“OK”); if(a) printf(“%d”,a);if(x) if(x!=0) if(!x) if(x=0)说明说明(shumng)(shumng):ifif语句中的表达式一般语句中的表达式一般(ybn)(ybn)为关系或逻辑表达式,也为关系或逻辑表达式,也可以为任何数值类型的表达式。可以为任何数值类型的表达

33、式。执行语句可以是一条简单语句、空语句或复合语句,也可执行语句可以是一条简单语句、空语句或复合语句,也可以嵌套其它流程控制语句。以嵌套其它流程控制语句。3.43.4选择结构选择结构(jigu)(jigu)控制控制例例 考虑下面程序的输出结果考虑下面程序的输出结果: #include main() int x,y; scanf(“%d,%d”,&x,&y); if(xy) x=y; y=x; else x+; y+; printf(“%d,%dn”,x,y);Compile Error!第36页/共78页第三十六页,共79页。37373.43.4选择选择(xunz)(xunz)结构控制结构控制问

34、题:输入两个字符(zf)ch1和ch2,如果ch1=Z且ch2=B,则输出“Youareright!”#includevoid main(void) char ch1,ch2; ch1=getchar( ); ch2=getchar( ); if ( ch1 = Z & ch2=B ) printf( “You are right ! “ ); 复杂条件(tiojin)选择第37页/共78页第三十七页,共79页。3838if (表达式表达式1) if (表达式表达式2) 语句语句1 else 语句语句2else if(表达式表达式3) 语句语句3 else 语句语句4内嵌内嵌if内嵌内嵌ifi

35、f (表达式表达式1) if (表达式表达式2) 语句语句1 else 语句语句2内嵌内嵌ifif (表达式表达式1) if (表达式表达式2) 语句语句1else 语句语句3 内嵌内嵌ifif (表达式表达式1) 语句语句1else if(表达式表达式3) 语句语句3 else 语句语句4内嵌内嵌ifif语句语句(yj)嵌嵌套套3.43.4选择结构选择结构(jigu)(jigu)控制控制第38页/共78页第三十八页,共79页。3939#include void main(void) int x,y; printf(Enter integer x,y:); scanf(“%d,%d,&x,&y

36、); if(x!=y) if(xy) printf(XYn); else printf(XYn); else printf(X=Yn);运行运行(ynxng):Enter integer x,y:12,23 XY Enter integer x,y:12,12 X=Y例例输入两数并判断输入两数并判断(pndun)其大其大小关系小关系3.43.4选择选择(xunz)(xunz)结构控制结构控制第39页/共78页第三十九页,共79页。4040缺省时,else总是和它上面离它最近(zujn)的未配对的if配对if()if()if()else.else.else.ifelse配对(pidu)原则:3.

37、43.4选择选择(xunz)(xunz)结构控制结构控制第40页/共78页第四十页,共79页。4141例:例: if (a=b) if(b=c) printf(“a=b=c”); else printf(“a!=b”);修改修改(xigi): if (a=b) if(b=c) printf(“a=b=c”); else printf(“a!=b”);实现实现if else 正确配对正确配对(pi du)方法:加方法:加 3.43.4选择结构选择结构(jigu)(jigu)控制控制第41页/共78页第四十一页,共79页。42423.43.4选择选择(xunz)(xunz)结构控制结构控制例例4.

38、4 4.4 编程实现:根据两个数编程实现:根据两个数sexsex和和talltall分类分类, , 如果如果(rgu)sex(rgu)sex为为FF,当,当talltall大于等于大于等于150150时,输出时,输出” A “” A “,否则输出,否则输出 “ B “ “ B “;若;若sexsex不为不为FF, 当当talltall大于等于大于等于170170时,输出时,输出A A,否则输出否则输出B B。分析:分析: 根据根据sexsex分支分支在在sexsex为为FF的分支中判断的分支中判断tall=150tall=150否否在在sexsex不为不为FF的分支中判断的分支中判断tall=

39、170tall=170否否#includevoid main(void) int tall; char sex; printf( “input sex and tall :” ); scanf( “%c %d”, &sex, &tall );if (sex=F) if (tall=150) printf(“ A ”); else printf(“ B ”); else if (tall=170) printf(“ A ”); else printf(“ B ”); 第42页/共78页第四十二页,共79页。4343v一般一般(ybn)形式:形式:switch( 表达式表达式) case 常量常量

40、(chngling)表达式表达式1: 语句组语句组 1; break; case 常量常量(chngling)表达式表达式2: 语句组语句组 2; break; . case En: 语句组语句组 n; break; default: 语句组语句组 ; break; v执行执行(zhxng)过过程:程:switch表达式语句组语句组1语句组语句组2语句组语句组n语句组语句组.E 1E 2Endefaultcase 3.53.5多分支选择控制语句多分支选择控制语句switchswitch语句语句第43页/共78页第四十三页,共79页。44443.53.5多分支多分支(fnzh)(fnzh)选择控

41、制语句选择控制语句switchswitch语句语句例如:要求按照考试成绩的等级打印例如:要求按照考试成绩的等级打印(dyn)出百出百分制分数分制分数段,可以用段,可以用switch语句实现:语句实现:switch(grade)case A:printf(“85100n”); case B:printf(“7084n”); case C:printf(“6069n”); case D:printf(“60n”); default:printf(“errorn”); 运行运行(ynxng)结果:若结果:若grade=A则输出:则输出:85100 7084 6069 60 error第44页/共78

42、页第四十四页,共79页。4545说明说明(shu(shumng)mng):3.53.5多分支多分支(fnzh)(fnzh)选择控制语句选择控制语句switchswitch语句语句l语句中的表达式可以是数字型或字符型,表达式的值,称为开关值。语句中的表达式可以是数字型或字符型,表达式的值,称为开关值。l语句结构中各个语句结构中各个casecase后常量表达式的值必须互不相同;否则执行时将后常量表达式的值必须互不相同;否则执行时将出现矛盾,即同一个出现矛盾,即同一个(y )(y )开关值,对应多种执行方案开关值,对应多种执行方案l当表达式的值与某一个当表达式的值与某一个(y )(y )常量相等时,

43、就执行后面的语句;若常量相等时,就执行后面的语句;若无无breakbreak语句,执行该语句后,流程控制转移到下一个语句,执行该语句后,流程控制转移到下一个(y )(y )分支分支: : 继续执行这一个继续执行这一个(y )(y )分支的语句,一直到最后一个分支的语句,一直到最后一个(y )(y )语句执语句执行完。行完。l当表达式的值与所有常量表达式的值不相等时,执行当表达式的值与所有常量表达式的值不相等时,执行default:default:后面的后面的语句。语句。lcasecase后可包含多个可执行语句,且不必加后可包含多个可执行语句,且不必加 lswitchswitch可嵌套可嵌套l多

44、个多个casecase可共用一组执行语句可共用一组执行语句switch(grade)case A:printf(“85100n”);break; case B:printf(“7084n”);break; case C:printf(“6069n”);break; case D:printf(“60n”); break; .第45页/共78页第四十五页,共79页。4646例例 switch(score) case 5: printf(“Very good!”); case 4: printf(“Good!”); case 3: printf(“Pass!”); case 2: printf(“

45、Fail!”); default : printf(“data error!”); 运行结果运行结果(ji gu):score为为5时,输出:时,输出: Very good! Good! Pass! Fail! data error!3.53.5多分支多分支(fnzh)(fnzh)选择控制语句选择控制语句switchswitch语语句句要求要求(yoqi):当:当score为为5时,输出:时,输出: Very good! Good! 当当score为为2时,输出:时,输出: Fail! break;break;第46页/共78页第四十六页,共79页。4747#include void main

46、(void) int c; printf(Enter m or n or h or other:); c=getchar(); switch(c) case m: printf(nGood morning!n); break; case n: printf(nGood night!n); break; case h: printf(nHello!n); break; default : printf(n?n); break; 例例根据输入根据输入(shr)字母输出字母输出字符串字符串3.53.5多分支选择控制多分支选择控制(kngzh)(kngzh)语句语句switchswitch语句语句第4

47、7页/共78页第四十七页,共79页。48483.63.6循环循环(xnhun)(xnhun)控控制制问题问题(wnt):求:求1至至5的和的和#includevoidmain(void)inta=1,b=2,c=3,d=4,e=5,sum;sum=a+b+c+d+e;printf(“sum=%d”,sum);5个变量(binling)#includevoidmain(void)inta=1,sum;sum=a;a=a+1;sum=sum+a;a=a+1;sum=sum+a;a=a+1;sum=sum+a;a=a+1;sum=sum+a;printf(“sum=%d”,sum);若求若求1 1至

48、至100100的和?的和?第48页/共78页第四十八页,共79页。49493.63.6循环循环(xnhun)(xnhun)控制控制C语言有while 、 do - while 、和for语句三种循环结构语句。前两个称为条件循环,即根据条件来决定(judng)是否继续循环;后一个称为计数循环,即根据设定的执行次数来执行循环。第49页/共78页第四十九页,共79页。5050v一般一般(ybn)(ybn)形式:形式:while (表达式表达式) 循环体语句循环体语句(yj);v执行执行(zhxng)(zhxng)流流程:程:表达式循环体循环体假假(0)真真(非非0)while3.63.6循环控制循环

49、控制3.6.1while语句第50页/共78页第五十页,共79页。5151v特点特点(tdin)(tdin):先判断表达式,后执行循环体:先判断表达式,后执行循环体v说明:说明:v循环体有可能一次也不执行循环体有可能一次也不执行v循环体可为任意类型语句循环体可为任意类型语句v下列情况,退出下列情况,退出whilewhile循环循环v条件表达式不成立(为零)条件表达式不成立(为零)v循环体内遇循环体内遇break,returnbreak,returnv循环体中应有使循环趋向于结束的语句。循环体中应有使循环趋向于结束的语句。While语句语句(yj)特点和说明特点和说明3.63.6循环循环(xnh

50、un)(xnhun)控制控制例如例如: i=1; while (i=100) putchar(*); i+; 第51页/共78页第五十一页,共79页。5252用用while循环循环(xnhun)求求1至至100的和的和 #include void main(void) int i,sum=0; i=1; while(i=100) sum=sum+i; i+; printf(“%d,sum); 循环初值循环初值循环终值循环终值循环变量增值循环变量增值循环循环(xnhun)条件条件循环体循环体3.63.6循环循环(xnhun)(xnhun)控制控制第52页/共78页第五十二页,共79页。5353

51、#include void main(void) int i=1; while(i=10) printf(%d*%d=%dn,i,i,i*i); i+; 运行运行(ynxng)结果:结果:1*1=12*2=43*3=94*4=165*5=256*6=367*7=498*8=649*9=8110*10=100例例 显示显示(xinsh)110(xinsh)110的平方的平方3.63.6循环循环(xnhun)(xnhun)控控制制第53页/共78页第五十三页,共79页。5454v一般一般(ybn)(ybn)形式:形式:do 循环体语句循环体语句(yj); while(表达式表达式);v执行执行(z

52、hxng)(zhxng)流流程:程:do循环体循环体expr假假(0)真真(非非0)while3.63.6循环控制循环控制3.6.2do-while语句第54页/共78页第五十四页,共79页。5555v特点特点(tdin):先执行循环体,后判断表达:先执行循环体,后判断表达式式v说明:说明:v至少执行一次循环体至少执行一次循环体vdowhile可转化成可转化成while结构结构表达式循环体循环体假假(0)真真(非非0)循环体循环体While循环dowhile语句语句(yj)特点和说特点和说明明3.63.6循环循环(xnhun)(xnhun)控控制制第55页/共78页第五十五页,共79页。565

53、63.63.6循环循环(xnhun)(xnhun)控控制制用用do-while循环循环(xnhun)求求1至至100的和的和 #include void main(void) int i,sum=0; i=1; do sum=sum+i; i+; while(i =100) printf(%d,sum); #include void main(void) int i,sum=0; i=1; while(i=100) sum=sum+i; i+; printf(%d,sum); 运行运行(ynxng)结结果:果:5050 运行结果:运行结果:5050i=101;i=101; 运行结果:运行结果:

54、0 运行结果:运行结果: 101第56页/共78页第五十六页,共79页。5757v一般一般(ybn)(ybn)形式:形式:for(表达式表达式1 ; 表达式表达式2 ; 表达式表达式3) 循环体语句循环体语句(yj);v执行执行(zhxng)(zhxng)流程:流程:表达式2循环体循环体假假(0)真真(非非0)for表达式表达式1表达式表达式33.63.6循环控制循环控制3.6.3for语句第57页/共78页第五十七页,共79页。5858l for语句中表达式语句中表达式1, 表达式表达式2 ,表达式表达式3 类型任意类型任意(rny),都可省略,但分号;不可省,都可省略,但分号;不可省l f

55、or语句可以转换成语句可以转换成while结构结构如已先给变量赋过值。如已先给变量赋过值。则可以省略表达式则可以省略表达式1。如果想在循环内部改如果想在循环内部改变变量的值,则可以变变量的值,则可以省略表达式省略表达式3。如果都省略的话就相如果都省略的话就相当于当于while。全部省略就是死循环。全部省略就是死循环。 表达式表达式1; while(表达式表达式2) 循环体语句循环体语句(yj);表达式表达式3; 3.63.6循环循环(xnhun)(xnhun)控制控制for语句说明语句说明for(;i100;i+)for(;i100;i+)for(i=0;i100;)for(i=0;i100;

56、)for(;i100;) for(;i100;) while(i100) while(i100)for(;) (for(;) (需要用需要用breakbreak跳出跳出) ) 运行结果:运行结果: abcdefghij #include void main(void) int i=0; for(i=0;i10;i+) putchar(a+i); #include void main(void) int i=0; for(;i10;i+) putchar(a+i); #include void main(void) int i=0; for(;i10;) putchar(a+(i+); #inc

57、lude void main(void) int i=0; for(;i10;putchar(a+i),i+) ; 第58页/共78页第五十八页,共79页。59593.63.6循环循环(xnhun)(xnhun)控控制制用用for循环循环(xnhun)求求1至至100的和的和 #include voidmain(void ) int i,sum=0; i=1; do sum=sum+i; i+; while(i =100); printf(%d,sum); #include voidmain(void ) int i,sum=0; i=1; while(i=100) sum=sum+i; i+

58、; printf(%d,sum); #include void main(void) int i,sum=0;for( i=0; i=100; i+ ) sum=sum+i; printf(%d,sum); 第59页/共78页第五十九页,共79页。60603.63.6循环循环(xnhun)(xnhun)控制控制3.6.4循环(xnhun)的嵌套 在循环体语句中又有另一个完整的循环结构的形式,称为循环的嵌套。嵌套在循环体内的循环语句称为内循环,外面的循环语句称为外循环。如果内循环体中又有嵌套的循环语句,称为多层循环。While 、do-while、for三种循环都可以互相嵌套。 循环嵌套的程序中

59、,要求(yoqi)内循环必须被包含在外层循环的循环体中,不允许出现内外层循环体交叉的情况。第60页/共78页第六十页,共79页。6161v三种循环可互相嵌套三种循环可互相嵌套, ,层数不限层数不限v外层外层(wi cn)(wi cn)循环可包含两个以上内循环循环可包含两个以上内循环, ,但不能但不能相互交叉相互交叉v嵌套循环的一般形式嵌套循环的一般形式(1) while( ) while( ) . (2) do do while( ); . while( );(3) while( ) do while( ); . (4) for( ; ;) do while(); while() . 内循环外

60、循环内循环v嵌套循环的跳转嵌套循环的跳转v禁止:禁止:v从外层从外层(wi cn)(wi cn)跳入跳入内层内层v跳入同层的另一循环跳入同层的另一循环v向上跳转向上跳转3.63.6循环循环(xnhun)(xnhun)控制控制第61页/共78页第六十一页,共79页。6262i10printf假假(0)真真(非非0)i=1j+j=1j10真真(非非0)假假(0)i+for(i=1;i10;i+) for(j=1;j10;j+) printf(j=9)?%4dn:%4d,i*j);外循环外循环(xnhun)内循环内循环(xnhun)图解图解(tji(tji)3.63.6循环控制循环控制第62页/共7

61、8页第六十二页,共79页。63633.63.6循环循环(xnhun)(xnhun)控制控制问题:输出(shch)图形*分析: 一共6行, 每行的 * 数目与行号相同算法(sun f): 行用 i 表示 , 当 i = 6 do 输出 i 个 * 换行 int i,j; for ( i=1; i7; i+) printf(n); for (j=1; j=i; j+ ) putchar(*); 第63页/共78页第六十三页,共79页。6464问题:输出(shch)图形*3.63.6循环循环(xnhun)(xnhun)控制控制分析: 一共(ygng)4行, 第i行输出的空格数为: 4-i 第i行输出

62、 i*2-1个*, 算法: 当 i = 4 do 输出 4-i个空格 ; 输出i*2-1 个 * 换行 ; i+ ; 第64页/共78页第六十四页,共79页。65653.63.6循环循环(xnhun)(xnhun)控制控制#includevoid main(void) int i,j; for ( i=1; i=4; i+) printf(“n”); for (j=1;j=4-i ; j+) putchar( ); /*输出输出(shch) 4-i个空格个空格*/ for (j=1;j=2*i-1;j+ ) putchar(*); /* 输出输出(shch)2*i-1 个个 * */ getc

63、h(); 第65页/共78页第六十五页,共79页。6666v功能:在循环语句和switch语句中,终止并跳出循环体或开关体。即跳出当前的结构。v说明:vbreak只能(zhnn)终止并跳出最近一层的结构vbreak不能用于循环语句和switch语句之外的任何其它语句之中3.73.7辅助辅助(fzh)(fzh)控制语控制语句句3.7.1break语句(yj)第66页/共78页第六十六页,共79页。6767表达式break;假假(0)真真(非非0)whiledobreak;.表达式假假(0)真真(非非0)while3.73.7辅助控制辅助控制(kngzh)(kngzh)语句语句第67页/共78页第

64、六十七页,共79页。6868表达式2break;.假假(0)真真(非非0)for表达式表达式1表达式表达式3switch表达式表达式语句组语句组1break;语句组语句组2break;语句组语句组nbreak;语句组语句组break;.const 1const 2const ndefaultcase 3.73.7辅助辅助(fzh)(fzh)控制控制语句语句第68页/共78页第六十八页,共79页。6969#includevoid main(void) int s=0,i=1: for (; ;) s = s+i; i+; if (i100) break; /* 如果如果 i100,则退出循环则退

65、出循环*/ printf(“s=%d”,s);本程序中,当本程序中,当i100时,强行时,强行(qingxng)终止终止for循循环,继续执行环,继续执行for语句下一条语句语句下一条语句3.73.7辅助辅助(fzh)(fzh)控制控制语句语句第69页/共78页第六十九页,共79页。70703.73.7辅助辅助(fzh)(fzh)控制语句控制语句3.7.2continue语句(yj)v功能:结束本次循环,跳过循环体中尚未执行的语句,进行下一次是否执行循环体的判断(pndun)。Continue语句并不结束整个循环。v仅用于循环语句中第70页/共78页第七十页,共79页。7171表达式conti

66、nue;假假(0)真真(非非0)while真真(非非0)docontinue;.表达式假假(0)while表达式2continue;.假假(0)真真(非非0)for表达式表达式1表达式表达式33.73.7辅助控制辅助控制(kngzh)(kngzh)语句语句第71页/共78页第七十一页,共79页。7272例例 显示输入的字符显示输入的字符, , 如果按的是如果按的是EscEsc键键, , 则退出循环;则退出循环; 如果按的是如果按的是EnterEnter键键, , 则不做则不做任何任何(rnh)(rnh)处理,继续输入下一个字符。处理,继续输入下一个字符。#include“conio.h”voi

67、dmain(void)charch;for(;)ch=getch();/*字符输入函数字符输入函数*/if(ch=27)/*Esc键的键的ACSII码为码为27*/break;/*退出循环退出循环*/if(ch=13)continue;/*按的是按的是Enter:键,跳过字符输出键,跳过字符输出语句语句(yj)*/putch(ch);/*显示输入的字符显示输入的字符*/getch();/*让程序停一下,拍任意键继续让程序停一下,拍任意键继续*/3.73.7辅助辅助(fzh)(fzh)控制语控制语句句第72页/共78页第七十二页,共79页。73733.73.7辅助控制辅助控制(kngzh)(kn

68、gzh)语句语句3.7.3goto语句(yj)v功能:把程序(chngx)控制转移到标号指定的语句处,它和if语句一起构成循环结构。vgoto 语句的使用格式为:v goto 语句标号;v 其中语句标号与标识符的命名规则一致。语句标号表明程序(chngx)中的某个位置,其必须放在某个语句的前面,并在标号后面使用“:”作分隔符。 第73页/共78页第七十三页,共79页。74743.73.7辅助控制辅助控制(kngzh)(kngzh)语句语句#include“stdio.h”voidmain(void)floatscore,average=0;intn=0;scanf(“%f”,&score);/

69、*输入第一个学生输入第一个学生(xusheng)的分数的分数*/if(score=0)/*表达式为非表达式为非0,转移到转移到loop标号处标号处*/gotoloop;average=average/n;/*求平均成绩求平均成绩average*/end:printf(“%6.2f”,average);/*输出平均成绩输出平均成绩,保留两位小数保留两位小数*/第74页/共78页第七十四页,共79页。75753.83.8程序设计程序设计(chn (chn x sh j)x sh j)举例举例例例1 1目标:输入目标:输入(shr)(shr)一个年号,判断是否为闰年。一个年号,判断是否为闰年。算法:

70、能被算法:能被4 4整除且不是整除且不是100100的倍数,或者能被的倍数,或者能被400400整除。整除。第75页/共78页第七十五页,共79页。7676#includevoidmain(void)intyear,leap;printf(“Enteryear:”);scanf(“%d”,&year);if(year%400=0)leap=1;/*是闰年是闰年(rnnin)leap置成置成1*/elseif(year%4=0&year%100!=0)leap=1;elseleap=0;/*不是闰年不是闰年(rnnin)leap置成置成0*/if(leap=1)printf(“%d:isalea

71、pyear.”,year) ;elseprintf(“disnotaleapyear”,year);3.83.8程序设计程序设计(chn x (chn x sh j)sh j)举例举例第76页/共78页第七十六页,共79页。7777例例2 2目标:找出目标:找出3 3至至10001000内的全部的素数。内的全部的素数。算法:从算法:从i= 1 i= 1 开始做开始做 分别分别(fnbi)(fnbi)用用2,3,4,i-1 2,3,4,i-1 除除i,i, 如果如果i i被除被除1 1和自身的某个数整和自身的某个数整除除 , i , i不是素数。不是素数。 i+; i+; 测试下一个测试下一个i

72、;i;3.83.8程序设计程序设计(chn (chn x sh j)x sh j)举例举例#include void main(void) int i, j ,count,flag; /* 用用flag作标志作标志 */ count=0; for(i=3; i=1000; i+) flag = 0; /* 设标志为设标志为0 */ for(j=2; jm ,则按实际宽度输出(shch)。控制字符串说明了需输入数据的类型,两个整型数和一个实型数。浮点数12.0赋予y,60赋予x。浮点数11.0赋予v1,33.0赋予v2,55.0赋予v3。基本思想:任何程序都可以用三种基本结构表示,限制使用无条件转移语句(goto)第七十九页,共79页。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号