收藏 分享(赏)

C语言 第3章 C语言的控制结构.ppt

上传人:fmgc7290 文档编号:8007325 上传时间:2019-06-03 格式:PPT 页数:78 大小:918KB
下载 相关 举报
C语言 第3章 C语言的控制结构.ppt_第1页
第1页 / 共78页
C语言 第3章 C语言的控制结构.ppt_第2页
第2页 / 共78页
C语言 第3章 C语言的控制结构.ppt_第3页
第3页 / 共78页
C语言 第3章 C语言的控制结构.ppt_第4页
第4页 / 共78页
C语言 第3章 C语言的控制结构.ppt_第5页
第5页 / 共78页
点击查看更多>>
资源描述

1、1,第三章 控制结构,3.1 C语言的基本语句,3.2 数据的输入与输出,3.3 基本控制结构与流程控制语句,3.4 选择结构控制,3.5 多分支结构控制语句,3.6 循环控制,3.7 辅助控制语句,3.8 程序设计举例,2,3.1 C语言的基本语句,C语句:以“;”作分隔符,编译后产生机器指令。 C语句分类 表达式语句:表达式加分号构成。 空语句 ; 程序控制语句(9种): 复合语句:用括起来的一组语句。 函数调用语句:由一次函数调用加一个分号构成的语句。,如 total=total+limit; a=3;func( );,一般形式: 数据说明部分;执行语句部分; 说明: “”后不加分号 语

2、法上和单一语句相同 复合语句可嵌套,如: printf(“this is a C statement”);,3,C语言本身不提供输入输出语句,得由标准I/O库函数提供。输入输出库函数很丰富,可以从键盘、显示器、磁盘文件和硬件端口进行输入或输出操作。本节主要介绍用于键盘输入和显示器输出的函数。,3.2 数据的输入与输出,4,3.2 数据的输入与输出,3.2.1 字符数据的输入与输出,1、字符输入函数,int getchar(void),函数功能:从输入设备(一般为键盘)上输入一个字符。它每被调用一次,就从标准输入设备上取一个字符,返回值是该字符的ASCII编码值。可以赋给字符变量或整型变量。,执

3、行getchar()时输入字符后要回车。,例: #include main()char c;c = getchar( );putchar ( c );,输出结果:A A,5,3.2 数据的输入与输出,2、字符输出函数,int putchar(int),函数功能:向标准输出设备(一般为显示器)输出一个字符,并返回返回概字母的ASCII码值。参数可以是字符常量,变量或整型数。,例:#include main( )char a, b, c;a = b; b = o; c = y;putchar(a); putchar(b); putchar(c);,输出结果:boy,6,3.2.2格式输入与输出,p

4、rintf函数(格式输出函数) printf函数的一般格式为: printf(格式控制,输出表列)“格式控制”是用双引号括起来的字符串,它包括两种信息1、格式说明,由“%”和格式字符组成,格式说明总是由“%”字符开始。 2、普通字符,即需要原样输出的字符。 “输出表列”是需要输出的一些数据,可以是表达式。,3.2 数据的输入与输出,7,格式输入与输出,格式字符 对不同类型的数据用不同的格式字符。有以下几种格式字符 d格式符 用来输出十进制整数。有以下几种用法 %d,按照整数的实际长度输出。%md,m为指定的输出字段的宽度。如果数据的位数小于m,则左端补以空格;如果大于m,则按照实际位数输出。若

5、a=123,d=12345则: printf(“%4d,%4d”,a,b);输出: 123,12345 ( 代表空格)%ld,输出长整型数据。 如:long a=135790; printf(“%ld”,a);输出:135790对长整型数据也可以制定字段宽度,如printf(“%8ld”,a); 输出: 135790o格式符 以八进制形式输出整数。由于是将内存单元中的各位的值按照八进制形式输出,因此输出的数值不带符号。对长整型,用“%lo”格式,同样可以加字段宽度。,如:int a=-1; printf(“%d,%o“,a,a);,输出结果为:-1,177777,8,格式输入与输出,x格式符以

6、十六进制形式输出整数。同样不会出现负的十六进制数。,u格式符 用来输出unsigned型数据,即无符号数,以十进制形式输出。一个有符号整数也可以用%u格式输出;反之,一个unsigned也可以用%d、%o、%x格式输出。按相互赋值的规则处理。,Int a=-1; printf(“%x,%d,%o”,a,a,a);,输出:ffff,-1,177777,Main() unsigned inrt a=65535; int b=-2; printf(“a=%d,%o,%x,%un”,a,a,a,a); printf(“a=%d,%o,%x,%un”,b,b,b,b); ,运行结果:-1,177777,

7、ffff,65535 -2,177776,fffe,65534,9,格式输入与输出,c格式符 用来输出一个字符。s格式符 用来输出一个字符串。有几种用法 %s,按照实际长度输出字符串。%ms,输出的字符串占m列。如果字符串的长度大于m,则突破m的限制,将字符串全部输出;反之,则左补空格。%-ms,如果字符串的长度小于m,则在m范围内,字符串向左靠,右补空格。%m.ns,输出占m列,但只取字符串中左端n个字符。这n个字符输出在m列的右侧,左补空格。%-m.ns,输出占m列,但只取字符串中左端n个字符。这n个字符输出在m列的左侧,右补空格。如果nm,则m自动取n值,以保证n个字符正常输出。,Mai

8、n() printf(“%3s,%7.2s,%.4s,%-5.3sn”,”china”, ”china”, ”china”, ”china”);,输出如下:china, ch,chin,chi,10,格式输入与输出,f格式符 用来输出实数,以小数形式输出。有以下几种用法%f,不指定字段宽度,由系统自动指定,使整数部分全部输出,并输出6位小数。注意:并非全部数据都是有效数字,单精度实数的有效位数一般为7位,双 精度有效位数为16位。,%m.nf,指定输出数据共占m列,其中有n位小数。如果数值长度小于m,则左补空格。,%-m.nf与%m.nf基本相同,只是输出的数值向左端靠,右端补空格。,main

9、() float f=123.456; printf(“%f %10f %10.2f%.2f%-10.2fn”,f,f,f,f,f); ,输出如下: 123.456001123.456001123.46123.46 123.46,11,格式输入与输出,e格式符 以指数形式输出实数。可用以下形式 %e,不指定输出数据占的宽度和数字部分小数位数,Turbo C自动指定给出5位小数,指数部分占4位,其中“e”占1位,指数符号占1位,指数占2位。数值按照标准化指数形式输出。%m.ne和%-m.ne,m、n和“-”字符含义与前相同。(Turbo C中n包括小数点)若 f=123.456 则 printf

10、(“%e%12e%10.2e%.2e%-10.2e”,f,f,f,f,f); 输出如下: 1.23456e+021.23456e+021.2e+021.2e+021.2e+02 g格式符 用来输出实数,它根据数值的大小自动选择f格式或e格式,且不输出无意义的0。若f=123.4 则 printf(“%f%e%g”,f,f,f); 输出:123.4000021.23400e+02123.4 注意 除X,E,G外,其他格式字符必须用小写字母。如“%d”不能写成“%D”。 可以在printf()函数中的“格式控制”字符串内包含“转义字符”,如:”n”,”t”等。,12,格式输入与输出,一个格式说明以

11、“%”开头,以d、o、x、u、c、s、f、e、g等字符之一结束,中间可以插入附加格式字符,如:字符”l”等。如果想输出字符“%”,则应该在“格式控制”字符串中用连续两个%表示。 Printf(“%f%”,1.0/3); scanf()函数(格式输入函数) 1、一般格式 scanf(格式控制,地址列表 );“格式控制”的含义同printf()函数,“地址列表”是由若干地址组成的列表,可以是变量的地址,或字符串的首地址。Main() int a,b,c; scanf(“%d%d%d”, 用如下格式输入:345 或345 或 3 45 或3T4 5 注意:用格式”%d%d%d”输入数据时,不能用逗号

12、作为两个数据间的分隔符。,13,格式输入与输出,2、格式说明 和printf()函数中的格式说明相似,以%开始,以一个格式字符结束,中间可以插入附加字符。说明 对unsigned型数据,可以用%u、%d、%o和%x格式输入。可以指定输入数据所占列数,系统自动按照它截取所需数据。 Scanf(“%3c”, 输入应该用以下形式: 12:23:11,输入:abc 结果:a=ch 输入:123456 结果:123 =a 456 =b,输入:1234567 结果:12=a 67=b,14,格式输入与输出,在用“%c”格式输入字符时,空格字符和“转义字符”都作为有效字符输入。在输入数据时,遇到以下几种情况

13、时该数据认为结束,遇到空格、或“回车”或TAB键;遇到宽度结束; Scanf(“%3d%3d”,遇到非法输入。,15,3.2 数据的输入与输出,格式输出函数的一般形式,printf(“格式控制字符串”,输出参数表);,说明:格式字符要用小写格式字符与输出项个数应相同,按先后顺序一一对应格式字符与输出项类型不一致,自动按指定格式输出,函数功能:按用户指定的格式,把指定的数据显示到显示器屏幕上,并返回输出的字符数。这个函数可以输出多字信息。,3.2.2 格式输出函数,16,例: includemain( )int i = 97; char ch = a; printf (“i =%d ,%cn”,

14、 i, i ); ,两个输出项都是变量i , 但以不同的格式输出,一个是输出的整型数,一个输出的是字符a. 其格式是由%d与%c控制的.,输出结果: i =97,a,3.2 数据的输入与输出,17,printf (“i =%d ,%c n”, i, i );,3.2 数据的输入与输出,格式控制由格式控制字符串实现。格式控制符由三部分组成: 普通字符:输出时按原样输出,主要用于输出提示信息 转义字符:批明特定的操作。 输出项格式说明%flagswidth.precF|N|h|Ltype,18,%flagswidth.precF|N|h|Ltype,Flags为选择的标志字符。常用的有: - :

15、为左对齐,否则右对齐 +:正数输出+,负数输出- 空格:正数输出空格,负数输出-,Width为宽度指示符。用十进制数来设置输出值的最少输出个数,少则补空格,多则按实际输出,缺省则按实际输出。,3.2 数据的输入与输出,flags,width,.prec为精度指示符。用小数点加十进制正整数构成,用来限制输出数的精度。,.prec,F|N|h|L为长度修饰符,F远程指针地址 N近程指针地址 h短整数据的值 L长整(双精度)数据的值,F|N|h|L,19,type为格式字符。用来进行格式转换,3.2 数据的输入与输出,%flagswidth.precF|N|h|Ltype,type,20,3.2 数

16、据的输入与输出,3.2.2 格式输出函数,函数功能:从键盘输入任何类型的数据给所制定的单元,并返回输入的数据个数。,格式输入函数一般形式,scanf(“格式控制字符串”,地址列表);,例如:scanf(“%d %d, %f ”,21,% * widthF|Nh|Ltype,输入赋值抑制字符,输入数据但不赋值,3.2 数据的输入与输出,*,width,F,N,h,L,宽度指示符,表示最多可输入的字符个数。,|,地址大小修饰符。Ffar Nnear,|,输入数据类型。h短整型,l长整或双精度,22,% * widthF|Nh|Ltype,type是必须的,表示输入后转换的数据类型。,3.2 数据的

17、输入与输出,type,23,使用scanf应注意:,scanf()的格式控制字符串中的字符不是用于输出的,都是要求输入的。 scanf(”x=%d”, 参数的第二部分一定是地址列表,不能是表达式,请记得在变两前加上&。且地址列表的参数与格式说明个数应保持一致。 执行scanf( )输入数据时,在两个数据之间允许以一个或多个空格间隔,也可以用回车键、tab键分隔。 实数不许规定精度,像%10.4f是不合法的。 %后面有*号时,该数据会被禁止使用。 如果输入时类型不匹配则停止处理,返回0。,3.2 数据的输入与输出,24,例3.1 输入圆的半径,输出圆的周长和面积。 分析: 1.定义实型变量r、l

18、、s用于存放半径、周长、面积; 2.调用输入函数,输入r: 3.分别利用周长公式和面积公式求出l、s; 4.调用输出函数输出l、s。,程序举例,3.2 数据的输入与输出,25,程序:,#include void main() float r,l,s;scanf(“ %f ”,&r); /*输入一个浮点数据,存入地址&r */l = 2 * 3.14159 * r; /*计算周长,赋值给l */ s = 3.14159 *r * r; /*计算面积,赋值给s */ printf(“n l=%8.4f”,l); /*周长占8个字符宽,4位小数*/ printf(“n s=%8.4f”,s); /*

19、输出面积,数据共占8个字符宽,4位小数*/ ,3.2 数据的输入与输出,26,分析: 1.输入小写字母存入变量a; 2.转换成大写a = a-32; 3.输出 a.,例3.2 从键盘输入一个小写字母,用大写形式输出该字母。,3.2 数据的输入与输出,27,#include “stdio.h” void main() char a; printf(“Input a lowercase letter:”); a = getchar(); a = a-32; /*将大写字母转换成对应的小写字母*/ printf(“%c n”,a); 思考:如何使程序可以处理任何字符的输入。即判断输入的是小写字母,才

20、转换成大写;如果输入的其他字符,则直接输出。,3.2 数据的输入与输出,程序:,28,结构化程序设计基本思想:任何程序都可以用三种基本结构表示,限制使用无条件转移语句(goto)结构化程序:由三种基本结构反复嵌套构成的程序叫优点:结构清晰,易读,提高程序设计质量和效率三种基本结构,3.3 基本控制结构与流程控制语句,顺序结构,29,二分支选择结构,多分支选择结构,选择结构,3.3 基本控制结构与流程控制语句,30,当型循环结构,直到型循环结构,循环结构,3.3 基本控制结构与流程控制语句,31,3.3 基本控制结构与流程控制语句,三种基本控制结构的特点:只有一个入口只有一个出口结构内的每一部分

21、都有机会被执行到。即,对每一个框来说,都应当有一条从入口到出口的路径通过它结构内不存在死循环,注:A,B,A1.An可以是一个简单语句,也可以是一个基本结构,x,x,32,例如计算分段函数,分析: 计算 x0 ,如果结果为1:计算:y=3-x; 否则,计算:y=2 * x; 需要根据x的值进行流程选择(分支)。,3.4 选择结构控制,33,main() float x , y;scanf(“%f ”, ,形式一(单分支选择结构): 格式:if (表达式) 语句 执行过程:,形式二(双分支选择结构): 格式:if (表达式) 语句1else语句2 执行过程:,3.4.1 if语句的形式,main

22、() float x , y;scanf(“%f ”, ,3.4 选择结构控制,main() float x , y;scanf(“%f ”, ,34,3.4 选择结构控制,例: 输入两个数, 比较其大小, 将较大的数输出。,流程分析: (1) 输入两个数据a,b ; (2) 如果ab 则输出a ;否则,输出b。 #include main( ) float a, b;scanf(“%f, %f”, ,35,形式三(多分支选择结构): 格式: if ( 表达式1) 语句1else if (表达式2 ) 语句2. else 语句n 执行过程:,3.4 选择结构控制,例:if (salary100

23、0) index=0.4; else if (salary800) index=0.3;else if (salary600) index=0.2;else if (salary400) index=0.1;else index=0;,36,3.4 选择结构控制,写一个程序完成下列功能:1 输入一个分数score2 score60 输出 E3 60=score 70 输出 D4 75=score 80 输出 C5 80=score 90 输出 B5 90=score 输出 A,main( ) int score;sanf(“%d”, ,37,如:if(a=b,if(x) if(x!=0)if(

24、!x) if(x=0),说明:,if语句中的表达式一般为关系或逻辑表达式,也可以为任何数值类型的表达式。 执行语句可以是一条简单语句、空语句或复合语句,也可以嵌套其它流程控制语句。,3.4 选择结构控制,例 考虑下面程序的输出结果: #include main() int x,y;scanf(“%d,%d”,Compile Error!,38,3.4 选择结构控制,复杂条件选择,问题: 输入两个字符ch1和ch2,如果ch1=Z 且 ch2=B,则输出“You are right ! ”,main() char ch1,ch2;ch1=getchar( );ch2=getchar( );if

25、( ch1 = Z ,复杂条件选择,问题: 输入两个字符ch1和ch2,如果ch1=Z 且 ch2=B,则输出“You are right ! ”,39,if语句嵌套,3.4 选择结构控制,40,#include main() int x,y;printf(“Enter integer x,y:“);scanf(“%d,%d“, ,运行:Enter integer x,y:12,23XYEnter integer x,y:12,12X=Y,例 输入两数并判断其大小关系,3.4 选择结构控制,41,缺省 时,else总是和它上面离它最近的未配对的if配对,if else 配对原则:,3.4 选择

26、结构控制,42,例: if (a=b)if(b=c)printf(“a=b=c”);elseprintf(“a!=b”);,修改: if (a=b) if(b=c)printf(“a=b=c”);elseprintf(“a!=b”);,实现if else 正确配对方法:加 ,3.4 选择结构控制,43,3.4 选择结构控制,例4.4 编程实现:根据两个数sex和tall分类, 如果sex为F,当tall大于等于150时,输出” A “,否则输出 “ B “;若sex不为F, 当tall大于等于170时,输出A,否则输出B。分析: 根据sex分支在sex为F的分支中判断tall=150否在sex

27、不为F的分支中判断tall=170否,void main() int tall; char sex;printf( “input sex and tall :” );scanf( “%c %d”, ,44,一般形式:,switch( 表达式) case 常量表达式1:语句组 1;break;case 常量表达式2:语句组 2;break;.case En:语句组 n;break; default:语句组 ;break; ,执行过程:,3.5 多分支选择控制语句switch语句,45,3.5 多分支选择控制语句switch语句,例如:要求按照考试成绩的等级打印出百分制分数 段,可以用switch

28、语句实现:,switch(grade) case A:printf(“85100n”);case B:printf(“7084n”);case C:printf(“6069n”);case D:printf(“60n”);default:printf(“errorn”);,运行结果:若grade=A 则输出:851007084606960error,46,说明:,3.5 多分支选择控制语句switch语句,语句中的表达式可以是数字型或字符型,表达式的值,称为开关值。语句结构中各个case后常量表达式的值必须互不相同;否则执行时将出现矛盾,即同一个开关值,对应多种执行方案当表达式的值与某一个常量

29、相等时,就执行后面的语句;若无break语句,执行该语句后,流程控制转移到下一个分支: 继续执行这一个分支的语句,一至到最后一个语句执行完。当表达式的值与所有常量表达式的值不相等时,执行default:后面的语句。case后可包含多个可执行语句,且不必加 switch可嵌套多个case可共用一组执行语句,switch(grade) case A:printf(“85100n”);break;case B:printf(“7084n”);break;case C:printf(“6069n”);break;case D:printf(“60n”);break;default:printf(“er

30、rorn”);,运行结果:若grade=A 则输出:85100,运行结果:若grade=E 则输出:error,如: case A:case B:case C: printf(“score60n”);break;,47,例 switch(score) case 5: printf(“Very good!”);case 4: printf(“Good!”);case 3: printf(“Pass!”);case 2: printf(“Fail!”);default : printf(“data error!”);,运行结果:score为5时,输出:Very good! Good! Pass!

31、Fail! data error!,3.5 多分支选择控制语句switch语句,要求:当score为5时, 输出: Very good! Good! 当score为2时, 输出: Fail!,break;,break;,48,#include main() 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“

32、); break;default : printf(“n?n“); break; ,例 根据输入字母输出字符串,3.5 多分支选择控制语句switch语句,49,3.6 循环控制,问题:求1至5的和,#include main( ) int a=1,b=2,c=3,d=4,e=5,sum;sum=a+b+c+d+e;ptintf(“sum=%d”,sum);,5个变量,includemain( ) int a=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=%

33、d”,sum);,若求1至100的和?,50,3.6 循环控制,C语言有while 、 do - while 、和for语句三种循环结构语句。前两个称为条件循环,即根据条件来决定是否继续循环;后一个称为计数循环,即根据设定的执行次数来执行循环。,51,一般形式:,while (表达式) 循环体语句;,执行流程:,3.6 循环控制,3.6.1 while语句,52,特点:先判断表达式,后执行循环体 说明: 循环体有可能一次也不执行 循环体可为任意类型语句 下列情况,退出while循环 条件表达式不成立(为零) 循环体内遇break,return 循环体中应有使循环趋向于结束的语句。,While语

34、句特点和说明,3.6 循环控制,例如:i=1;while (i=100)putchar(*);i+;,53,用while循环求1至100的和,#include main( ) int i,sum=0;i=1;while(i=100) sum=sum+i;i+;printf(“%d“,sum);,循环条件,循环体,3.6 循环控制,54,#include main() int i=1;while(i=10) printf(“%d*%d=%dn“,i,i,i*i);i+;,运行结果: 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=

35、81 10*10=100,例 显示110的平方,3.6 循环控制,55,一般形式:,do 循环体语句;while(表达式);,执行流程:,3.6 循环控制,3.6.2 do-while语句,56,特点:先执行循环体,后判断表达式 说明: 至少执行一次循环体 dowhile可转化成while结构,dowhile语句特点和说明,3.6 循环控制,57,3.6 循环控制,用do-while循环求1至100的和,#include main( ) int i,sum=0;i=1;do sum=sum+i;i+; while(i =100)printf(“%d“,sum);,#include main(

36、) int i,sum=0;i=1;while(i=100) sum=sum+i;i+;printf(“%d“,sum);,运行结果:5050,运行结果:5050,i=101;,i=101;,运行结果:0,运行结果: 101,58,一般形式:,for(表达式1 ; 表达式2 ; 表达式3)循环体语句;,执行流程:,3.6 循环控制,3.6.3 for语句,59,for语句中表达式1, 表达式2 ,表达式3 类型任意,都可省略,但分号;不可省for语句可以转换成while结构,表达式1;while(表达式2)循环体语句;表达式3;,3.6 循环控制,for语句说明,for(;i100;i+),f

37、or(i=0;i100;),for(;i100;) while(i100),for(;) (需要用break跳出),运行结果: abcdefghij,60,3.6 循环控制,用for循环求1至100的和,#include main( ) int i,sum=0;i=1;do sum=sum+i;i+; while(i =100)printf(“%d“,sum);,#include main( ) int i,sum=0;i=1;while(i=100) sum=sum+i;i+;printf(“%d“,sum);,#include main( ) int i,sum=0;for( i=0; i

38、=100; i+ ) sum=sum+i;printf(“%d“,sum);,61,3.6 循环控制,3.6.4 循环的嵌套,在循环体语句中又有另一个完整的循环结构的形式,称为循环的嵌套。嵌套在循环体内的循环语句称为内循环,外面的循环语句称为外循环。如果内循环体中又有嵌套的循环语句,称为多层循环。While 、do-while、for三种循环都可以互相嵌套。循环嵌套的程序中,要求内循环必须被包含在外层循环的循环体中,不允许出现内外层循环体交叉的情况。,62,三种循环可互相嵌套,层数不限 外层循环可包含两个以上内循环,但不能相互交叉 嵌套循环的一般形式,(1) while( ) while( )

39、 .,(2) do do while( );.while( );,(3) while( ) do while( );.,(4) for( ; ;) do while();while() .,嵌套循环的跳转 禁止: 从外层跳入内层 跳入同层的另一循环 向上跳转,3.6 循环控制,63,for(i=1;i10;i+)for(j=1;j10;j+)printf(j=9)?“%4dn“:“%4d“,i*j);,图解,3.6 循环控制,64,3.6 循环控制,问题:输出图形* *,分析: 一共6行, 每行的 * 数目与行号相同 算法: 行用 i 表示 , 当 i = 6 do 输出 i 个 *换行 ,i

40、nt i,j;for ( i=1; i7; i+) printf(“n“);for (j=1; j=i; j+ )putchar(*);,65,问题:输出图形* * *,3.6 循环控制,分析: 一共4行,第i行输出的空格数为: (7-i+1)/2第i行输出 i*2-1个*,算法: 当 i = 7 do 输出 (7-i+1)/2个空格 ;输出i 个 *换行 ; i+=2 ;,66,3.6 循环控制,main( ) int i,j; for ( i=1; i=7; i+=2) printf(“n”); for (j=1;j=(7-i+1)/2 ; j+) putchar( ); /*输出 (7-

41、i+1)/2个空格*/ for (j=1;j=i;j+ ) putchar(*); /* 输出i 个 * */ getch(); ,67,功能:在循环语句和switch语句中,终止并跳出循环体或开关体。即跳出当前的结构。说明:break只能终止并跳出最近一层的结构break不能用于循环语句和switch语句之外的任何其它语句之中,3.7 辅助控制语句,3.7.1 break语句,68,3.7 辅助控制语句,69,3.7 辅助控制语句,70,main( ) int s=0,i=1: for (; ;) s = s+i; i+; if (i100) break; /* 如果 i100,则退出循环*

42、/ printf(“s=%d”,s); 本程序中,当i100时,强行终止for循环,继续执行for语句下一条语句,3.7 辅助控制语句,71,3.7 辅助控制语句,3.7.2 continue语句,功能:结束本次循环,跳过循环体中尚未执行的语句,进行下一次是否执行循环体的判断。Continue语句并不结束整个循环。仅用于循环语句中,72,3.7 辅助控制语句,73,例 显示输入的字符, 如果按的是Esc键, 则退出循环; 如果按的是Enter键, 则不做任何处理,继续输入下一个字符。,#include “conio.h” main( ) char ch;for (; ;) ch=getch()

43、; /*字符输入函数 */if (ch=27) /* Esc键的ACSII码为27*/break; /*退出循环*/if (ch=13)continue; /*按的是Enter:键,跳过字符输出语句*/putch(ch); /*显示输入的字符*/getch( ); /*让程序停一下,拍任意键继续*/,3.7 辅助控制语句,74,3.7 辅助控制语句,3.7.3 goto语句,功能:把程序控制转移到标号指定的语句处,它和if语句一起构成循环结构。goto 语句的使用格式为:goto 语句标号;其中语句标号与标识符的命名规则一致。语句标号表明程序中的某个位置,其必须放在某个语句的前面,并在标号后面

44、使用“:”作分隔符。,75,3.7 辅助控制语句,#include “stdio.h”main( ) float score , average=0;int n=0;scanf(“%f”, &score); /* 输入第一个学生的分数 */if (score=0) /* 表达式为非0, 转移到loop标号处 */goto loop;average = average /n ; /*求平均成绩average */end:printf(“%6.2f”, average);/*输出平均成绩,保留两位小数 */,76,3.8 程序设计举例,例1 目标:输入一个年号,判断是否为闰年。算法:能被4整除且不

45、是100的倍数,或者能被400整除。,77,#include void main ( ) int year ,leap; printf (“Enter year:”); scanf(“%d ”, /*不是闰年leap 置成0*/ if (leap = =1) printf (“%d: is a leap year.”, year); else printf (“d is not a leap year”, year); ,3.8 程序设计举例,78,例2 目标:找出3至1000内的全部的素数。 算法:从i= 1 开始做分别用2,3,4,i-1 除i,如果i被除1和自身的某个数整除 , i不是素

46、数。i+; 测试下一个i;,3.8 程序设计举例,#include main( ) int i, j ,count,flag; /* 用flag作标志 */ count=0; for(i=3; i=1000; i+) flag = 0; /* 设标志为0 */ for(j=2; j=sqrt(i); j+) if (i % j = =0) /* 用 j 测试 i */ flag = 1; /* 不是素数,设标志为1 */ /* i 测试完毕 */ if(flag = = 0) /* i是素数 */ printf(“%4d, ”, i ); count+; if (count % 8 = = 0) printf(“n” ); /* 每输出8个素数就换行 */ /* 测试下一个 i */ ,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报