C语言的控制结构.ppt
《C语言的控制结构.ppt》由会员分享,可在线阅读,更多相关《C语言的控制结构.ppt(78页珍藏版)》请在三一办公上搜索。
1、1,第三章 控制结构,3.1C语言的基本语句,3.2数据的输入与输出,3.3基本控制结构与流程控制语句,3.4选择结构控制,3.5多分支结构控制语句,3.6循环控制,3.7辅助控制语句,3.8程序设计举例,2,3.1C语言的基本语句,C语句:以“;”作分隔符,编译后产生机器指令。C语句分类表达式语句:表达式加分号构成。空语句;程序控制语句(9种):复合语句:用括起来的一组语句。函数调用语句:由一次函数调用加一个分号构成的语句。,如 total=total+limit;a=3;func();,一般形式:数据说明部分;执行语句部分;说明:“”后不加分号语法上和单一语句相同复合语句可嵌套,如:pri
2、ntf(“this is a C statement”);,3,C语言本身不提供输入输出语句,得由标准I/O库函数提供。输入输出库函数很丰富,可以从键盘、显示器、磁盘文件和硬件端口进行输入或输出操作。本节主要介绍用于键盘输入和显示器输出的函数。,3.2数据的输入与输出,4,3.2数据的输入与输出,3.2.1字符数据的输入与输出,1、字符输入函数,int getchar(void),函数功能:从输入设备(一般为键盘)上输入一个字符。它每被调用一次,就从标准输入设备上取一个字符,返回值是该字符的ASCII编码值。可以赋给字符变量或整型变量。,执行getchar()时输入字符后要回车。,例:#inc
3、lude 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格式输入与输出,printf函数(格式输出函数)printf函数的一般格式为:printf(格式控制,输出表列)“
4、格式控制”是用双引号括起来的字符串,它包括两种信息 1、格式说明,由“%”和格式字符组成,格式说明总是由“%”字符开始。2、普通字符,即需要原样输出的字符。“输出表列”是需要输出的一些数据,可以是表达式。,3.2数据的输入与输出,7,格式输入与输出,格式字符 对不同类型的数据用不同的格式字符。有以下几种格式字符d格式符用来输出十进制整数。有以下几种用法%d,按照整数的实际长度输出。%md,m为指定的输出字段的宽度。如果数据的位数小于m,则左端补以空格;如果大于m,则按照实际位数输出。若a=123,d=12345则:printf(“%4d,%4d”,a,b);输出:123,12345(代表空格)
5、%ld,输出长整型数据。如:long a=135790;printf(“%ld”,a);输出:135790 对长整型数据也可以制定字段宽度,如printf(“%8ld”,a);输出:135790 o格式符以八进制形式输出整数。由于是将内存单元中的各位的值按照八进制形式输出,因此输出的数值不带符号。对长整型,用“%lo”格式,同样可以加字段宽度。,如:int a=-1;printf(“%d,%o“,a,a);,输出结果为:-1,177777,8,格式输入与输出,x格式符 以十六进制形式输出整数。同样不会出现负的十六进制数。,u格式符用来输出unsigned型数据,即无符号数,以十进制形式输出。一
6、个有符号整数也可以用%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,ffff,65535-2,177776,fffe,65534,9,格式输入与输出,c格式符用来输出一个字符。s格式符用来输出一个字符串。有
7、几种用法%s,按照实际长度输出字符串。%ms,输出的字符串占m列。如果字符串的长度大于m,则突破m的限制,将字符串全部输出;反之,则左补空格。%-ms,如果字符串的长度小于m,则在m范围内,字符串向左靠,右补空格。%m.ns,输出占m列,但只取字符串中左端n个字符。这n个字符输出在m列的右侧,左补空格。%-m.ns,输出占m列,但只取字符串中左端n个字符。这n个字符输出在m列的左侧,右补空格。如果nm,则m自动取n值,以保证n个字符正常输出。,Main()printf(“%3s,%7.2s,%.4s,%-5.3sn”,”china”,”china”,”china”,”china”);,输出如下
8、:china,ch,chin,chi,10,格式输入与输出,f格式符 用来输出实数,以小数形式输出。有以下几种用法%f,不指定字段宽度,由系统自动指定,使整数部分全部输出,并输出6位小数。注意:并非全部数据都是有效数字,单精度实数的有效位数一般为7位,双 精度有效位数为16位。,%m.nf,指定输出数据共占m列,其中有n位小数。如果数值长度小于m,则左补空格。,%-m.nf与%m.nf基本相同,只是输出的数值向左端靠,右端补空格。,main()float f=123.456;printf(“%f%10f%10.2f%.2f%-10.2fn”,f,f,f,f,f);,输出如下:123.45600
9、1123.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(“%e%12e%10.2e%.2e%-10.2e”,f,f,f,f,f);输出如下:1.23456e+021.23456e+021.2e+021.2e+021.2e+02g
10、格式符用来输出实数,它根据数值的大小自动选择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,格式输入与输出,一个格式说明以“%”开头,以d、o、x、u、c、s、f、e、g等字符之一结束,中间可以插入附加格式字符,如:字符”l”等。如果想输出字符“%”,则应该在“格式控制”字符串中用连续两个%表示。Printf(
11、“%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”输入数据时,不能用逗号作为两个数据间的分隔符。,13,格式输入与输出,2、格式说明 和printf()函数中的格式说明相似,以%开始,以一个格式字符结束,中间可以插入附加字符。说明对unsigned型数据,可以用%u、%d、%
12、o和%x格式输入。可以指定输入数据所占列数,系统自动按照它截取所需数据。Scanf(“%3c”,输入应该用以下形式:12:23:11,输入:abc 结果:a=ch输入:123456 结果:123=a 456=b,输入:1234567结果:12=a 67=b,14,格式输入与输出,在用“%c”格式输入字符时,空格字符和“转义字符”都作为有效字符输入。在输入数据时,遇到以下几种情况时该数据认为结束,遇到空格、或“回车”或TAB键;遇到宽度结束;Scanf(“%3d%3d”,遇到非法输入。,15,3.2数据的输入与输出,格式输出函数的一般形式,printf(“格式控制字符串”,输出参数表);,说明:
13、格式字符要用小写格式字符与输出项个数应相同,按先后顺序一一对应 格式字符与输出项类型不一致,自动按指定格式输出,函数功能:按用户指定的格式,把指定的数据显示到显示器屏幕上,并返回输出的字符数。这个函数可以输出多字信息。,3.2.2格式输出函数,16,例:include main()int i=97;char ch=a;printf(“i=%d,%cn”,i,i);,两个输出项都是变量i,但以不同的格式输出,一个是输出的整型数,一个输出的是字符a.其格式是由%d与%c控制的.,输出结果:i=97,a,3.2数据的输入与输出,17,printf(“i=%d,%c n”,i,i);,3.2数据的输入
14、与输出,格式控制由格式控制字符串实现。格式控制符由三部分组成:普通字符:输出时按原样输出,主要用于输出提示信息转义字符:批明特定的操作。输出项格式说明%flagswidth.precF|N|h|Ltype,18,%flagswidth.precF|N|h|Ltype,Flags为选择的标志字符。常用的有:-:为左对齐,否则右对齐+:正数输出+,负数输出-空格:正数输出空格,负数输出-,Width为宽度指示符。用十进制数来设置输出值的最少输出个数,少则补空格,多则按实际输出,缺省则按实际输出。,3.2数据的输入与输出,flags,width,.prec为精度指示符。用小数点加十进制正整数构成,用
15、来限制输出数的精度。,.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数据的输入与输出,3.2.2格式输出函数,函数功能:从键盘输入任何类型的数据给所制定的单元,并返回输入的数据个数。,格式输入函数一般形式,scanf(“格式控制字符串”,地址列表);,例如:scanf(“%d%d,%f”,21,%*widthF|Nh|Ltype,输入赋值抑制字符,输入数据但不赋值,3.
16、2数据的输入与输出,*,width,F,N,h,L,宽度指示符,表示最多可输入的字符个数。,|,地址大小修饰符。Ffar Nnear,|,输入数据类型。h短整型,l长整或双精度,22,%*widthF|Nh|Ltype,type是必须的,表示输入后转换的数据类型。,3.2数据的输入与输出,type,23,使用scanf应注意:,scanf()的格式控制字符串中的字符不是用于输出的,都是要求输入的。scanf(”x=%d”,参数的第二部分一定是地址列表,不能是表达式,请记得在变两前加上&。且地址列表的参数与格式说明个数应保持一致。执行scanf()输入数据时,在两个数据之间允许以一个或多个空格间
17、隔,也可以用回车键、tab键分隔。实数不许规定精度,像%10.4f是不合法的。%后面有*号时,该数据会被禁止使用。如果输入时类型不匹配则停止处理,返回0。,3.2数据的输入与输出,24,例3.1 输入圆的半径,输出圆的周长和面积。分析:1.定义实型变量r、l、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;/*计
18、算周长,赋值给l*/s=3.14159*r*r;/*计算面积,赋值给s*/printf(“n l=%8.4f”,l);/*周长占8个字符宽,4位小数*/printf(“n s=%8.4f”,s);/*输出面积,数据共占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
19、();a=a-32;/*将大写字母转换成对应的小写字母*/printf(“%c n”,a);思考:如何使程序可以处理任何字符的输入。即判断输入的是小写字母,才转换成大写;如果输入的其他字符,则直接输出。,3.2数据的输入与输出,程序:,28,结构化程序设计基本思想:任何程序都可以用三种基本结构表示,限制使用无条件转移语句(goto)结构化程序:由三种基本结构反复嵌套构成的程序叫优点:结构清晰,易读,提高程序设计质量和效率三种基本结构,3.3基本控制结构与流程控制语句,顺序结构,29,二分支选择结构,多分支选择结构,选择结构,3.3基本控制结构与流程控制语句,30,当型循环结构,直到型循环结构,
20、循环结构,3.3基本控制结构与流程控制语句,31,3.3基本控制结构与流程控制语句,三种基本控制结构的特点:只有一个入口 只有一个出口 结构内的每一部分都有机会被执行到。即,对每一个框来说,都应当有一条从入口到出口的路径通过它 结构内不存在死循环,注: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(表达式)语句执行过程:,形
21、式二(双分支选择结构):格式:if(表达式)语句1else语句2执行过程:,3.4.1if语句的形式,main()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选择结构控制,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 控制 结构
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-6503944.html