C语言程序设计ppt课件.ppt

上传人:牧羊曲112 文档编号:2075951 上传时间:2023-01-07 格式:PPT 页数:211 大小:3.14MB
返回 下载 相关 举报
C语言程序设计ppt课件.ppt_第1页
第1页 / 共211页
C语言程序设计ppt课件.ppt_第2页
第2页 / 共211页
C语言程序设计ppt课件.ppt_第3页
第3页 / 共211页
C语言程序设计ppt课件.ppt_第4页
第4页 / 共211页
C语言程序设计ppt课件.ppt_第5页
第5页 / 共211页
点击查看更多>>
资源描述

《C语言程序设计ppt课件.ppt》由会员分享,可在线阅读,更多相关《C语言程序设计ppt课件.ppt(211页珍藏版)》请在三一办公上搜索。

1、,C语言程序设计,项目导读项目目标项目任务,目 录,项目1 C语言概述,1,项目2 数据类型、运算符与表达式,2,项目3 顺序结构程序设计,3,项目4 选择结构程序设计,4,项目5 循环结构程序设计,5,项目6 数组与字符串,5,项目导读项目目标项目任务,本项目主要对C语言的一些基础知识及其字符集和词汇进行介绍,使读者在学习C语言之前对其有个全面的认识。,项目导读,安装、配置TC2.0或VC+6.0,成功启动TC2.0或VC+6.0。能编写一个简单的C程序的源文件,并编译该源文件,链接目标文件得到可执行文件。,项目目标,任务1.1 C语言的发展与特点,C语言是1973年由美国的Dennis R

2、itchie设计发明的,并首次在配备了UNIX操作系统的DEC PDP-11计算机上实现。它由早期的编程语言BCPL(Basic Combined Programming Language)发展演变而来。,C语言的特点1、C语言是高级语言 2、C语言是结构化语言 3、C语言功能齐全 4、C语言适用范围广5、语言简洁、紧凑,使用方便、灵活。32个关键字、9种控制语句,程序形式自由6、运算符丰富。34种运算符 7、数据类型丰富,具有现代语言的各种数据结构。8、具有结构化的控制语句,是完全模块化和结构化的语言。9、语法限制不太严格,程序设计自由度大。10、允许直接访问物理地址,能进行位操作,能实现汇

3、编语言的大部分功能,可直接对硬件进行操作。兼有高级和低级语言的特点。11、目标代码质量高,程序执行效率高。只比汇编程序生成的目标代码效率低10-20%。12、程序可移植性好(与汇编语言比)。基本上不做修改就能用于各种型号的计算机和各种操作系统。,任务1.2 认识C语言,本任务通过几个简单的C程序,介绍C语言的基本组成和格式。,案例1.1main()printf(“This is a c program.n”);本程序的功能是输入下列一行信息:This is a c program.,任务1.2 认识C语言,程序说明:main函数是“主函数”,每一个C程序必须有一个main函数。函数体由大括弧

4、括起来。本例中,主函数内只有一个输出语句,printf(“This is a c program.n”);是C语言的输出函数(具体详见项目3)。双引号内的字符串将照原样输出。“n”是换行符,即在输出“This is a c program.”后换行。分号是C语句的基本构成,每一个C语句后都应再加上分号,分号是语句的结束标志。,任务1.2 认识C语言,本任务通过几个简单的C程序,介绍C语言的基本组成和格式。,案例1.2main()/*求两数之和*/int a,b,sum;/*本行开始的以下4条为C语句*/a=123;b=456;sum=a+b;printf(“sum is%dn”,sum);本程

5、序的功能是求两数之和。,任务1.2 认识C语言,程序说明:/*/是注释语句,此信息对编译和运行不起作用。(2)程序第二行的含义是定义a、b和sum为整体变量。(3)“sum=a+b;”的含义是把变量a和b的和赋给变量sum。(4)该程序的输出结果是:sum is 579。,任务1.2 认识C语言,案例1.3 main()/*求一个数的绝对值*/int x,y;scanf(“%d”,本程序的功能是求z的绝对值。,任务1.2 认识C语言,程序说明:(1)本程序包括两个函数:主函数main和被调用函数abs。(2)函数abs的作用是将z的绝对值返回给主调函数main(返回值是通过函数名abs带回到m

6、ain函数的调用处的)。(3)程序中的scanf函数的作用是从键盘上输入x的值。&x中的“&”的含义是“取地址”,此scanf函数的作用是将数值输入到变量x的地址所标志的单元中去,也就是输入给变量x。关于scanf函数详见项目3。(4)main函数中的第四行为调用abs函数,在调用时将实际参数x传给abs函数中的形式参数z,然后输入y的值。(5)printf函数中双引号内的abs=%d,在输出时,其中的%d将由y值取代,“abs=”原样输出。该程序的运行结果是:假定从键盘上输入x的值为:-6 则y=6(6)本例用到了函数调用、实际参数和形式参数等概念,只是做了简单的解释,读者若对此不大理解,可

7、先不予深究,在学到函数项目后的相关知识后,问题自会迎刃而解。这里介绍此案例的目的,是想让读者对C语言的组成和形式有一个初步了解。,任务1.2 认识C语言,通过以上三个例子,我们可以得到以下几点:1、C程序是由函数构成的。一个C源程序至少包含一个main函数,也可以包含一个main函数和若干个其它函数。因此,函数是C语言的基本单位。被调用函数可以是系统提供的库函数(例如printf函数和scanf函数),也可以是用户根据需要自编译的用户函数(例如案例1.3中的abs函数)。2、函数及其结构。一个函数由两部分组成:即函数首部和函数体。函数首部包括函数类型、函数名、函数参数(形参)、形参类型;函数体

8、一般包括说明部分和执行部分。函数结构如下:函数类型 函数名(形参表)说明部分:函数体 执行部分;函数体以左花括号“”开始,以右花括号“”结束,其间可以有说明部分和执行部分。在某些情况下,甚至可以既无说明部分,也无执行部分。如:dump()它是一个空函数,表示什么也不做,但它是合法的,任务1.2 认识C语言,3、一个C程序中,不论main函数在整个程序中的位置如何(main函数可以放在程序最前头,也可以放在程序最后头,或在一些函数之前,或在另一些函数之后),但程序执行时,总是从main函数开始执行。4、C程序书写格式自由,一行中可以书写多个语句,一个语句也可以书写在连续的多行上。当一行写不下时,

9、用连字符“-”连接,并且每条语句的后面以分号“;”作为结束标记。5、C语言本身没有输入输出语句。C语言的函数库提供了标准输入输出函数。6、可以用/*对C程序中的任何一部分做注释,以增加程序的可读性。,任务1.3 C程序的执行过程,C语言程序是一种编译型的中级语言。用C语言编写的源程序必须先进行编译和连接,生成可执行的程序之后才能执行。执行一个C语言程序一般经过如下几个步骤。1、编辑 2、编译 3、连接 4、运行 C语言程序的开发是一个由编辑开始,经过编译、连接和运行,程序如果有错误,又回到编辑的反复循环过程,如图所示。,项目2 数据类型、运算符与表达式,1,项目导读项目目标项目任务,C语言中,

10、为解决具体问题,需要采用多种类型的数据;本项目将主要介绍C语言的数据类型、常用运算符和表达式。,项目导读,学会声明整型变量,为声明的变量赋值,交换变量的值,输出变量的值。学会声明浮点型变量,为声明的浮点型变量赋值,对浮点型变量值进行加法运算,并将运算结果存放到浮点型变量中,输出浮点型变量的值。学会声明字符型变量,为声明的字符型变量赋值,按%d或%c格式输出变量的值。,项目目标,任务2.1 常量、变量和标示符,2.1.1 标识符 在计算机高级语言中,用来对变量、符号常量名、函数、数组、类型等命名的有效字符序列统称为标识符(identifier)。简单地说,标识符就是一个对象的名字。C语言规定标识

11、符只能由字母、数字和下划线组成,且第1个字符必须为字母或下划线。下面列出的是合法的标识符,可以作为变量名:Sum,average,_total,Class,day,month,Student_name,lotus_1_2_3,BASIC,li_ling.下面是不合法的标识符和变量名:M.D.John,¥123,#33,3D64,ab,注意:编译系统将大写字母和小写字母认为是两个不同的字符。因此,sum和SUM是两个不同的变量名。同样,Class和class也是两个不同的变量名。通常,变量名用小写字母表示,习惯用对应的英文字母缩写形式,做到见名知意,与人们日常习惯一致,以增加可读性。,任务2.1

12、 常量、变量和标示符,2.1.2 常量和变量1、常量 在程序运行过程中,其值不能被改变的量称为常量。如案例2.1程序中的5,9,32和案例2.2程序中的1000,0.0036,0.0225,0.0198都是常量。数值常量就是数学中的常数。常用的常量有以下几类:整型常量。如1000,12345,0,-345等都是整型常量。实型常量。有两种表现形式:十进制小数形式,由数字和小数点组成。如122.456,0.345,-55.79,0.0,12.0等。指数形式,如12.34e3(代表12.34103),-345.87e-25(代表-345.8710-25),0.145E25(代表0.14510-25)

13、等。由于在计算机输入或输出时,无法表示上标或下标,故规定以字母e或E代表以10为底的指数。但应注意:e或E之前必须有数字,且e或E后面必须为整数。如不能写成e4,12e2.5。,任务2.1 常量、变量和标示符,字符常量。有两种形式的字符常量:普通字符,用单撇号括起来的一个字符,如a,Z,3,?,#。注意:单撇号只是界限符,字符常量只能是一个字符,不包括单撇号。a和A是不同的字符常量。字符常量存储在计算机存储单元中时,并不是存储字符(如a,z,#等)本身,而是以其代码(一般采用ASCII代码)存储的,例如字符A的ASCII话代码是97,因此,在存储单元中存放的是97(以二进制形式存放)。ASCI

14、I字符与代码对照表见附录。转义字符,除了以上形式的字符常量外,C还允许用一种特殊形式的字符常量,就是以字符开头的 字符序列。例如,前面已经遇到过的,在printf函数中的n它代表一个“换行”符。常用的以“”开头的特殊字符见表 2.1,任务2.1 常量、变量和标示符,表2.1,任务2.1 常量、变量和标示符,字符串常量。如“boy”,“123”等,用双撇号把若干个字符括起来,字符串常量是双撇号中的全部字符(但不包括双撇号本身)。注意不能错写成CHINA,boy,123。单撇号内只能包含一个字符,双撇号内可以包含一个字符串。符号常量。用#define指令,指定用一个符号名称代表一个常量。如:#de

15、fine PI 3.1416 注意行末没有分号 经过以上的指定后,本文件中从此行开始所有的PI都代表3.1416。在对程序进行编译前,预处理器先对PI进行处理,把所有的PI全部置换为3.1416。这种用一个符号名代表一个常量的,称为符号常量。在预编译后,符号常量全部变成字面常量(3.14159)。使用符号常量有以下好处。含义清楚。在需要改变程序中多处用到的同一个常量时,能做到“一改全改”。,任务2.1 常量、变量和标示符,2、变量 变量代表一个有名字的、具有特定属性的存储单元。它用来存放数据,也就是存放变量的值。在程序运行期间,变量的值是可以改变的。变量必须先定义,后使用。在定义时指定该变量的

16、名字和类型。一个变量应该有一个名字,以便被引用。请注意区分变量名和变量值这两个不同的概念,图2.1中a是变量名,3是变量a的值,即存放在变量a的内存单元中的数据。变量名的实质是以一个名字代表的一个存储地址。在对程序编译连接时由编译系统给每一个变量名分配对应的内存地址。从变量中取值,实际上是通过变量名找到相应的内存地址,从该储存单元中读取数据。,图2.1,任务2.1 常量、变量和标示符,3、常变量 如 const int a=3表示a被定义为一个整型变量,指定其值为3,而且在变量存在期间其值不能改变。常变量与常量的异同是:常变量具有变量的基本属性,有类型,占存储单元,只是不允许改变其值。可以说,

17、常变量是有名字的不变量,而常量是没有名字的不变量,有名字就便于在程序中被引用。,任务2.2 数据类型,在定义变量时需要指定变量的类型。C语言要求在定义所有的变量时都要指定变量的类型。常量也是区分类型的。所谓类型,就是对数据分配存储单元的安排,包括存储单元的长度(占多少字节)以及数据的存储形式。不同的类型分配不同的长度和存储形式。C语言允许使用的类型见图2.2。,图2.2,任务2.2 数据类型,2.2.1 整型数据 1、整型数据的分类 基本整型(int型)编译系统为int型数据分配2个字节或4个字节(有具体的C编译系统自行决定)。如TurboC 2.0为每一个整型数据分配2个字节(16个二进位)

18、,而 Visual C+为每一个整型数据分配4个字节(32位)。在存储单元中的存储方式是:用整数的补码(complement)形式存放。,5的补码,-5的补码,任务2.2 数据类型,短整型(short int)类型名为short int或short。如用Visual C+5.0,编译系统分配给int数据4个字节,短整型2个字节。存储方式与int型相同。一个短整型变量的值的范围是3276832767。长整型(long int)类型名为long int 或long。一个long int 型变量的值的范围是231(2311),即 21474836482147483647(Visual C+5.0),

19、编译系统分配给long 数据4个字节。双长整型(long long int)或long long,一般分配8个字节。说明:C标准没有具体规定各种类型数据所占用存储单元的长度,这是由各编译系统自行决定的。C标准只要求long型数据长度不短于int型,short型不长于int型。即 Sizeof(short)sizeof(int)sizeof(long long)Sizeof是测量类型或变量长度的运算符。,任务2.2 数据类型,2、整型变量的符号属性 以上介绍的几种类型,变量值在存储单元中都是以补码形式存储的,存储单元中的第1个二进位制代表符号。整型变量的值的范围包括负数到正数(见表2.2)。,表

20、2.2 整型数据常见的存储空间和值的范围,任务2.2 数据类型,在实际应用中,有的数据的范围常常只有正值(如学号、年龄、库存量、存款额等)。为了充分利用变量的值的范围,可以将变量定义为“无符号”类型。可以在类型符号前面加上修饰符unsigned,表示指定该变量是“无符号整数”类型。如果加上修饰符signed,则是“有符号”类型。因此,在以上4种整型数据的基础上可以扩展为以下8种整型数据。即 有符号基本整型 signed int;无符号基本整型 unsigned int;有符号短整型 signed short int;无符号短整型 unsigned short int;有符号长整型 signed

21、 long int;无符号长整型 unsigned long int;有符号双长整型 signed long long int;无符号双长整型 unsigned long long int;以上方括号表示其中的内容是可选的,既可以有,也可以没有。如果既未指定为signed也未指定为unsigned的,默认为“有符号类型”。如signed int a和int a等价。,任务2.2 数据类型,2.2.2 字符型数据 1.字符与字符代码 字符与字符代码并不是任意写一个字符,程序都能识别的。例如圆周率在程序中是不能识别的,只能使用系统的字符集中的字符,目前大多数系统采用ASCII字符集。各种字符集(包

22、括ASCII字符集)的基本集都包括了127个字符。其中包括:字母:大写英文字母AZ,小写英文字母az。数字:09。专门符号:29个:!”#&()*+,:;=?-|空格符:空格、水平制表符(tab)、换行、换页(form feed)。不能显示的字符:空(null)字符(以0表示)、警告(以a表示)、退格(以b表示)、回车(以r表示)等。,任务2.2 数据类型,2、字符变量 字符变量使用类型符char定义字符变量。Char是英文character(字符)的缩写,见名即可知意。如:char c=;?定义c为字符型变量并使初值为字符?。?的ASCII代码是63,系统把整数63赋给变量c。c是字符变量,

23、实质上是一个字节的整形变量,由于它常用来存放字符。所以称为字符变量。可以把0127之间的整数赋给一个字符变量。在输出字符变量的值时,可以选择以十进制整数形式输出,或以字符形式输出。如:printf(“%d%cn”,c,c);输出结果是:63?用“%d”格式输出十进制整数63,用%c格式用字符形式输出字符?。,任务2.2 数据类型,2.2.3 浮点型数据 浮点型数据是用来表示具有小数点的实数的。浮点数类型包括float(单精度浮点型)、double(双精度浮点型)、long double(长双精度浮点型)。(1)float型(单精度浮点型)。编译系统为每一个float型变量分配4个字节,数值以规

24、范化的二进制数值形式存放在存储单元中。在存储时,系统将实型数据分成小数部分和指数部分两个部分,分别存放。小数部分的小数点前面的数为0.如3.14159在内存中的存放形式可以用图2.9表示。,图2.9,任务2.2 数据类型,double型(双精度浮点型)。为了扩大能表示的数值范围,用8个字节存储一个double型数据,可以得到15位有效数字,数值范围为1.710-308 1.710308。在C语言中进行浮点数的算术运算时,将float型数据都自动转换为double型,然后进行运算。long double型(长双精度)型,不同的编译系统对long double型的处理方法不同,Turbo C对lo

25、ng double型分配16个字节。而Visual C+6.0则对long double型和double型一样处理,分配8个字节。请读者在使用不同的编译系统时注意其差别。表2.4列出实型数据的有关情况,表2.4,任务2.3 运算符和表达式,2.3.1基本的算术运算符,表2.5 最常用的算术运算符,任务2.3 运算符和表达式,2.3.2 自增、自减运算符 作用是使变量的值加1或减1,例如:+i,-i(在使用i之前,先使i的值加(减)1)i+,i-(在使用i之后,使i的值加(减)1)粗略地看,+i和i+的作用相当于i=i+1。但+i和i+的不同之处在于+i是先执行i=i+1后,再使用i的值;而i+

26、是先使用i的值后,再执行i=i+1。如果i的原值等于3,请分析下面的赋值语句:j=+i;(i的值先变成4,再赋给j,j的值为4)j=i+;(先将i的值3赋给j,j的值为3,然后i变为4)又例如:i=3;printf(“%d”,i+);输出4。若改为 Printf(“%dn”,i+);则输出3。,任务2.3 运算符和表达式,2.3.3 算术表达式和运算符的优先级与结合性 用算术运算符和括号将运算对象(也称操作数)连接起来的、符合C语法规则的式子,称为C算术表达式。运算对象包括常量、变量、函数等。例如,下面是一个合法的C算术表达式:a*bc1.5+a C语言除了规定了运算符的优先级外,还规定了运算

27、符的结合性。在表达式求值时,先按运算符的优先级别顺序执行,例如先乘除后加减。如表达式ab*c,b的左侧为减号,右侧为乘号,而乘号优先级高于减号,因此,相当于a(b*c)。如果在一个运算对象两侧的运算符的优先级别相同,如ab+c,则按规定的“结合方向”处理。C语言规定了各种运算符的结合方向(结合性),算术运算符的结合方向都是“自左至右”,及先左后右,因此b先与减号结合,执行ab的运算,然后再执行加c的运算。“自左至右的结合方向”又称“左结合性”,即运算对象先于左面的运算符结合。以后可以看到有些运算符的结合方向为“自右至左”,即右结合性(例如,赋值运算符,若有a=b=c,按从右到左顺序,先把变量c

28、的值赋给变量b,然后把变量b的值赋给变量a)。,任务2.3 运算符和表达式,2.3.4 不同类型数据间的混合运算 在程序中经常会遇到不同类型的数据进行运算,如5*3.5。如果一个运算符的两侧的数据类型不同,则先自动进行类型转换,使二者具有同一种类型,然后进行运算。因此整型、实型、字符型数据间可以进行混合运算。规律为:(1)+、*、运算的两个数中有一个数为float或double型,结果是double型,因为系统将所有float型数据都先转换为double型,然后进行运算。(2)如果int型与float或double型数据进行运算,先把int型和float型数据转换为double型,然后再进行运

29、算,结果是double型。(3)字符(char)型数据与整型数据进行运算,就是把字符的ASCII代码与整型数据进行运算。如:12+A,由于字符A的ASCII代码是65,相当于12+65,等于77。字符数据可以直接与整型数据进行运算。如果字符型数据与实型数据进行运算,则将字符的ASCII代码转换为double型数据,然后进行运算。,任务2.3 运算符和表达式,示例2.1 编程:给定一个大写字母,要求用小写字母输出。编写程序:#includestdio.h int main()char c1,c2;c1=A 将字符A的ASCII代码放到c1变量中 c2=c1+32;得到字符a的ASCII代码,放在

30、c2变量中 printf(“%cn”,c2);输出c2的值,是一个字符 printf(“%dn”,c2);输出c2的值,是字符a的ASCII代码 reurn 0 运行结果:a 97,任务2.3 运算符和表达式,2.3.6 C运算符 除了算术运算符外,C还提供其他运算符,共有以下几类:关系运算符(=!=)逻辑运算符(!&|)位运算符(|&)赋值运算符(=及其扩展赋值运算符)条件运算符(?:)逗号运算符(,)指针运算符(*和&)求字节数运算符(sizeof)强制类型转换运算符(类型)成员运算符()下标运算符()其他(如函数调用运算符(),任务2.3 运算符和表达式,2.3.5 强制类型转换运算符

31、可以利用强制类型转换运算符将一个表达式转换成所需类型。例如:(double)a(将a转换成double类型)(int)(x+y)(将x+y的值转换成int型)(float)(5%3)(将5%3的值转换成float型)其一般形式为(类型名)(表达式)注意,表达式应该用括号括起来。如果写成(int)x+y 则只将x转换成整型,然后与y相加。需要说明的是,在强制类型转换时,得到一个所需类型的中间数据,而原来变量的类型未发生变化。例如:a=(int)x 如果已定义x为float型变量,a为整型变量,进行强制类型运算(int)x后得到一个int类型的临时值,它的值等于x的整数部分,把它赋给a,注意x的值

32、和类型都未变化,仍为float型。该临时值在赋值后就不存在了。,任务2.4 赋值语句,在C程序中,最常用的语句是:赋值语句和输入输出语句。其中最基本的是赋值语句。程序中的计算功能大部分是由赋值语句实现的,几乎每一个有实用价值的程序都包括赋值语句。有的程序中的大部分语句都是赋值语句。先分析一个例子。给出三角形的三边长,求三角形面积。解题思路:假设给定的三个边符合构成三角形的条件:任意两边之和大于第三边。解此题的关键是要找到求三角形面积的公式。从数学知识已知求三角形面积的公式为:其中s=(a+b+c)2。,任务2.4 赋值语句,编写程序:根据上面的公式编写程序如下:#include stdio.h

33、#include math.hint main()double a,b,c,s,area;定义各变量,均为double型a=2.67;对边长a赋值b=4.43;对边长b赋值c=5.21;对边长c赋值s=(a+b+c)/2;计算sarea=sqrt(s*()*()*();计算areaprintf(“a=%ftb=%ft%fn”,a,b,c);输出三边a,b,c 的值printf(“area=%fn”,area);输出面积area的值return 0;运行结果:a=2.670000 b=4.430000 5.210000 area=8.903431,任务2.4 赋值语句,2.4.1 赋值运算符 赋

34、值符号=就是赋值运算符,它的作用是将一个数据赋给一个变量。如a=3的作用是执行一次赋值操作(或称赋值运算)。把常量3赋给变量a。也可以将一个表达式的值赋给一个变量。2.4.2 复合的赋值运算符 在赋值符=之前加上其它运算符,可以构成复合的运算符。如果在“=”前加一个“+”运算符就成了复合运算符“+=”。例如可以有以下的复合赋值运算:a+=3 等价于 a=a+3 x*=y+8 等价于 x=x*(y+8)x%=3 等价于 x=x%3 以“a+=3”为例来说明,它相当于使a进行一次自加3的操作。即:先使a加3,再赋给a。同样,“x*=y+8”的作用是使x乘以(y+8),再赋给x。,任务2.4 赋值语

35、句,2.4.3 赋值表达式 由赋值运算符将一个变量和一个表达式连接起来的式子称为“赋值表达式”。它的一般形式为变量 赋值运算符 表达式 赋值表达式的作用是将一个表达式的值赋给一个变量,因此赋值表达式具有计算和赋值的双重功能。如a=3*5是一个赋值表达式。对赋值表达式求解的过程是:先求赋值运算符右侧的“表达式”的值,然后赋给赋值运算符左侧的变量。既然是一个表达式,就应该有一个值。赋值表达式a=3*5的值为15,对表达式求解后,变量a的值和表达式的值都是15。2.4.4 赋值过程中的类型转换 如果赋值运算符两侧的类型一致,则直接进行赋值。如:i=234;设已定义i为整型变量 此时直接将整数234存

36、入变量i的存储单元中。如果赋值运算符两侧的类型不一致,但都是算术类型时,在赋值时要进行类型转换。类型转换是由系统自动进行的。,任务2.4 赋值语句,2.4.5 赋值表达式和赋值语句 在C程序中,赋值语句是用的最多的语句。在任务1的C语句分类中,并没有看到赋值语句,实际上,C语言的赋值语句属于表达式语句,由一个赋值表达式加一个分号组成。注意:要区分赋值表达式和赋值语句。赋值表达式的末尾没有分号,而赋值语句的末尾必须有分号。在一个表达式中可以包含一个或多个赋值表达式,但绝不能包含赋值语句。2.4.6 变量赋初值 可以用赋值语句对变量赋值,也可以在定义变量时对变量赋以初值。这样可以使程序简练。如:i

37、nt a=3;定义a为整型变量,初值为3 float f=2.56;定义f为浮点型变量初值为2.56 char c=a 定义c为字符变量,初值为a,项目3 顺序结构程序设计,1,项目导读项目目标项目任务,在项目2中介绍了C程序中用到的一些基本要素,如常量、变量、运算符、表达式等。本项目将介绍编写简单的C程序所必需的一些内容。,项目导读,使用scanf函数从键盘为变量输入值。使用printf函数输出数据。能编写简单的C程序的源文件,并运行程序。,项目目标,任务3.1 顺序程序设计举例,示例3.1 用温度计测量出用华氏法表示的温度(如69F),今要求把它转换为以摄氏法表示的温度(如20)。解题思路

38、:这个问题的算法很简单,关键在于找到二者之间的转换公式。根据物理学知识,知道以下转换公式:c=59(f-32)其中f代表华氏温度,c代表摄氏温度。据此可以用N-S图表示算法,见图3.1。,图3.1,算法由3个步骤组成,这是一个简单的顺序结构。编写程序:有了N-S图,很容易用C语言表示,写出求此问题的C程序。,任务3.1 顺序程序设计举例,#includestdioh int main()float f,c;定义f和c为单精度浮点型变量 f=63.0;定义f的值 c=(59)*(f-32);利用公式计算c的值 printf(“f=%nc=%n”,f,c);输出c的值 return 0;运行结果:

39、f=63.000000 c=16.777778,任务3.1 顺序程序设计举例,示例3.2 计算存款利息。有1000元,想存一年。有三种方法可选:活期,年利率为r1;一年期定期,年利率为r2;存两次半年定期,年利率为r3。请分别计算出一年后按三种方法所得到的本息和。解题思路:关键是确定计算本息和的公式。从数学知识可知,若存款额为p0,则:活期存款一年后本息和为p1=p0(1+r1)。一年期定期存款,一年后本息和为p2=p0(1+r2)。两次半年定期存款,一年后本息和为p3=p0(1+r3/2)(1+r3/2)。画出N-S流程图,见图3.2。,图3.2,任务3.1 顺序程序设计举例,#includ

40、estdio.hint main()float p0=1000,r1=0.0036,r2=0.0225,r3=0.0198,p1,p2,p3;定义变量p1=p0*(1+r1);计算活期本息和p2=p0*(1+r2);计算一年定期本息和p3=p0*(1+r32)*(1+r32);计算存两次半年定期的本息和 printf(“p1=%fnp2=%fnp3=%fn”,p1,p2,p3);输出结果 return 0;运行结果:P1=1002.599976P2=1022.500000 P3=1018.898010,任务3.2 C语句概述,C程序的执行部分是由语句组成的。程序的功能也是由执行语句实现的,C程

41、序主要包含表达式语句、函数调用语句、控制语句、复合语句和空语句,其中控制语句包含多种情况,本任务将分别进行介绍。C程序结构可以用图3.3表示。即一个C程序可以由若干个源程序文件(编译时以文件模块为单位)组成,一个源文件可以由若干个函数和预处理指令以及全局变量声明部分组成(关于“全局变量”见项目7)。一个函数由数据声明部分和执行语句组成。,图3.3,任务3.2 C语句概述,C语句分为以下5类:(1)控制语句。控制语句用于完成一定的控制功能。C语句只有9种控制语句,它们的形式是:if()else(条件语句)for()(循环语句)while()(循环语句)dowhile()(循环语句)continu

42、e(结束本次循环语句)break(中断执行switch或循环语句)switch(多分支选择语句)return(从函数返回语句)goto(转向语句,在结构化程序中基本不用goto语句)上面9种语句表示形式中的()表示括号中是一个“判别条件”,“”表示内嵌的语句。例如上面的“if()else”的具体语句可以写成:if(xy)z=x;else z=y;,任务3.2 C语句概述,(2)函数调用语句。函数调用语句由一个函数调用加一个分号构成,例如:printf(“This is a c statement.”);其中printf(“This is a c statement.”)是一个函数调用,加一个分

43、号成为一个语句。表达式语句。表达式语句由一个表达式加一个分号构成,最典型的是,有赋值表达式构成一个赋值语句。例如:a=3 是一个赋值表达式,而 a=3;是一个赋值语句。空语句。下面是一个空语句:;此语句只有一个分号,它什么也不做。那么它有什么用呢?可以用来作为流程的转向点(流程从程序其他地方转到此语句处),也可以用来作为循环语句中的循环体(循环体是空语句,表示循环体什么也不做)。,任务3.2 C语句概述,复合语句。可以用 把一些语句和声明括起来成为复合语句(又称语句块)。例如下面是一个复合语句:float pi=2.14159,r=2.5,area;定义变量area=pi*r*r;printf

44、(“area=%f”,area);可以在复合语句中包含声明部分(如上面的第2行),C99允许将声明部分放在复合语句中的任何位置,但习惯上把它放在语句块开头位置。复合语句常用在if语句或循环中,此时程序需要连续执行一组数据。注意:复合语句中最后一个语句中最后的分号不能忽略不写。C语言允许一行写几个语句,也允许一个语句拆开写在几行上,书写格式无固定要求,任务3.3 数据的输入/输出,3.3.1 输入输出举例 案例3.3 求ax2+bx+c=0方程的根。a,b,c由键盘输入,设b24ac0。解题思路:首先要知道求方程式的根的方法。由数学知识已知:如果b24ac0,则一元二次方程有两个实根:,可以将上

45、面的分式分为两项:,则x1=p+q,x2=pq有了这些式子,只要知道a,b,c的值,就能顺利的求出方程的两个根。,任务3.3 数据的输入/输出,#include#include 程序重要调用求平方根函数sqrtint main()double a,b,c,disc,x1,x2,p,q;disc用来存放判别式(b*b4ac)的值scanf(“%1f%1f%1f”,运行结果:1 3 2X1=-1.00X2=-2.00,任务3.3 数据的输入/输出,3.3.2 有关数据输入输出的概念 从前面的程序可以看到:几乎每一个C程序都包含输入输出。因为要进行运算,就必须给出数据,而运算的结果当然需要输出,以便

46、人们应用。没有输出的程序是没有意义的。输入输出是程序中最基本的操作之一。在讨论程序的输入输出时首先要注意以下几点。所谓输入输出是以计算机主机为主体而言的。C语言本身不提供输入输出语句,输入和输出操作是由C标准函数库中的函数来实现的。在使用系统库函数时,要在程序文件的开头用预处理指令#include把有关头文件放在本程序中 如:#include 注意:应养成这样的习惯:只要在本程序文件中使用标准输入输出库函数时,一律加上#include指令。,任务3.3 数据的输入/输出,3.3.3 用printf函数输出数据 在C程序中用来实现输出和输入的,主要是printf函数和scanf函数。这两个函数是

47、格式输入输出函数。用到两个函数时,程序设计人员必须制定输入输出数据的格式,即根据数据的不同类型指定不同的格式。1、printf函数的一般格式 printf函数的一般格式为 printf(格式控制,输出表列)例如:printf(“%d,%cn”,i,c)2、格式字符(1)d格式字符。用来输出一个有符号的十进制整数。可以在格式声明中指定输出数据的域宽(所占的列数),如用“%5d”,指定输出数据占5列,输出的数据显示在此5列区域的右侧。如:printf(“%5dn%5dn”,12,345);输出结果为 12(12前面有3个空格)345(345前面有1个空格),任务3.3 数据的输入/输出,(2)c格

48、式符。用来输出一个字符。例如;char ch=a;printf(“%c”,ch);运行时输出 a 一个整数,如果在0127范围中,也可以用“%c”使之按字符形式输出,在输出前,系统会将该整数作为ASCII码转换成相应的字符;如:short a=121;printf(“%c”,a);输出字符y。(3)s格式符。用来输出一个字符串。如:printf(“%s”,“CHINA”);执行此函数时在显示屏上输出字符串“CHINA”(不包括双引号)。,任务3.3 数据的输入/输出,(4)f格式符。用来输出实数(包括单、双精度、长双精度)。以小数形式输出,有几种用法:基本型,用%f。不指定输出数据的长度,由系

49、统根据数据的实际情况决定数据所占的列数。系统处理的方法一般是:实数中的整数部分全部输出,小数部分输出6位。示例 3.4 用%f输出实数,只能得到6位小数。#includeint main()double a=1.0;printf(“%fn”,a3);return 0;运行结果:0.333333 虽然a是双精度型,a3的结果也是双精度型,但是用%f格式声明只能输出6位小数。,任务3.3 数据的输入/输出,指定数据宽度和小数位数,用%m.nf。如果想在示例3.4输出双精度变量a的15位小数,可以采用案例3.3所用的方法,用“%20.15fn”,a/3)运行结果:0.333333333333333

50、注意:在用%f输出时要注意数据本身能提供的有效数字,如float型数据的存储单元只能保证6位有效数字。double型数据能保证15位有效数字。不要以为计算机输出的所有数字都是绝对精确有效的。输出的数据向左对齐,用%m.nf。在m.n的前面加一个负号,其作用与%m.nf形式作用基本相同,但当数据长度不超过m时,数据向左靠,右端补空格。如:printf(“%24.15f,%24.15fn”,a,a);运行结果:3332.333333333333500 3332.333333333333500 第1次输出a时输出结果向左端靠,右端空5列。第2次输出a使输出结果向右端靠,左端空5列。,任务3.3 数据

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号