程序设计语言初步副本PPT课件_第1页
程序设计语言初步副本PPT课件_第2页
程序设计语言初步副本PPT课件_第3页
程序设计语言初步副本PPT课件_第4页
程序设计语言初步副本PPT课件_第5页
已阅读5页,还剩111页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1程序设计语言:用于书写计算机程序的语言,用于表达和描述要加工的数据以及求解问题的步骤和过程。是根据预先定义的规则(语法)、由一个有限字母表上的字符构成的字符串的总体。程序设计语言的基本成分: 数据成分。用以描述程 序中所涉及的数据。 运算成分。用以描述程序中所包含的运算。 控制成分。用以表达程序中的控制构造。 传输成分。用以表达程序中数据的传输。 第1页/共116页2提纲标识符标识符 数据类型数据类型变量变量常量常量输入和输出输入和输出表达式表达式语句语句函数函数本章结合本章结合C语言语言向大家介绍结构向大家介绍结构化程序设计语言化程序设计语言的基本概念的基本概念 数据成分数据成分传输成分传

2、输成分运算成分运算成分控制成分控制成分第2页/共116页3先聊点C语言第3页/共116页4第4页/共116页5数据总线 控制总线 输入设备输入设备输出设备输出设备存储器存储器中央处理器(中央处理器(CPU)运算部件运算部件控制部件控制部件地址总线 实例:编一个程序,从键盘读入两个整数,要求在屏幕上输出相乘运算结果。处理步骤:处理步骤:1.控制部件发命令从键盘读控制部件发命令从键盘读取数据并存储到内存储器中取数据并存储到内存储器中(输入输入)。)。2.控制部件发命令从内存储控制部件发命令从内存储器中取出这两个数置入运算器中取出这两个数置入运算部件的寄存器中,让运算器部件的寄存器中,让运算器执行乘

3、法运算,运算结果写执行乘法运算,运算结果写回存储器中(回存储器中(处理处理)。)。3.控制部件发命令将存储在控制部件发命令将存储在内存储器中的结果输出到显内存储器中的结果输出到显示器上(示器上(输出输出)。)。需要考虑的问题:需要考虑的问题:1.输入输入:如何从键盘读取这两个数并将其存放:如何从键盘读取这两个数并将其存放到内存中?程序如何约束输入的必须是整数?到内存中?程序如何约束输入的必须是整数?2.处理处理:计算时如何读取内存中的这两个数?:计算时如何读取内存中的这两个数?如何实现计算?计算结果如何写回内存?如何实现计算?计算结果如何写回内存?3.输出输出:如何将内存中的计算结果输出到显示

4、:如何将内存中的计算结果输出到显示器?器?第5页/共116页6数据总线 控制总线 输入设备输入设备输出设备输出设备存储器存储器中央处理器(中央处理器(CPU)运算部件运算部件控制部件控制部件内存中数据的存取:变量、常量、数据类型输入:输入语句输出:输出语句地址总线 计算的实现:运算符表达式语句函数第6页/共116页7标识符标识符是由程序员定义的单词,用来给程序是由程序员定义的单词,用来给程序中的数据、函数和其他用户自定义对象命名中的数据、函数和其他用户自定义对象命名。程序设计语言本身会定义一些专用名称,称程序设计语言本身会定义一些专用名称,称之为之为保留字保留字或或关键字关键字,它们,它们具有

5、特定含义,具有特定含义,程序员不能另做他用。如:程序员不能另做他用。如:C C语言规定了语言规定了3232个关键字。个关键字。3.1 标识符第7页/共116页8C语言规定的32个关键字:auto double int struct break else long switch case enum register typedefchar extern return union const float short unsigned continue for signed void default goto sizeof volatiledo if static while第8页/共116页9#i

6、nclude main() int number1; /*变量声明*/ int number2; int result; printf(“please input the two numbers:n”); /*显示提示信息*/ scanf(“%d%d”,&number1,&number2); /*从键盘读取2个整数*/ result = number1 * number2; /*赋值运算*/ printf(“the result is : %dn ”, result); /*输出结果*/ return 0; 用户自定义标识符C语言关键字3.1 标识符第9页/共116页10u 不

7、同的程序设计语言标识符格式可能不同。不同的程序设计语言标识符格式可能不同。u C C语言规定:语言规定:标识符由大写字母标识符由大写字母A A到到Z Z、小写字母小写字母a a到到z z、数字数字0 0到到9 9和下划线组成,且第一个字符必和下划线组成,且第一个字符必须是字母或下划线,随后的字符必须是字母、数须是字母或下划线,随后的字符必须是字母、数字或下划线。且大小写敏感字或下划线。且大小写敏感,如,如ageage和和AgeAge是两个是两个不同的标识符。不同的标识符。u PASCAL语言规定:和语言规定:和C语言类似,只是要求第语言类似,只是要求第一个字符只能是字母(比一个字符只能是字母(

8、比C语言约束更强)。语言约束更强)。3.1 标识符思考:以下哪些是合法的思考:以下哪些是合法的C语言标识符语言标识符age,_class_no , name1, name1,2name,#age第10页/共116页11数据数据是计算机处理的对象。是计算机处理的对象。数据依据其本身的特点可以归为不同的类:数据依据其本身的特点可以归为不同的类:整数整数、小数、字符、字符串、小数、字符、字符串等。等。(高级程序语言特点:按照人对于数据的表达方式)(高级程序语言特点:按照人对于数据的表达方式) 程序设计语言应该具备区分各种类型数据的能力程序设计语言应该具备区分各种类型数据的能力,于是引入了数据类型的概

9、念。,于是引入了数据类型的概念。数据类型包括两层含义:定义了一系列的值数据类型包括两层含义:定义了一系列的值( (属于属于该类型的数据能够取值的范围该类型的数据能够取值的范围)以及能应用于这)以及能应用于这些值上的一系列操作(些值上的一系列操作(数据操作数据操作)。)。 3.2 数据类型第11页/共116页12u整数是由符号和一个或多个数字组成的正数、0 0或负数,又称为带符号的自然数 ,如+12,-38+12,-38。u注意:在数学中,整数是一个无限集合,但对于计算机来说,只能表示它的一个有限子集(取决于存储空间的大小) 。整型整型3.2 数据类型程序设计语言一般包含四种程序设计语言一般包含

10、四种标准数据类型标准数据类型:整型、字符型、浮点型和布尔型整型、字符型、浮点型和布尔型(补充)(补充)。第12页/共116页133.2 数据类型整型整型数据占用的内存单元数:uC语言中整型数据细分为四类:short int、int、long int和long long int。(和教材不同)uC语言标准没有规定每一种整数类型占用的内存空间大小(即数的范围),只是约束到:short int和int至少要占据16位(2字节),而long数据至少要有32位(4字节);且数据长度上,short int=int=long int = long long int 。 u每一种整数类型占用的内存字节数由编译

11、器根据所用机器的硬件情况来决定。第13页/共116页14整型数据所允许的运算包括: 二目算术运算 :+、-、*、/、(取余) ; 注意:两个整数进行二目运算后结果还是整数 如:125 / 10 = 12(余数5被舍弃), 125 % 10 = 5 单目算术运算 :取负值等; 关系运算:,=,= =(相等), !=(不相等)C语言中关系运算结果为1(真)或0(假) 3.2 数据类型整型第14页/共116页15字符型字符型u字符数据包括26*2个字母(大小写)+10个数字+其它显示符号,总共95种;还有33种控制符号,总共128种符号; u字符型数据在内存中的存储:实际存放的是一个整数值。多数计算

12、机系统采用ASCII(American Standard Code for Information Interchange)标准编码模式来对字符进行编码 。每个字符占用8位内存(1个字节);3.2 数据类型第15页/共116页16ASCII表表L H 000000010010001101000101011001110000NULDLE SP0Pp 0001SOHDC1!1AQaq 0010STXDC2“2BRbr 0011ETXDC3#3CScs 0100EOTDC4$4DTdt 0101ENQNAK%5EUeu 0110ACKSYN&6FVfv 0111BELETB,7GWgw 10

13、00BSCAN)8HXhx 1001HTEM(9IYiy 1010LFSUB*:JZjz 1011VTESC+;Kk 1100FFFSNn 1111SIUS/?O_oDEL2000H2002H2004H2003H2001H01000001存储空间存储空间该存储区存放字符A思考:若从键盘上输入字符存储到内存,字符思考:若从键盘上输入字符存储到内存,字符到二进制编码的转换是由什么部件来实现的?到二进制编码的转换是由什么部件来实现的?第16页/共116页17ASCII(A)=65 A的ASCII值是65ASCII(a)=97 规律:大写字母的ASCII编码32小写字母的ASCII编码 3.2 数据类

14、型字符型第17页/共116页183.2 数据类型字符型关系运算(按照ASCII大小):,=, = =,!=例如:A a 结果为真,因为A的ASCII是65 ,a的ASCII是97 ,6597字符型所允许的运算包括(字符型所允许的运算包括(将字符型数据当作整型将字符型数据当作整型数据对待数据对待):): 算术运算算术运算:ch2=ch1-32 (ch2=ch1-32 (若若ch1ch1值为值为b b, ,则则ch2ch2为为B B) ) ch2=ch1-1 (ch2=ch1-1 (若若ch1ch1值为值为b b, ,则则ch2ch2为为a a) ) ch2=ch1ch2=ch11 (1 (若若c

15、h1ch1值为值为b b, ,则则ch2ch2为为c c) ) 第18页/共116页19浮点型浮点型u 浮点型是带小数部分的数字类型浮点型是带小数部分的数字类型 ,如,如3.14,1.575E5(科学计数法,即(科学计数法,即 1.575* )。u抽象地讲,浮点型数据的值域是全体实数,但是由抽象地讲,浮点型数据的值域是全体实数,但是由于计算机表示方面的原因,计算机只能表示它的一个于计算机表示方面的原因,计算机只能表示它的一个有限子集。有限子集。u 同样由于计算机表示方面的原因,实数在计算机同样由于计算机表示方面的原因,实数在计算机内部的表示有时是不准确的。例如,存储圆周率时,内部的表示有时是不

16、准确的。例如,存储圆周率时,只能表示成近似的值。只能表示成近似的值。3.2 数据类型510第19页/共116页203.2 数据类型uC语言支持三种不同长度的浮点数据类型:float、double和long double。 其中float一般占32位(字节);double一般占64位( 8字节), long double占96位( 12字节)。u三者区别:越后面的类型运算精度越高,值域越大,但占用的内存单元越多。第20页/共116页21浮点型所允许的运算包括: 二目算术运算 :+、-、*、/;浮点型数据进行二目运算结果还是浮点型。 如:12.0/5.0=2.4 单目算术运算 :取负值 关系运算:

17、,=,= =,!= 3.2 数据类型浮点型注意:要避免做两个实数相等或不相等的比较。由于计算注意:要避免做两个实数相等或不相等的比较。由于计算机表示方面的近似性,会使得本来应该相等的两个数不等。机表示方面的近似性,会使得本来应该相等的两个数不等。建议在比较两个浮点数建议在比较两个浮点数X和和Y是否相等时使用是否相等时使用|X-Y|,其中其中是一个绝对值较小的正浮点数。是一个绝对值较小的正浮点数。第21页/共116页223.2 数据类型布尔型(补充) 布尔类型数据:取值只有两种,真(True)或者假(False)。允许的运算包括:与、或、非。 绝大多数程序设计语言中有布尔类型这种数据类型,如Pa

18、scal语言。但是C语言没有定义这种数据类型。布尔型布尔型第22页/共116页23标准类型是原子的、不可再分的。程序员标准类型是原子的、不可再分的。程序员可以以标准类型为基本构件,构造出可以以标准类型为基本构件,构造出复杂复杂的数据类型。如的数据类型。如C C语言有:结构、数组、联语言有:结构、数组、联合、文件等复杂数据类型;合、文件等复杂数据类型;PASCALPASCAL语言有语言有:结构、数组、集合、文件等复杂数据类:结构、数组、集合、文件等复杂数据类型。型。 3.2 数据类型复杂数据类型第23页/共116页243.3 变量数据总线 控制总线 输入设备输入设备输出设备输出设备存储器存储器中

19、央处理器(中央处理器(CPU)运算部件运算部件控制部件控制部件输入数据、中间运算结果、最终结果程序需要将输入程序需要将输入数据、中间运算数据、中间运算结果以及最终结结果以及最终结果暂时保存在内果暂时保存在内存单元中。存单元中。地址总线 程序如何实现程序如何实现从内存单元存从内存单元存取数据?取数据?第24页/共116页253.3 变量 程序运行时,通过内存地址对内存数据进行读写; 程序员写源程序时,如果也是直接使用内存地址来读写内存数据,会很麻烦! 如果用名字来代替地址,在程序中出现的是代表内存空间的名字,让编译器来跟踪数据实际存放的物理内存地址,就可以简化编程变量;第25页/共116页26变

20、量用来代表内存存储空间,该存储空间用来存变量用来代表内存存储空间,该存储空间用来存放被加工的数据或处理的结果。源程序中对变量放被加工的数据或处理的结果。源程序中对变量的操作(读和赋值)实际上是对存储空间的读写的操作(读和赋值)实际上是对存储空间的读写操作。操作。变量具有三个重要属性:名称、值和数据类型。变量具有三个重要属性:名称、值和数据类型。2000H2002H2004H2005H2007H2006H2003H2001Hgenderagescore内存内存用用gender代表地址为代表地址为2001H的内的内存单元,存单元,score代表地址为代表地址为2004H2007H的一片内存空间。的

21、一片内存空间。用变量来实现对这些内存空间数用变量来实现对这些内存空间数据的存取。据的存取。3.3 变量第26页/共116页27一、变量定义 u 使用变量来对内存数据进行存取前,必须使用变量来对内存数据进行存取前,必须先定义先定义变量,变量,目的是目的是建立变量和存储空间的对应关系建立变量和存储空间的对应关系。u 变量定义指明变量定义指明变量的名称变量的名称和和数据类型(数据类型(变量代表变量代表的存储空间存放的数据的类型的存储空间存放的数据的类型)。变量的名称变量的名称要要遵遵循标识符命名原则,虽然可以为任意长度,但循标识符命名原则,虽然可以为任意长度,但C编编译器只认为前译器只认为前31个字

22、符有效。变量类型可以告诉编个字符有效。变量类型可以告诉编译器留出适量的用于保存数据的内存。译器留出适量的用于保存数据的内存。u 不同语言中变量定义的写法不一样,不同语言中变量定义的写法不一样,C语言格式:语言格式:数据类型数据类型 变量名变量名1,变量名变量名2,;3.3 变量思考:变量定义时要指明哪些内容?思考:变量定义时要指明哪些内容?char gender;int age1,age2;float score;数据类型变量名分号必须多个同类型变量用逗号分割第27页/共116页28注意,变量定义仅引起内存存储注意,变量定义仅引起内存存储空间分配,但此时变量中存储的空间分配,但此时变量中存储的

23、值一般是无意义的!值一般是无意义的!变量定义将引起内存空间的分配。定义后,变量就变量定义将引起内存空间的分配。定义后,变量就用来代表内存中的一片存储单元(存储单元个数取用来代表内存中的一片存储单元(存储单元个数取决于变量类型)。决于变量类型)。3.3 变量2000H2002H2004H2005H2007H2006H2003H2001Hgenderagescore存储空间存储空间char gender;int age;float score;第28页/共116页29二、变量赋值3.3 变量C语言示例:语言示例: char gender; int age; float score;变量赋值:把一个

24、值写入变量代表的存储空间。变量赋值:把一个值写入变量代表的存储空间。C语言变量赋值格式:语言变量赋值格式:变量名变量名=表达式表达式gender=F;age = 18; score= 89.5;2000H2002H2004H2005H2007H2006H2003H2001Hgenderagescore存储空间存储空间ASCII(F)=70701889.5变量的值第29页/共116页303.3 变量 变量使用特点 先定义,后使用。 int age; 定义一个变量为整数类型。如未定义,则在编译时被查出,认为非法。 变量未被赋值前,值一般是无意义的。 对变量赋值过程是“覆盖”过程,用新值去替换旧值。

25、 读取变量代表的存储空间数据(又称读取变量的值):age=age+1; 读取变量的值时,该变量保持不变。第30页/共116页31C C语言允许变量在定义时进行初始化。初始语言允许变量在定义时进行初始化。初始化语句用来给变量赋初始值。例如:化语句用来给变量赋初始值。例如:char gender;int age = 16;float score; 3.3 变量2000H2002H2004H2005H2007H2006H2003H2001H16存储空间存储空间genderagescore第31页/共116页323.3 变量试解释下列操作的含义 读取变量的值 写入变量 给变量赋值 修改变量的值第32页

26、/共116页33#include #includemain() int number1; /*变量声明*/ int number2; int result; printf(“please input the two numbers:n”); /*显示提示信息*/ scanf(“%d%d”,&number1,&number2); /*从键盘读取2个整数*/ result = number1 * number2; /*赋值运算*/ printf(“the result is : %dn ”, result); /*输出结果*/ system(“pause”); return 0;

27、3.3 变量第33页/共116页343.3 变量u找出下述变量定义的错误: float f; char A, B;第34页/共116页35char gender;int age;float score;变量类型变量名总结:总结:变量三要素:变量名(变量三要素:变量名(存储空间存储空间)、数据类型()、数据类型(存储存储空间存放的数据的类型空间存放的数据的类型)、变量值()、变量值(存储内容存储内容)3.3 变量2000H2002H2004H2005H2007H2006H2003H2001H701889.5存储空间存储空间变量的值genderagescore第35页/共116页36一、一、文字常

28、量文字常量 文字常量是指在程序中未被命名的值。文字常量是指在程序中未被命名的值。例:例:circumference = 2 * (length + width); 其中其中2 2就是一个文字常量,就是一个文字常量,lengthlength和和widthwidth是变量是变量三类常量:三类常量:文字常量文字常量、命名常量命名常量、符号常量符号常量3.4 常量第36页/共116页37二、命名常量和变量类似,命名常量也是内存存储空间的名字,代表一片内存存储空间,但一般不允许程序去改变该存储空间中的数据。 C C语言中定义一个命名常量: mainmain() const const float flo

29、at pi = 3.14;pi = 3.14; 3.4 常量2000H2002H2004H2005H2007H2006H2003H2001H3.14存储空间存储空间pi说明pi是个命名常量;第37页/共116页38#include #includemain() const float pi=3.14;/*常量定义*/ float radius; /*变量定义*/ float area; printf(“please input the radius:n”); /*显示提示信息*/ scanf(“%f”,&radius); /*从键盘读取半径*/ area = pi * radius *

30、 radius; /*赋值运算*/ printf(“the area is : %fn”, area); /*输出结果*/ system(“pause”); return 0; 第38页/共116页39 符号常量是仅含有符号名称的值。C C语言符号常量定义:#define 标识符 替换文本 #define PI 3.14 area = PI* radius * radius; 编译时,预处理程序能够将所有出现该符号名称的地方用值替换: : area = 3.14 * radius * radius ; 使用符号常量的好处:使程序易读性好、容易维护。 三、三、符号常量符号常量3.4 常量第39页

31、/共116页403.4 常量#include #include#define PI 3.14 /常量定义,注意结束处无分号main() float radius; /*变量定义*/ float area; printf(“please input the radius:n”); /*显示提示信息*/ scanf(“%f”,&radius); /*从键盘读取半径*/ area = PI* radius * radius; /*赋值运算*/ printf(“the area is : %fn”, area); /*输出结果*/ system(“pause”); return 0; 第40页

32、/共116页41四、常量的类型和变量一样,常量也有类型。大多数程序设计语言使用整型、浮点型、字符型和字符串型常量。C C语言中四种常量:1515整型常量15.415.4浮点型常量AA字符型常量 (用单引号括起字符)“Hello” Hello” 字符串型常量(用双引号括起字符序列)文字常量和符号常量的值体现了常量的类型3.4 常量第41页/共116页42 如果整型常量以0开头,C编译器会认为该常量是八进制数。如040即十进制的32。 如果整型常量以0 x开头,C编译器会认为该常量是十六进制数。如0 xFF即十进制的255。#include #include#define X 040#define

33、 Y 0XFFmain() printf(X=%d,Y=%d”, X,Y); system(pause); return 0; 3.4 常量X=32,Y=255请按任意键继续请按任意键继续 . . .第42页/共116页43常量小测试 下述常量定义哪些是错误的?为什么?#define ratio =1/3 #define ratio 1/3;#define 1st_character $#define if 71. 不能有号;否则会用不能有号;否则会用=1/3替换替换ratio2. 不能有语句结束符;号不能有语句结束符;号3. 标识符只能以字符或者标识符只能以字符或者下划线开头下划线开头4.i

34、f是是C语言规定的关键语言规定的关键字,有特定含义,用户字,有特定含义,用户不能随便使用不能随便使用5. 习惯上,常量名一般采习惯上,常量名一般采用大写字母。用大写字母。第43页/共116页44数据总线 控制总线 输入设备输入设备输出设备输出设备存储器存储器中央处理器(中央处理器(CPU)运算部件运算部件控制部件控制部件地址总线 3.5 输入和输出(I/O)一个真正有用的程一个真正有用的程序一般会从输入设序一般会从输入设备接收数据、并将备接收数据、并将运算结果输出到输运算结果输出到输出设备中。出设备中。为了实现和输入输出为了实现和输入输出设备的通信,程序必设备的通信,程序必须要有须要有输入和输

35、出语输入和输出语句句。一个既无输入又。一个既无输入又无输出的程序是没有无输出的程序是没有用的。用的。第44页/共116页45输入和输出语句最基本的功能在于从外界环境将值读入一个变量,或者将一个值写出到外界环境中。 3.5 输入和输出(I/O)第45页/共116页46一、输入 通过输入语句或者预先定义的函数可以从外界接收值。C C语言输入函数举例:语言输入函数举例: scanf(格式控制串,输入项地址表格式控制串,输入项地址表);格式控制串格式控制串:含有各种以百分号开头的格式控制符。:含有各种以百分号开头的格式控制符。输入项地址表输入项地址表:有逗号分隔开的若干输入表项组成,每一个:有逗号分隔

36、开的若干输入表项组成,每一个表项是一个变量的地址。表项是一个变量的地址。scanf函数的作用函数的作用:从标准输入设备(键盘)上读取一系列数:从标准输入设备(键盘)上读取一系列数据,按格式控制串的要求进行转换并送到输入项地址表所列据,按格式控制串的要求进行转换并送到输入项地址表所列的逐个变量中。的逐个变量中。 3.5 输入和输出(I/O)第46页/共116页47 scanf(“%d”,&number1);u当程序执行该语句时,等待用户从键盘输入数据并当程序执行该语句时,等待用户从键盘输入数据并转换成一个整数,存储到变量转换成一个整数,存储到变量number1中。中。ud:转换说明符转换

37、说明符(conversion specifier),用于),用于告告诉程序键入的数据要转换成一个整数;诉程序键入的数据要转换成一个整数;u&:取变量地址的运算符,取变量地址的运算符, & &number1表示变量表示变量number1的的首首地址地址。注意:书写程序时不要遗漏注意:书写程序时不要遗漏&.&.3.5 输入和输出(I/O)格式控制串输入项地址表第47页/共116页483.5 输入和输出(I/O)设age为int型变量,gender、ch为char型变量,height为float型变量。输入数据为:20M1.65若希望age得到值20,gend

38、er得到值M,height得到值1.65,则函数调用为: scanf(“%d%c%f”,&age,&gender, &height); 若希望ch得到字符值2, age得到整型值0, gender得到字符值M, height得到浮点值1.65,则函数调用为: scanf(“%c%d%c%f”,&ch, &age, &gender, &height); 第48页/共116页49用用scanfscanf语句从键盘同时读入年龄和性别:语句从键盘同时读入年龄和性别:scanf(scanf(“%d %d %c%c”,&age,&ag

39、e,&gender,&gender););scanf(scanf(“%d,%d,%c%c”,&age,&age,&gender,&gender););3.5 输入和输出(I/O)10 F10,F格式控制串中除了转换说明符,还可以包含其他字符。格式控制串中除了转换说明符,还可以包含其他字符。从键盘输入的内容要和格式控制串匹配。如果在格式从键盘输入的内容要和格式控制串匹配。如果在格式控制串中除了转换说明符以外还有其它字符,则在输控制串中除了转换说明符以外还有其它字符,则在输入数据时应输入与这些字符相同的字符。如:入数据时应输入与这些字符相同的字符。如

40、:空格scanf(scanf(“age=%d,gender=age=%d,gender=%c%c”,&age,&age,&gender,&gender););age=10, gender =F第49页/共116页50二、输出 通过语句或者预先定义的函数可以将值输出到外界。C输出函数举例:功能:将字符串显示在标准输出设备(一般为显示器)上。程序员可以将常量、变量、表达式、函数调用作为待输出字符串的一部分。格式控制串:包含了某些要直接显示的字符,也包含一些转换说明符。输出项表:可以是常量、变量、表达式、函数调用。3.5 输入和输出(I/O)第50页/共116页51如

41、:如: printfprintf(”Your age is : %dYour age is : %d”,age,age); ;注意,在输出时注意,在输出时转换说明符转换说明符% %d d不输出不输出,而是,而是被变量被变量ageage的的值代替值代替。假设变量。假设变量ageage的值是的值是1818,则显示器上,则显示器上将输出字符串将输出字符串“Your age is : 18Your age is : 18” 注意:此处变量注意:此处变量ageage前面没有前面没有&!&!3.5 输入和输出(I/O)上机练习:如果上述语句改写成上机练习:如果上述语句改写成printf(”

42、Your age is :”, age);输出将是怎样?输出将是怎样?第51页/共116页523.5 输入和输出(I/O)可以用printf语句输出常量、变量、表达式、函数调用的值:const float SCORE=98.5;int age;printf(“the average score is %d”,SCORE);/输出常量printf(“your age is %d”,age); /输出变量printf(“the value of (2+3)10 is:%dn”,(2+3)10);/输出表达式的值printf(“the size of int is :%d”,sizeof(int);

43、 /输出函数返回值第52页/共116页53若想同时输出年龄和性别,则语句可写为:若想同时输出年龄和性别,则语句可写为:printfprintf( “ Age: %d Age: %d,Gender: %cGender: %c”,age,gender,age,gender); ;显示器上将输出字符串显示器上将输出字符串“Age: 18,Gender: FAge: 18,Gender: F” 3.5 输入和输出(I/O)输入输出后面会再详细讲解,有兴趣的同学可参见输入输出后面会再详细讲解,有兴趣的同学可参见C程程序设计教程序设计教程的的9.3和和9.11。第53页/共116页54找出以下程序的错误1

44、.include2.main()3.4.printf(“input i and jn”);5. scanf(“i=%d”, i);6. scanf(“%d”,j);7. printf(“i=%d, j=%d”,i);/输出2个变量的值8. return 0;9.1. 变量变量i和和j未定义就使用;未定义就使用;2. scanf(“i=%d”,& i) scanf(“%d”,& j);3. printf(“i=%d, j=%d”,i,j);第54页/共116页55修正后的程序include#includemain() int i,j;/变量定义 printf(“input i a

45、nd jn”); /输入提示 scanf(“i=%d”, &i); /键盘输入变量i的值 scanf(%d,&j); printf(“i=%d, j=%d”,i,j);/输出2个变量的值 system(pause); return 0;运行结果:运行结果:input i and ji=1020i=10, j=20请按任意键继续请按任意键继续. . .第55页/共116页56#include main() int number1; /*存放整数1*/ int number2; /*存放整数2*/ int result; /*存放结果*/ printf(“please input

46、the two numbers:n”); /*显示提示信息*/ scanf(“%d %d”,&number1,&number2); /*读取整数*/ result = number1 * number2; /*赋值运算*/ printf(“the result is : %dn ”, result); /*输出结果*/ return 0; 2000H2004Hresult2002H2005H2007H2006H2003H2001H存储空间存储空间number1number210 2010 20please input the two numbers:please input t

47、he two numbers:the result is : 200the result is : 2001020200 任务描述:输入两个整数,求两数之积并输出。 /*/:注释 main()函数 变量定义部分 操作部分编译后,源程序中出现number1、number2和result的地方将会用内存相对地址(非真正物理地址)替换。思考:何时、在哪里得到真正的物理地址?编译程序怎么处理变量?操作系统怎么分配内存?如何得到物理地址?深入学习:编译原理操作系统计算机组成原理假设操作系统已经分配如下内假设操作系统已经分配如下内存空间用于存放操作数和结果存空间用于存放操作数和结果程序运行过程演示程序运行

48、过程演示第56页/共116页57输入输出练习:定义三个变量,分别是整型、浮点型、字符型。要求从键盘输入三个值(逗号间隔)存放到这三个变量里,并且输出(格式:变量名=变量值,)这三个变量。 #include#includemain() int i; float f; char c; scanf(“%d,%f,%c”, &i, &f, &c ); printf(“the result is:n”); printf(“i=%d,f=%f,c=%c”,i, f, c); system(“pause”); return 0;第57页/共116页58#include#include

49、main() int i; float f; char c; printf(input i,fn); scanf(%d,%f, &i,&f ); printf(input cn); scanf(%c, &c ); printf(the result is:n); printf(i=%d,f=%f,c=%c,i,f,c); system(pause); return 0;请同学们观察本程序的输出是什么?请同学们观察本程序的输出是什么?input i,f10,3.14input cthe result is: i=10,f=3.140000,c=请按任意键继续请按任意键继续

50、 . . .程序并没有给用户输入字程序并没有给用户输入字符数据的机会。为什么?符数据的机会。为什么?【链接链接】第58页/共116页59解决方法:用getchar函数来读取回车符main() int i; float f; char c; printf(input i,fn); scanf(%d,%f, &i,&f ); getchar(); /*将存于缓冲区的回车符读入*/ printf(input cn); scanf(%c, &c ); printf(the result is:结果是n); printf(i=%d,f=%f,c=%c,i,f,c); system

51、(pause);input i,f10,3.14input cythe result is: i=10,f=3.140000,c=y请按任意键继续请按任意键继续 . . .结果正确!结果正确!此外,还可以用此外,还可以用fflush函数函数来清空键盘缓冲区。见实来清空键盘缓冲区。见实验讲义附录验讲义附录1的第的第16个错误,个错误,要求自学。要求自学。第59页/共116页60u表达式是由运算符、操作数和括号组成的、计算求值的基本单位。u操作数可以是:常量、变量、函数调用和表达式;u表达式举例:u2 2 表达式无运算符,操作数为常量ui i 表达式无运算符,操作数为变量usizeof(int)

52、sizeof(int) 表达式无运算符,操作数为函数调用u2 + i 2 + i 操作数为常量和变量ui i * * sizeof(int) sizeof(int) 操作数为变量和函数调用u2+ i 2+ i * * sizeof(int) sizeof(int) 加法运算的第2 2个操作数仍为表达式3.6 表达式第60页/共116页613.6 表达式u典型的几类运算符和表达式 :算术运算符和算术表达式; 关系运算符和关系表达式;逻辑运算符和逻辑表达式 ;赋值运算符和赋值表达式 ;第61页/共116页623.6 表达式一、算术运算符和算术表达式算术运算符:、/ /、( (取余) ) 等;算术表

53、达式:由算术运算符、操作数和括号构成的表达式。如:(2 + 82 + 8.2 / 3.2 / 3)* * 4 4 ,10 10 4 4(余数为2 2)+ (加)加)-(减)(减)*(乘)(乘)/(除,取商)(除,取商)%(取模)(取模)+ (自加,加自加,加1)-(自减,减(自减,减1)第62页/共116页633.6 表达式算术表达式(b*b-4*a*c)/(2*a)2aac4b2要注意编程序式,程序中对算术表达式的书写和要注意编程序式,程序中对算术表达式的书写和平时的书写方式可能是不一样的:平时的书写方式可能是不一样的:在程序中要写成在程序中要写成第63页/共116页64 在C语言中,算术运

54、算的操作数可以是整数、字符或者浮点数。如果表达式中的操作数全是字符或者整数,则表达式的值为整数;如果操作数至少有一个是浮点数,则表达式的值为浮点数。3.6 表达式算术表达式求以下表达式的值:1)102/202)102%203)1/24)1.0/25)x=A+32(x是整型变量)求以下表达式的值:1)102/20=52)102%20=23)1/2=0 值为整数4)1.0/2=0.5 值为浮点数5)x=A+32 x97提示:字符数据总是提示:字符数据总是先转换成整型数据,先转换成整型数据,再参与运算的。再参与运算的。第64页/共116页653.6 表达式算术表达式 C语言中,整型、字符型、浮点型数

55、据可以进行混合运算. 如:5+1.0+A=71.000000混合运算涉及到数据类型的转换,具体将在以后介绍。 自加运算符+和自减运算符-是C语言特有的运算符,将在以后介绍。第65页/共116页663.6 表达式二、关系运算符和关系表达式 关系运算符:用于比较两个数据的大小关系。 关系表达式:用关系运算符将两个表达式连接起来构成的表达式,如(2(23)10 3)10 ;运算结果是逻辑“真”或者“假”。 在C C语言中,若运算结果是逻辑“真”,则关系表达式的值为1 1;若为逻辑“假”,则值为0 0。 (小于)小于)(大于)(大于)=(大于等于)(大于等于)(等于)(等于)!(不等于)!(不等于)第

56、66页/共116页673.6 表达式关系表达式思考:以下语句的输出结果是什么?printf(the value of (2+3)10 is:%dn,(2+3)10);printf(the value of (2+3)=10 is:%dn,(2+3)=10);the value of (2+3)10 is:1the value of (2+3)=10 is:0第67页/共116页683.6 表达式三、逻辑运算符和逻辑表达式逻辑运算符:与、或、非 &(与)(与)a&b:当且仅当操作数:当且仅当操作数a和和b的值都为的值都为“真真”时,运算结果为时,运算结果为“真真”,否则为,否则为

57、“假假”(如何判断操作数是否为真?如何判断操作数是否为真?)|(或)(或)a|b:当且仅当操作数:当且仅当操作数a和和b值都为值都为“假假”时,运算结果为时,运算结果为“假假”,否则为,否则为“真真”。!(非)!(非)!a:当操作数当操作数a的值为的值为“真真”时,运算结果时,运算结果为为“假假”;当操作数;当操作数a的值为的值为“假假”时,时,运算结果为运算结果为“真真”C语言中,只要操作数值为非0,即为真。值为0,即为假第68页/共116页693.6 表达式逻辑表达式 逻辑表达式:用逻辑运算符将表达式(一般为关系表达式)连接起来构成的表达式 ;运算结果是逻辑“真”或者“假”; 在C C语言

58、中,若运算结果是逻辑“真”,则逻辑表达式的值为1 1;若为逻辑“假”,则值为0 0。 逻辑表达式求值的两个要点: 判断操作数值是“真”还是“假”; 当逻辑表达式求值结束后,将运算结果的逻辑“真”或“假”转换为整型值1 1或0 0。 第69页/共116页703.6 表达式逻辑表达式#include#includeint main() int a=1,b=2,c=4,f; printf(“a=%d,b=%d,c=%dn,a,b,c); f=(ab)&(bc); printf(“f=(ab)&(bb)|(bc); printf(f=(ab)|(bc),f为为%dn,f); print

59、f(!(ab) is: %dn,!(ab); printf(! a is: %dn,! a); system(pause); return 0;输出结果?输出结果?a=1,b=2,c=4f=(ab)&(bb)|(bc),f为为0!(ab) is: 1!a is: 0第70页/共116页713.6 表达式逻辑表达式 注意连续的关系运算: 数学上的abc,在C语言中虽然也允许这么写,但其含义数学中完全不同。数学中的该类表达式在C语言中应该写成:(a b) & (b 20 & a%5=0的值?优先级:算术运算符关系运算符逻辑运算符赋值运算符 如:i= a20 & a%

60、5 =0相当于:i=( (a20) & (a%5) =0)如何理解:对算术运算结果进行关系运算,关系运算结果进行逻辑运算,以上运算结果赋值给变量(赋值运算)。后续会详细介绍。 第73页/共116页74表达式小测试u练习如何写出下列表达式:1)判断整数i是否能被整数j整除;2)判断整数m是否是偶数;3)y -100,-10,且y 10,100;4)判断x年是否是闰年的条件:a)能被4整除但不能被100整除;或b)能被100整除且能被400整除;5)将整型变量i和j相除后的结果赋值给整型变量t;1. i%j=02. m%2=03. y-10 & y100或!或!(y=-100&y=10&y=100)4.(x%4=0 & x%100!=0) | (x%100=0 & x%400=0)(x%4=0 & x%100!=0) | (x%400=0)5. t=i/j第74页/共116页75字符型数据操作测试#include#includemain() char ch1=A,ch2=S;/*A、 a、 S的 ASCII分别是65,97, 83*/ printf(%c , %dn,ch1,ch1); printf(%c , %dn,ch

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论