《C程序设计第5章顺序结构程序设计.ppt》由会员分享,可在线阅读,更多相关《C程序设计第5章顺序结构程序设计.ppt(38页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第5章顺序结构程序设计5.1 5.1 语语 句句5.2 5.2 库函数的使用库函数的使用5.3 5.3 顺序结构程序设计顺序结构程序设计5.1语语句句5.1.1 语句的概念语句的概念 语句是是算法实现的程序表示,是算法实语句是是算法实现的程序表示,是算法实现的最小单位。语句说明了一种行为,它是用现的最小单位。语句说明了一种行为,它是用计算语言编写的控制计算机完成确定操作的句计算语言编写的控制计算机完成确定操作的句子。子。5.1.2 C语句的分类语句的分类C语言将语句分为以下几类:语言将语句分为以下几类:(1)表达式语句;)表达式语句;(2)流程控制语句;)流程控制语句;(3)函数调用语句;)函
2、数调用语句;(4)跳转语句;)跳转语句;(5)标号语句;)标号语句;(6)复合语句;)复合语句;(7)空语句。)空语句。5.1.3 语句和表达式的区别语句和表达式的区别任任意意类类型型的的表表达达式式都都是是有有值值的的,而而语语句句是是向向计计算算机机发发出出的的完完成成表表达达式式运运算算的的一一个个动动作作,语语句句是是没没有有值值的的。表表达达式式可可以以作作为为运运算算对对象象参参与与其其他他表达式的运算,而语句则不能。例如,表达式的运算,而语句则不能。例如,x=3*(a=4)是合法的表达式,而是合法的表达式,而x=3*(a=3;)则不是合法的表达式。则不是合法的表达式。5.2 5.
3、2 库函数的使用库函数的使用 在在C语言中函数占有及其重要的地位,这语言中函数占有及其重要的地位,这里首先来简单介绍一下函数的概念。函数是事里首先来简单介绍一下函数的概念。函数是事先编写好的完成一定功能的程序段。先编写好的完成一定功能的程序段。下下面面以以TurboC为为例例,讲讲述述部部分分输输入入输输出出和和数学库函数的使用。数学库函数的使用。5.2.1 库函数的使用库函数的使用 标准的库函数使用方法较为简单,但是由标准的库函数使用方法较为简单,但是由于库函数是存放在函数库中的,因此在使用时于库函数是存放在函数库中的,因此在使用时必须告诉计算机该库函数属于哪一个库,以便必须告诉计算机该库函
4、数属于哪一个库,以便计算机及时查找并执行其程序体,这一过程一计算机及时查找并执行其程序体,这一过程一般称为函数的声明。般称为函数的声明。#includemath.hmain()floatx,y;y=sin(x);其中其中#includemath.h就是对函数的声明过程。就是对函数的声明过程。include是是C语语言言的的特特定定字字,是是包包含含的的意意思思,在在使使用用前前要要加加符符号号“#”。被包含的文件又称为头文件。被包含的文件又称为头文件。函数的使用称为调用,在函数调用后加函数的使用称为调用,在函数调用后加“;”就构成了函数就构成了函数调用语句,函数也可以作为运算的运算对象。函数名
5、括号里面的调用语句,函数也可以作为运算的运算对象。函数名括号里面的量值称之为参数,当给定这些参数的量值时,编译系统就可通过量值称之为参数,当给定这些参数的量值时,编译系统就可通过给定的量值计算出所需的结果给定的量值计算出所需的结果5.2.2 常用的输出函数常用的输出函数1多种类型数据输出函数多种类型数据输出函数printf()printf(格式控制,输出表列格式控制,输出表列)该函数的功能是将输出表列中的数据按照该函数的功能是将输出表列中的数据按照格式控制的格式输出到标准输出设备。格式控制的格式输出到标准输出设备。第一部分称为格式控制,是用双引号括起第一部分称为格式控制,是用双引号括起来的字符
6、串,包含普通字符和以来的字符串,包含普通字符和以“%”“%”开头的格开头的格式控制字符两类成份构成;第二部分是需要输式控制字符两类成份构成;第二部分是需要输出的数据,可以任意多个,每个数据之间用逗出的数据,可以任意多个,每个数据之间用逗号隔开。号隔开。格式字符和输出表列中的数据项具备一一格式字符和输出表列中的数据项具备一一对应关系,其作用是控制对应的输出项按照指对应关系,其作用是控制对应的输出项按照指定的格式输出;普通字符指的是除格式字符外定的格式输出;普通字符指的是除格式字符外的任意字符,可以用字符的各种表示形式去描的任意字符,可以用字符的各种表示形式去描述,其作用是按照该字符的含义输出。述
7、,其作用是按照该字符的含义输出。格式字符种类较多,下面作较为详细的讲解。格式字符种类较多,下面作较为详细的讲解。(1)%c%c用以输出单个字符。用以输出单个字符。例如:例如:printf(Thecharacteris:%cn,a);表示把字符表示把字符a以以%c的格式输出到计算机的的格式输出到计算机的屏幕上。在用户屏幕上看到如下内容:屏幕上。在用户屏幕上看到如下内容:Thecharacteris:a(2)%d%d按照十进制形式输出整型数据。按照十进制形式输出整型数据。例如:例如:printf(Thenumberis:%dn,18);屏幕上看到输出的结果为:屏幕上看到输出的结果为:Thenumb
8、eris:18(3)o o按照八进制格式输出整型数据。以该按照八进制格式输出整型数据。以该格式输出数据时,按照八进制的形式输出对格式输出数据时,按照八进制的形式输出对应数据项的机器码。应数据项的机器码。(4)%x%x按按照照十十六六进进制制格格式式输输出出整整型型数数据据。以以该该格格式式输输出出数数据据时时,按按照照十十六六进进制制的的形形式式输输出对应数据项的机器码。出对应数据项的机器码。(5)%u%u按照无符号形式输出整型数据,把对应按照无符号形式输出整型数据,把对应内存中的数据以无符号数的形式输出。内存中的数据以无符号数的形式输出。以上的以上的5种格式字符既可用于输出字符型数种格式字符
9、既可用于输出字符型数据,也可用于输出整型数据。看下列的程序及据,也可用于输出整型数据。看下列的程序及运行结果。运行结果。例例5.4main()inta=65;charc=A;printf(%c,%dn,a,a);printf(%c,%dn,c,c);运行结果:运行结果:A,65A,65以上的以上的4种整型数据的格式字符前加上类种整型数据的格式字符前加上类型修饰符后可用于输出长整型数据,有型修饰符后可用于输出长整型数据,有%ld,%lo,%lx,%lu4种格式。看下列的程序及运种格式。看下列的程序及运行结果。行结果。例例5.5main()longinta=8,b=-1;printf(%ld,%l
10、o,%lx,%lun,a,a,a,a);printf(%ld,%lo,%lx,%lun,b,b,b,b);程序运行结果为:程序运行结果为:8,10,8,8-1,37777777777,ffffffff,4294967295若将上述程序改为:若将上述程序改为:main()longinta=8,b=-1;printf(%d,%o,%x,%un,a,a,a,a);printf(%d,%o,%x,%un,b,b,b,b);将不能正确的输出结果,因为将不能正确的输出结果,因为a和和b是长整型是长整型变量,不能以整型格式输出。变量,不能以整型格式输出。以上以上5种格式均有含有域宽修饰的扩展种格式均有含有域
11、宽修饰的扩展形式。如:形式。如:%mc、%md、%mo、%mx、%mu、%mld、%mlo、%mlx、%mlu等,等,其中其中m是一个直接形式的整型常量,是域宽修是一个直接形式的整型常量,是域宽修饰符,表示输出数据应当占用的列宽。如果饰符,表示输出数据应当占用的列宽。如果数据实际输出所占列宽小于数据实际输出所占列宽小于m,m表示左端补表示左端补足空格,足空格,m前有负号时右端补足空格,如果数前有负号时右端补足空格,如果数据实际输出所占列宽大于据实际输出所占列宽大于m,m不起作用。不起作用。例例5.6main()inta=-1;printf(%5d,%-10o,%8xn,a,a,a);程序运行后
12、,输出如下结果:程序运行后,输出如下结果:-1,177777,ffff(6)%s%s输出字符串。输出字符串。%m.ns格式为其扩展格式为其扩展格式,格式,+,m的含义和上述相同。的含义和上述相同。n也是一也是一个直接形式的常量,表示取字符串中的左起个直接形式的常量,表示取字符串中的左起n个字符,个字符,n修饰符必须和修饰符必须和“.”结合使用才是结合使用才是有意义的。字符串结束标志有意义的。字符串结束标志“0”是是%s格式格式判断输出是否结束的标志。判断输出是否结束的标志。例如:例如:printf(China%10s,%-8.3s,China,China);其输出结果为:其输出结果为:Chin
13、aChina,Chi(7)%f例例5.7main()floatm=123.4567891;printf(%f,%-8.3fn,m,m);其输出结果为:其输出结果为:123.456789,123.457(8)%e%e以以指指数数形形式式输输出出浮浮点点型型数数据据,默默认认格格式式下下尾尾数数部部分分输输出出1位位整整数数和和5位位小小数数,阶阶码码部部分分输输出出符符号号及及2位位或或者者3位位(阶阶码码100时时)阶阶码码。%m.ne格格式式为为其其扩扩展展格格式式,n表表示示取取尾尾数数部部分分n 1位位小小数数,m表表示示该该浮浮点点数数输输出出所所占占的的列列宽宽,表示表示m大于实际列
14、宽时补空格的方式。大于实际列宽时补空格的方式。例如,以例如,以%e格式输出例格式输出例5.7中的变量中的变量m:printf(%e,%-12.3e,m,m*1E100);其输出结果为:其输出结果为:1.23457e+02,1.23e+102(9)%g按按照照输输出出时时所所占占的的列列数数,自自动动选选取取%f或或%e格格式式输输出出符符点点型型数据,选取的依据是输出所占列数的多少。数据,选取的依据是输出所占列数的多少。2字符格式输出函数字符格式输出函数putchar()putchar()函函数数的的功功能能是是向向屏屏幕幕输输出出一一个个字字符。符。该函数的一般格式为:该函数的一般格式为:p
15、utchar(参数参数)一一般般来来说说该该函函数数是是作作为为独独立立的的函函数数调调用用语语句句来来实实现现对对其其的的调调用用。putchar()只只有有一一个个参参数数,此此参参数数可可以以是是常常量量,可可以以是是变变量量,也也可可以以是是任任意意整整型型表表达达式式,参参数数的的值值代代表表的的是是某字符对应的某字符对应的ASCII码值。码值。调调用用该该函函数数之之前前必必须须加加上上函函数数的的声声明明部部分分:#includestdio.h例例5.11#includestdio.hmain()charc=A;putchar(c);/*语句语句*/putchar(t);/*输出
16、转义字符输出转义字符t的功能,转到的功能,转到下一个输出区下一个输出区*/putchar(A);/*语句语句*/putchar(t);putchar(65);/*语句语句*/putchar(n);5.2.3 常用的输入函数常用的输入函数1多种类型数据输入函数多种类型数据输入函数scanf()scanf()函数的功能是从标准的输入设备读函数的功能是从标准的输入设备读取各种类型的数据到相应的变量中。取各种类型的数据到相应的变量中。首首先先介介绍绍一一个个取取地地址址运运算算符符&,该该运运算算符符是是单单目目运运算算符符,运运算算对对象象一一般般来来讲讲是是变变量量,其其作作用用是是得得到到参参与
17、与“&”运运算算的的运运算算对对象象的的地地址址,如如“&a”则得到变量则得到变量a的地址。的地址。该函数的一般格式为:该函数的一般格式为:scanf(格式控制格式控制,地址表列地址表列);第一部分为格式控制部分,其构成和第一部分为格式控制部分,其构成和printf()一样,一样,scanf()函数可以使用的格式字符可参见表函数可以使用的格式字符可参见表5-3,普通字符是需要原样输入的字符,格式字,普通字符是需要原样输入的字符,格式字符和地址表列中对应的变量具备一一对应关系,符和地址表列中对应的变量具备一一对应关系,格式字符控制的不是地址,而是该地址对应的格式字符控制的不是地址,而是该地址对应
18、的变量的类型;第二部分为对应变量的内存地址,变量的类型;第二部分为对应变量的内存地址,是一个地址表列。是一个地址表列。例如,我们要把输入的例如,我们要把输入的3个整数存储到个整数存储到a、b、c这这3个变量中,假设个变量中,假设a、b、c为整型变量,具为整型变量,具体用法为:体用法为:scanf(%d%d%d,&a,&b,&c);使用使用scanf()应注意以下问题。应注意以下问题。(1)当格式控制部分中相邻的两个格式字符不含有)当格式控制部分中相邻的两个格式字符不含有普通字符时,在输入的时候可以采取普通字符时,在输入的时候可以采取scanf()函数默函数默认的分隔方式。认的分隔方式。(2)当
19、格式控制部分中相邻的两个格式字符包含)当格式控制部分中相邻的两个格式字符包含%c格式时,输入时不能以空格、格式时,输入时不能以空格、Tab键或回车键加以区键或回车键加以区分,因为空格、分,因为空格、Tab键或回车键本身也是字符,只能键或回车键本身也是字符,只能严格按照格式控制规定按数据类型加以区分某项数严格按照格式控制规定按数据类型加以区分某项数据是否输入结束。据是否输入结束。(3)在)在scanf函数中允许使用域宽函数中允许使用域宽m来控制输入,来控制输入,m表示的是输入数据所占的列宽,实际输入不足表示的是输入数据所占的列宽,实际输入不足m位时,位时,可在输入的数据左侧或右侧加空格。可在输入
20、的数据左侧或右侧加空格。(4)修饰符)修饰符*。*的含义是的含义是“跳过跳过”,表示在地址,表示在地址表列中没有对应的控制项,但在输入时必须输入表列中没有对应的控制项,但在输入时必须输入数据。数据。(5)程序中如果有多个)程序中如果有多个scanf(),系统会将多个,系统会将多个scanf()结合为一个函数来处理,所以读者在使用时要多结合为一个函数来处理,所以读者在使用时要多加练习,灵活掌握。加练习,灵活掌握。(6)格式控制后最好不要加字符)格式控制后最好不要加字符n,否则在输,否则在输入时容易引起不便。入时容易引起不便。(7)通常为了使程序在输入数据时易于操作,可)通常为了使程序在输入数据时
21、易于操作,可使用下列的方式来提高程序的可读性。使用下列的方式来提高程序的可读性。例例5.14main()inta,b;floatx,y;printf(inputa(int),b(int)x(float)y(float):n);scanf(%d,%d”,&a,&b);scanf(%f%f,&x,&y);在在使使用用scanf()函函数数时时应应首首先先在在输输入入之之前前书书写写一一个个printf()函函数数,给给出出应应输输入入的的数数据据个个数数、类类型型及及分分隔隔方方式式的的提提示示信信息息。读读者者可可以以使使用用易易于于理理解解的的提提示示,增加程序的可读性。增加程序的可读性。表5
22、-3scanf()函数使用的格式字符格式字符说明用于输入十进制数用于输入八进制数用于输入十六进制数用于输入单个字符用于输入字符串(非空格开始,空格结束,字符串以0结尾)用于输入实数(小数或指数均可)与f相同(可与f互换)修饰符m域宽控制*跳过l用于长整型数(%ld、%lo、%lx)或double型实数(%lf、%le)2字符读取函数字符读取函数getchar()字字符符读读取取函函数数为为无无参参函函数数,其其功功能能是是从从键键盘盘读入一个字符。读入一个字符。调调用用该该函函数数之之前前必必须须加加上上对对于于函函数数的的声声明明部部分:分:#includestdio.h。例例5.15#in
23、cludestdio.hmain()charc;c=getchar();putchar(c);putchar(getchar();5.2.4 数学函数数学函数C标准库函数提供了大量的数学函数以供标准库函数提供了大量的数学函数以供使用,数学函数均为有参有返回值函数,使用使用,数学函数均为有参有返回值函数,使用时应注意函数的用法和使用环境。时应注意函数的用法和使用环境。1开方函数开方函数开方函数的一般格式为:开方函数的一般格式为:doublesqrt(doublex)其其作作用用是是求求参参数数x的的开开方方值值,参参数数为为双双精精度度浮浮点点型型数数据据,返返回回值值为为双双精精度度浮浮点点型
24、型数数据据。如如对对4开方可编写如下程序。开方可编写如下程序。例例5.16#includemath.hmain()floata;a=sqrt(4.0);printf(%fn,a);5.3 5.3 顺序结构程序设计顺序结构程序设计例例5.18 已已知知三三角角形形的的三三边边长长为为4,6,7,求求三三角形的面积。角形的面积。分分析析:该该例例题题已已知知三三角角形形的的三三边边长长,我我们们可可以以通过多种方法求得其面积。通过多种方法求得其面积。算法三:算法三:上例可以做如下处理,定义三个边长分别上例可以做如下处理,定义三个边长分别为为a、b、c三个变量,利用三个变量,利用scanf()函数从
25、键盘函数从键盘读取三边的具体数值,从而扩展程序的通用性。读取三边的具体数值,从而扩展程序的通用性。可得到如图可得到如图5.4所示的流程图。所示的流程图。图5.4例5.18算法三根据算法三编写程序:根据算法三编写程序:#includemath.hmain()floata,b,c,t,s;pritnf(inputabc:n);scanf(%f%f%f,&a,&b,&c);t=(a+b+c)/2;s=sqrt(t*(t-a)*(t-b)*(t-c);printf(%.3fn,s);例例5.19将将任任意意小小写写字字母母,转转换换为为对对应应的的大大写写字字母并输出。母并输出。小小写写或或大大写写字字母母均均为为字字符符,字字符符参参与与运运算算时时实实际际是是将将字字符符转转换换为为整整型型数数据据运运算算。根根据据ASCII表表规规律律可可知知对对应应大大小小写写字字母母ASCII值值相相差差32。可可得得到到如图如图5.5所示的流程图。所示的流程图。程序如下:程序如下:#includestdio.h#includestdio.hmain()main()charc;intc;c=getchar();c=getchar();c=c-32;c=c-32;putchar(c);putchar(c);
限制150内