c语言实用教程ppt课件.ppt
程序设计基础程序设计基础 (C C语言)语言) 语言程序设计 C第一章第一章 程序设计基础程序设计基础程序设计概述程序设计概述算法概述及其表示算法概述及其表示程序开发过程程序开发过程C语言概述语言概述语言程序设计 C1.1 程序设计概念程序设计概念1.1.什么是程序设计什么是程序设计程序程序软件软件计算机计算机2.2.计算机语言的发展计算机语言的发展 计算机语言:人与计算机交流的工具。计算机语言:人与计算机交流的工具。 种类:种类: 机器语言机器语言 汇编语言汇编语言 算法语言算法语言 面向对象语言面向对象语言 C C语言是算法语言的一种。语言是算法语言的一种。 C+C+是面向对象语言的一种是面向对象语言的一种高级语言高级语言机器语言汇编语言高级语言 Fortran 、 Basic 、 C 、C+等程序设计语言 10110000 0000111110110000 00001111 0010110000101100 00001010 00001010MOVMOVAXAX,1515ADDADDAXAX,1010a=15+10计算:计算:A=15+10A=15+10若若 机器语言机器语言 1010 1001 0001 0110 0000 0001 0011 1100 0001 1000 0000 0001 0000 0000 0000 00000000 0000 0000 0000高级语言(高级语言(C语言)语言)if (XY) Y=X+15; else Y=X-15;3.3.结构化程序设计思想:三种基本结构结构化程序设计思想:三种基本结构 顺序结构:操作顺序执行。顺序结构:操作顺序执行。 选择结构:根据给定的条件是否成立选择结构:根据给定的条件是否成立 而选择执行某种操作。而选择执行某种操作。 循环结构:反复执行某些操作。循环结构:反复执行某些操作。 三种基本结构三种基本结构顺序结构顺序结构选择结构选择结构循环结构循环结构 #include #include void main() float a,b,c,d,x1,x2; scanf(“%f,%f,%f”,&a,&b,&c); d=b*b-4*a*c; x1=(-b+sqrt(d)/(2*a); x2=(-b-sqrt(d)/(2*a); printf(“x1=%f,X2=%f”,x1,x2); 顺序结构示例:顺序结构示例: #include #include void main() float a,b,c,d,x1,x2; scanf(“%f,%f,%f”,&a,&b,&c); d=b*b-4*a*c; if(d=0) x1=(-b+sqrt(d)/(2*a); x2=(-b-sqrt(d)/(2*a); printf(“x1=%f,X2=%f”,x1,x2); else printf(“没有实根没有实根”); 选择结构选择结构条件条件选择结构示例:选择结构示例:循环结构程序示例:循环结构程序示例:void main( ) int i,sum=0; for(i=1;i0) for(i=1;i0时时 a0时时自顶向下自顶向下逐步细化逐步细化模块化设计模块化设计结构化编码结构化编码问题问题B问题B1问题B2问题A问题A2问题A1问题B21问题B22问题B23问题C问题C1问题C2程序设计的思想程序设计的思想 1.2 算法的概念算法的概念 从事各种工作和活动,都必须事先想好进行从事各种工作和活动,都必须事先想好进行的步骤,然后按部就班地进行。的步骤,然后按部就班地进行。 算法:算法:解决一个问题而采取的方法和步骤。解决一个问题而采取的方法和步骤。 对同一个问题,可以有不同的解题方法和步对同一个问题,可以有不同的解题方法和步骤。方法有优劣之分。骤。方法有优劣之分。算法也有优劣。算法也有优劣。 常用的有:常用的有: 自然语言自然语言( (人的日常使用语言)人的日常使用语言) 伪代码伪代码 传统流程图传统流程图 结构化流程图结构化流程图(N-S)(N-S)等等 怎样表示一个算法怎样表示一个算法算法的特点:算法的特点:1 1、有穷性、有穷性2 2、确定性、确定性3 3、有零个或多个输入、有零个或多个输入4 4、有一个或多个输出、有一个或多个输出5 5、有效性、有效性用最原始的方法进行。用最原始的方法进行。步骤步骤1 1: 1 12=22=2步骤步骤2 2: 2 23=63=6步骤步骤3 3: 6 64=244=24步骤步骤4 4: 24245=1205=120。这就是最后的结果。这就是最后的结果。这样的算法虽然是正确的,但太繁琐这样的算法虽然是正确的,但太繁琐。例例 求求1 12 23 34 45 5。可以将迭代算法改写如下:可以将迭代算法改写如下:步骤步骤1 1: t=1t=1步骤步骤2 2: i=2i=2步骤步骤3 3: t ti i=t=t(迭代变量)(迭代变量)步骤步骤4 4: i+1 = i i+1 = i 步骤步骤3 3步骤步骤5 5: 当当i=5i=5执行执行, ,否结束循环否结束循环传统流程图传统流程图例例 求求1 12 23 34 45 5。弊端弊端流程线流程线图图2.8 在传统流程图中,完全在传统流程图中,完全去掉去掉了带箭头了带箭头的的流程线流程线。全部算法写在。全部算法写在一个矩形框内一个矩形框内,在该框内还可以包含其他的从属于它的框,在该框内还可以包含其他的从属于它的框,或者说,由一些基本的框组成一个大的框。或者说,由一些基本的框组成一个大的框。这种流程图就称这种流程图就称N-S结构化流程图。这种结构化流程图。这种流程图适于结构化程序设计。流程图适于结构化程序设计。N-SN-S结构化流程图表示算法结构化流程图表示算法(2) 选择结构选择结构(1) 顺序结构顺序结构N-S流程图用以下的流程图符号:流程图用以下的流程图符号:(3) 循环结构:循环结构: 直到型循环结构直到型循环结构当型循环结构当型循环结构直到直到p1条件不成立为止。条件不成立为止。 直到给定的直到给定的p1条件成立为止条件成立为止例例 求求1 12 23 34 45 5。 程序的开发过程:程序的开发过程: 目标程序目标程序可执行程序可执行程序 计算结果计算结果 编译编译 链接链接 运行运行 源程序源程序 编辑编辑程序设计一般包括以下几个步骤:程序设计一般包括以下几个步骤:(1 1)分析问题并建立相应的数学模型。)分析问题并建立相应的数学模型。(2 2)确定数据结构和算法。)确定数据结构和算法。(3 3)编程。)编程。(4 4)调试。)调试。(5 5)整理并写出文档资料。)整理并写出文档资料。例例1:计算面积为:计算面积为12.5 cm2的园的半径。的园的半径。 分析:分析:s=r2 r=sqrt(s /); 程序:程序: #include #include #define PI 3.14 void main( ) float r,s; s=12.5; r=sqrt(s/PI); printf(“半径为:半径为:%f”,r); N-S流程图?流程图?define PI 3.14float r,ss=12.5r=sqrt(s/PI)Printf(“%f”,r)例例2:输入输入3个数,输出最小的数。个数,输出最小的数。分析问题:分析问题: 定义定义4变量变量x、y、z 、min ,从键盘依次输入,从键盘依次输入3个数个数给给x、y、z赋值,赋值, min存放最小数。存放最小数。用自然语言描述该算法:用自然语言描述该算法: (1)输入)输入x,y,z。(2)若)若xy,则,则xmin,否则,否则ymin。(3)若)若zmin,则,则zmin。(4)输出)输出min,min即为最小数。即为最小数。程序: #include void main( ) int x,y,z,min; scanf(“%d%d%d”,&x,&y,&z); if(xy) min=x; else min=y; if(zmin) min=z; printf(“min=%d”,min); 鸡兔同笼鸡兔同笼 枚举算法枚举算法 例例3:今有鸡兔同笼,上有三十五头,下有九十四今有鸡兔同笼,上有三十五头,下有九十四 足,足,问鸡兔各几何?问鸡兔各几何?” 分析如下:分析如下: 问题数学化。问题数学化。设:有设:有x只鸡,只鸡,y只兔,列出二元一次方程组:只兔,列出二元一次方程组:x+y=35 (1)2*x+4*y=94 (2) 具体程序具体程序#include int x,y ; void main() for(x=1;x=35;x+) for(y=1;y=35;y+) if(x+y=35) if(2*x+4*y=94) printf(“鸡鸡:%d 兔兔:%dn”,x,y); for(y=1;y=35-x;y+)减少循环次数?减少循环次数? C语言是国际上广泛流行的计算机高级语言语言是国际上广泛流行的计算机高级语言,既可用来既可用来写写系统软件系统软件,也可用来,也可用来写写应用软件应用软件。它既。它既具有一般高级语言特性,又具有低级语言特性,集具有一般高级语言特性,又具有低级语言特性,集高级语言和低级语言优点于一身。高级语言和低级语言优点于一身。 1.3 C语言概述语言概述其特点其特点: (1)语言简洁、紧凑,自由。)语言简洁、紧凑,自由。 (2)运算符丰富,共有)运算符丰富,共有34种运算符。种运算符。语言程序设计 C(3) 数据结构丰富。有整型、实型、字符型、数据结构丰富。有整型、实型、字符型、数组类型、指针类型、结构体类型等数组类型、指针类型、结构体类型等(4)是模块化的程序设计语言,各模块功能独立。是模块化的程序设计语言,各模块功能独立。(5) C C语言具有很好的通用性,既可以用于编语言具有很好的通用性,既可以用于编写应用软件,也适合编写系统软件。写应用软件,也适合编写系统软件。C语言与语言与C+?语言程序设计 C一、一、 C语言的基本符号语言的基本符号void main( ) printf(“这是一个示例这是一个示例n”); 程序示例程序示例C语言的基本符号包括三类符号语言的基本符号包括三类符号: 英文字母英文字母: AZ,az 数字符号数字符号: 09 特殊字符特殊字符: ! # % & * ( ) = + - / “ . , ; _ 语言程序设计 C二、关键字二、关键字1概念:关键字又称保留字,它是概念:关键字又称保留字,它是C语言系统已语言系统已定义了的定义了的专用名字专用名字,共有,共有32个。它们主要是一个。它们主要是一编制编制C语言源程序会用到的类型名、命令名等。语言源程序会用到的类型名、命令名等。 2类型名:类型名:int float char long double short union struct unsigned signed 结构控制:结构控制:if else for while do goto switch countinue break 语言程序设计 C三、标识符三、标识符 语言程序设计 C1 标识符标识符 程序员定义程序员定义的名字的名字:函数名函数名,变量名等。变量名等。2 定义规则定义规则 只能由字母只能由字母(A-Z, a-z)、数字、数字(0-9)或下划线或下划线(_)组成。组成。 必须以必须以字母字母或或下划线下划线开头。开头。 不能使用保留字。不能使用保留字。语言程序设计 C标识符示例标识符示例: sum array_1 _num1 SUM 1num num-1 边边_a -3 intSUM与sum是两个不同不同的标识符。 C语言区分大小写字母语言区分大小写字母。注意注意正确正确:错误错误:语言程序设计 C四、四、C语言程序的结构语言程序的结构示例示例1 仅由仅由main( )函数构成的函数构成的C语言程序。语言程序。 void main( ) printf(“This is a C program.n”); 1 1 总体结构总体结构 一个完整的一个完整的C语言程序由语言程序由若干若干个函数组成。个函数组成。 必须有且只能有一个主函数必须有且只能有一个主函数main( )( )函数。函数。 没有、有一个或多个若干个没有、有一个或多个若干个其它函数其它函数。语言程序设计 C示例示例2 由由main()函数和函数和1个其它函数个其它函数max()构成的构成的语言程序。语言程序。 int max(int x, int y) return( xy ? x : y ); void main() int num1,num2; scanf(“%d”, &num1); scanf(“%d”, &num2); printf(“max=%dn”,max(num1, num2); 函数函数主函数主函数语言程序设计 C 函数是函数是C语言程序的语言程序的基本单位基本单位 main()函数的作用,相当于网站的函数的作用,相当于网站的主页;主页;其它其它函数的作用,相当于超链接的网页。被(超链函数的作用,相当于超链接的网页。被(超链接)调用的函数可以是系统提供的接)调用的函数可以是系统提供的库函数库函数,也可也可以是用户以是用户自己设计自己设计的自定义函数。的自定义函数。 C语言程序总是从语言程序总是从main( )函数开始执行,不函数开始执行,不考虑其在程序中的位置。当主函数执行完毕时,考虑其在程序中的位置。当主函数执行完毕时,程序也就执行完毕。程序也就执行完毕。 习惯上,将主函数习惯上,将主函数main()放在最前头放在最前头语言程序设计 C2 函数的一般结构函数的一般结构 函数首部函数首部函数体部分函数体部分 任何函数都是由:任何函数都是由: 函数首部函数首部 函数体函数体 其一般结构如下:其一般结构如下: 函数类型函数类型 函数名函数名(函数参数表函数参数表) 说明语句部分;说明语句部分; 执行语句部分;执行语句部分; 语言程序设计 C函数首部函数首部 函数类型函数类型 函数名函数名(函数参数表函数参数表) int max (int x, int y) return( xy ? x : y ); 函数类型函数类型函数名函数名参数表参数表主函数名为:主函数名为:main函数可以没有参数,但函数可以没有参数,但括号括号不能省略不能省略。 void main()注意注意语言程序设计 C函数体函数体 void main() int n1,n2; scanf(“%d”, &n1); scanf(“%d”, &n2); printf(“sum=%dn”,n1+n2); 可执行语句可执行语句函数体函数体说明语句说明语句 在函数首部(说明部分)的下面、在函数首部(说明部分)的下面、大括号大括号内内的部分。的部分。 由由说明语句说明语句和和可执行语句可执行语句两部分构成:两部分构成:语言程序设计 C五、五、C C语言程序的书写格式语言程序的书写格式1.1.所有语句都必须以所有语句都必须以分号分号“;”结束,函数的最结束,函数的最后一个语句也不例外。后一个语句也不例外。2.2.程序行的书写格式程序行的书写格式自由自由,既允许,既允许1 1行内写几条行内写几条语句,也允许语句,也允许1 1条语句分写在几行上。条语句分写在几行上。3. C语言本身语言本身没有输入输出语句没有输入输出语句。输入和输出的。输入和输出的操作是由库函数操作是由库函数scanf和和printf等函数来完成的。等函数来完成的。C对输入输出实行对输入输出实行“函数化函数化”。4.4.允许使用允许使用注释注释。 C语言的注释格式为:语言的注释格式为: / /* * * */ /语言程序设计 C例:求两数之和例:求两数之和#includevoid main ( ) /*求两数之和求两数之和*/ int a,b,sum; /*这是声明部分,定义变量这是声明部分,定义变量a,b,sum为整型为整型*/ a=123; b=456; /* 以下以下3行为行为C语句语句 */ sum=a+b; printf (sum is %d/n, sum); 输出输出: sum is 579使用标准函数使用标准函数库中的函数声库中的函数声明明复习算法:算法:解决一个问题而采取的方法和步骤。解决一个问题而采取的方法和步骤。表示算法的方法:自然,流程图,表示算法的方法:自然,流程图,N-S,伪代伪代三个基本结构及三个基本结构及3个共同特点个共同特点结构化程序设计方法及基本思想:结构化程序设计方法及基本思想:计算机语言种类:机器,汇编,高级计算机语言种类:机器,汇编,高级(算面)(算面)计算机语言执行过程计算机语言执行过程关键字(保留字),标示符关键字(保留字),标示符3点要求点要求C语言程序的结构:语言程序的结构:main ,其他函数其他函数函数结构:首,函数体函数结构:首,函数体自顶向下自顶向下逐步细化逐步细化模块化设计模块化设计结构化编码结构化编码1 数据类型数据类型 C语言的数据类型是指数据的存在形式语言的数据类型是指数据的存在形式 及数据之间的联系。及数据之间的联系。2 C语言的数据类型语言的数据类型 第二章数据表示及数据运算第二章数据表示及数据运算 数据类型总表C C数数据据类类型型基本类型基本类型构造类型构造类型指针类型指针类型空类型空类型void字符类型字符类型 char整整 型型实型实型单精度型单精度型float双精度型双精度型double数组类型数组类型结构体结构体struct短整型短整型short长整型长整型long基本整型基本整型int数据类型决定:1. 数据占内存字节数2. 数据取值范围3. 其上可进行的操作语言程序设计 第二章数据描述C在程序中所有数据都必须规定其数据类型在程序中所有数据都必须规定其数据类型基本数据类型类型符号关键字数的表示范围所占位数整型字符型实型有无(signed)int16-3276832767(signed)short16-3276832767(signed)long32-2147483648214748364716unsigned int0655353204294967295unsigned longunsigned short16065535有float323.4e-383.4e38有double641.7e-3081.7e308有char8-128127无unsigned char80255说明:数据类型所占字节数随机器硬件不同而不同,上表以IBM PC机为例:语言程序设计 第二章数据描述C一、变量的概念一、变量的概念 变量是指在程序的变量是指在程序的执行过程中其值可以执行过程中其值可以发生变化的量。发生变化的量。2.2 变量与常量变量与常量#define PI 3.14void main( )float r,s; s=12.5; r=sqrt(s/PI); printf(“半径为半径为:%f”,r);变量变量二、变量的四要素二、变量的四要素 变量名变量名 类型类型 值值 存储单元存储单元1 变量名变量名 变量名变量名:是变量的标识符。是变量的标识符。 注意:注意:遵循标识符的命名规则。遵循标识符的命名规则。 一般使用小写字母,一般使用小写字母,不超过不超过8个字符。个字符。 如:如:sum ,num_1 2 变量的类型变量的类型 类型不同存储不同类型不同存储不同 3 变量的值变量的值 。 4 变量的存储单元变量的存储单元 整型变量存放形式。整型变量存放形式。int i; /* 定义为整型变量定义为整型变量 */i=10; /* 给给i赋以整数赋以整数10 */ 内存中实际存放的情况。内存中实际存放的情况。实际上,数值是以补码表示的实际上,数值是以补码表示的-10的补码的补码-111-32767-32767?三、变量的定义三、变量的定义在在C语言中,要求对所有用到的变量作强制定义,语言中,要求对所有用到的变量作强制定义,也就是也就是“先定义,后使用先定义,后使用”。例:例: char a1,a2=a;(可以可以赋赋初初值值,但但int a=b=c=3;错错) int a=4, ,b; (指定指定变变量量a、 、b为为整型整型) float x,y,z=10.7; unsigned int c, ,d; ; (指定指定变变量量c、 、d为为无符号短整型无符号短整型) long e, ,f; ; (指定指定变变量量e、 、f为长为长整型整型)1 定义格式定义格式: 类型说明符类型说明符 变量名列表;变量名列表; 四、说明四、说明 整型数据溢出:整型数据溢出:在在turbo c中一个中一个int型变量的型变量的 范围范围:-32768-32767,32767+1,会出现什么情况,会出现什么情况?例:整型数据的溢出。例:整型数据的溢出。void main()int a,b; a=32767; b=a+1; printf(%d,%d,a,b); 结果结果:32767, -32768 解决办法解决办法? 浮点型变量浮点型变量1. 浮点型数据在内存中的浮点型数据在内存中的存放形式存放形式 :4个字节个字节(32位位)。2.浮点型变量的分类浮点型变量的分类 4B单精度单精度(float型型) :接收接收7位有效数字位有效数字 8B双精度双精度(double型型):15位有效数字位有效数字 16B长双精度型长双精度型(long double):一般一般18位位例例:float x,y; (指定指定x、y为单精度浮点数为单精度浮点数) double z; (指定指定z为双精度浮点数为双精度浮点数) 3. 浮点型数据的舍入误差浮点型数据的舍入误差 由于有限的存储单元,提供由于有限的存储单元,提供有限有效数字有限有效数字,有效位以外的数字将有效位以外的数字将被舍被舍去。由此可能会产生一去。由此可能会产生一些误差。些误差。例如,例如,a 加加 20的结果显然应该比的结果显然应该比a大。请分析下大。请分析下面的程序:面的程序:例例3.4 浮点型数据的舍入误差。浮点型数据的舍入误差。void main()float a,b; a = 123456.789e5; b = a + 20 ; printf(%f ,%f n,a, b); b应为应为12345678920 结果:结果:a和和b的值都是的值都是 12345678848.000000,可以看到前可以看到前8位是准确的,位是准确的,把把20加在后几位上,是加在后几位上,是无意义的。应当避免将无意义的。应当避免将一个很大的数和一个很一个很大的数和一个很小的数直接相加或相减小的数直接相加或相减,用程序计算用程序计算1.0/3*3的结的结果并不等于果并不等于1。 字符变量字符变量 一个字符型变量只能放一个字符。一个字符型变量只能放一个字符。 字符变量的定义形式如下:字符变量的定义形式如下:charc1,c2;c1=a;c2=b; 一个字符变量在内存中占一个字节。一个字符变量在内存中占一个字节。存储单元中放什么存储单元中放什么?。 字符型数据和整型数据之间可以转换,字符型数据和整型数据之间可以转换, 但有个条件但有个条件:0-255(1个字节个字节)。 一个字符数据:字符形式输出一个字符数据:字符形式输出 整数形式输出整数形式输出 可以对字符数据进行可以对字符数据进行算术运算算术运算 c= a+11; d=c+d;字符数据与整型数据可以互相赋值。如:字符数据与整型数据可以互相赋值。如: int i, s; char c; i=a; c=97;s=i+c; 编译程序根据变量定义为其分配指定字节的内存单元.地址int a=1, b=-3,c; Scanf(“%d”,&c);abc2字节2字节2字节地址地址.内存1-3随机数v变量初始化:定义时赋初值 例: int a=2,b,c=4; float data=3.67; char ch=A; int x=1,y=1,z=1; int x=y=z=1;v变量的使用:先定义,后使用例1 int student; stadent=19; /Undefined symbol statent in function main 例2 float a,b,c; c=a%b; /Illegal use of floating point in function main v变量定义位置:一般放在函数体开头void main() int a,b=2; float data; a=1; data=(a+b)*1.2; printf(“data=%fn”,data);变量定义可执行语句void main() int a,b=2; a=1; float data; data=(a+b)*1.2; printf(“data=%fn”,data);Ch2_005.c例例: 向字符变量赋以整数。向字符变量赋以整数。#include void main() char c1,c2; c1=97; c2=98; printf(%c ,%cn,c1,c2); printf(%d ,%dn,c1,c2); 程序运行时输出如下:程序运行时输出如下:a,b97,98例例3.7大小写字母的转换。大小写字母的转换。 #include void main() char c1,c2; c1=a; c2=b; c1=c1-32; c2=c2-32; printf(%c%c,c1,c2); 运行结果为运行结果为ABprintf(%c,%dn,c1+1,c1); printf(%c,%dn,c2+1,c2);运行结果为运行结果为B, 65 C, 66一、概念一、概念常量常量:在程序的执行过程在程序的执行过程中,值不能变化的量。中,值不能变化的量。 常量常量#define PI 3.14 void main( )float r,s; s=12.5; r=sqrt(s/PI); printf(“半径为:%f”,r);常量常量二、种类二、种类1一般常量:一般常量: 一个数或一个数或字符。字符。123123(整)(整)、A A (字符)(字符) 、4.6、-1.23(实)(实)2 符号常量:用一个标符号常量:用一个标识符表示一个常量。识符表示一个常量。 PI、PRICE一般常量一般常量符号常量符号常量符号常量的使用符号常量的使用: 注意 定义语句在函数的外部定义语句在函数的外部: :在首部的上面。在首部的上面。 标识符一般使用标识符一般使用大写大写字母,字母,变量用小写,变量用小写, 且不与程序中的其它标识符相同。且不与程序中的其它标识符相同。 定义格式:定义格式: #define 标识符标识符 常量常量 例:例: #define PI 3.14 #define G 9.8 注意:符号常量不同于变量,它注意:符号常量不同于变量,它的值在其作用域的值在其作用域(本例中为主函数本例中为主函数)内不能改变,也不能再被赋值。内不能改变,也不能再被赋值。如再用以下赋值语句给如再用以下赋值语句给PI赋值是赋值是错误的。错误的。 PI = 3.9 ;表示方法表示方法 十进制整数:十进制整数:0 9,+,- 如:如:a=123,-543,0 八进制整数:八进制整数: 0 7,+、-,以数字,以数字0开始。开始。 如:如:a=0123, 054 十六进制整数:十六进制整数: 0 9、A F ,+、-, 以以 0 x开始。开始。 如:如:a=0 x123,0 xa1三、常量类型及表示方法三、常量类型及表示方法1 整型常量整型常量类型类型 基本整型基本整型:值在:值在-32768+32767(2个字节)个字节) 短整型短整型:值在:值在-32768+32767 (2个字节)个字节) 长整型长整型:值在:值在-2147483648 +2147483647 (4个字节)个字节) 无符号整型无符号整型:值在:值在0+65536 (2个字节)个字节) 长整型长整型数的表示:数的表示: 在整型常量的后面加一个字母在整型常量的后面加一个字母l或或L。 如:如:345L 无符号整型无符号整型数的表示:数的表示: 在整型常量的后面加一个字母在整型常量的后面加一个字母U。 如:如:234u(1) (1) 一个整数,如果其值在一个整数,如果其值在-32768-32768+32767+32767范围内,认范围内,认为它是为它是intint型,它可以赋值给型,它可以赋值给intint型和型和long intlong int型变量。型变量。(2) (2) 一个整数,如果其值超过了上述范围,而在一个整数,如果其值超过了上述范围,而在- -21474836482147483648+2147483647+2147483647范围内,则认为它是长整型,范围内,则认为它是长整型,可以将它赋值给一个可以将它赋值给一个long intlong int型变量。型变量。 intint?2 实型常量实型常量表示:表示: 十进制小数形式:由数字、小数点、十进制小数形式:由数字、小数点、+ +、- -组成。组成。 如:如:3.141593.14159,-2.767-2.767 指数形式:由数字、小数点、指数形式:由数字、小数点、+ +、- -、字母、字母e e或或E E 组成。组成。aenaen等价于等价于a a1010n n 如:如:1.2345e-191.2345e-19,0.3215E+230.3215E+23 规范化的指数形式:在字母规范化的指数形式:在字母e e或或E E之前的小数部分之前的小数部分 中,小数点左边应有一位中,小数点左边应有一位( (且只能有一位且只能有一位) ) 非零非零的数字的数字(输出时)(输出时)类型类型 单精度单精度floatfloat:有效数位为:有效数位为7 7位。位。(32bit)(32bit) 双精度双精度doubledouble:有效数位为:有效数位为1515位。位。(64bit)(64bit) 表示时表示时: :默认为默认为doubledouble型,可在数的后面型,可在数的后面 加字母加字母f或或F表示表示floatfloat型。型。 1.5f1.5f13.456F13.456F2.42.423.67523.6753 字符常量字符常量表示表示 用用引号引号( (即撇号即撇号) )括起来的一个字符。括起来的一个字符。 如:如:aa,33,AA特殊形式的字符常量特殊形式的字符常量( (转义字符,转义字符,P48 P48 表表3.3 )3.3 ) 以以“”开始的一个字符序列,代表特殊的含义。开始的一个字符序列,代表特殊的含义。 如:如:“n” 表示一个换行符表示一个换行符这是一种这是一种“控控制字符制字符”也称也称转义字符转义字符,在屏幕上是不能显示的。,在屏幕上是不能显示的。&字符常量字符常量 v字符常量的字符常量的值值:该字符的:该字符的ASCIIASCII码码值值转义字符及其含义:转义字符含义nvradddtbf“xhh转义字符含义换行垂直制表回车响铃单引号3位8进制数代表的字符水平制表退格换页反斜线双引号2位16进制数代表的字符如 101 -A 012 -n 376 - x61 -a 60 -0 483 -()例:A-101-x41-65如 A65, a97, 048 , n10如 a A ? n 101v转义字符转义字符: :反斜线后面跟一个字符或一个代码值表示反斜线后面跟一个字符或一个代码值表示例 转义字符举例(ch2_001.c,ch2_004.c) void main() printf(101 x42 Cn); printf(I say:How are you?n); printf(C Programn); printf(Turbo C);运行结果:(屏幕显示)A B CIsay:”How are you?”C ProgramTurbo C例 void main() printf(“Yb=n”); 运行结果:屏幕显示:=打印机输出:例例3.5转义字符的使用。转义字符的使用。 #include void main() printf( ab ct derftgn); printf(htibbj k); 显示屏上最后看到是:显示屏上最后看到是: f gde h j k原有的原有的“ ab c ”被被ftft 刷去。刷去。tt刷到下一个刷到下一个制表区制表区(8 8个格个格内)内)v字符常量与字符串常量不同&4.字符串常量字符串常量v定义:用双引号(“”)括起来的字符序列v存储:每个字符串尾自动加一个 0 作为字符串结束标志h e l l o 0例 字符串“hello”hello”在内存中a a 0例 a“a”例 空串 “”0例: char ch; ch=“A”; 例: char ch; ch=A; 语言程序设计 第二章数据描述C例如例如:10+a+1.5-8765.1234 *b是合法的。在进行运算时,不是合法的。在进行运算时,不 同类型的数据要先转换成同一同类型的数据要先转换成同一类型,然后进行运算。转换的类型,然后进行运算。转换的规则按图规则按图3.10所示。所示。各类数值型数据间的混合运算各类数值型数据间的混合运算横向向左的箭头表示必定的转换横向向左的箭头表示必定的转换(只要运算)只要运算)纵向的箭头表示当运算对象为不同类型时转换。纵向的箭头表示当运算对象为不同类型时转换。 不同类型数据间的转换隐式转换v什么情况下发生l运算转换-不同类型数据混合运算时l赋值转换-把一个值赋给与其类型不同的变量时l输出转换-输出时转换成指定的输出格式l函数调用转换-实参与形参类型不一致时转换v运算转换规则:不同类型数据运算时先自动转换成同一类型语言程序设计 第二章数据描述Cdoublefloatlongunsignedintchar,short低高说明:必定的转换运算对象类型不同时转换例 char ch; int i; float f; double d;ch/i + f*d - (f+i)intintdoubledoubledoubledoubledoubledoubleintintdoubledoubledoubledoubledoubledouble10+a +i*f - d/l例 int i; float f; double d; long l;强制转换:转换得到所需类型的中间变量,原变 量类型不变. (int)(x+y) (显式转换)v一般形式:(类型名)(表达式) 例 (int)x%y (double)(3/2) (int)3.6 例 void main() float x; int i; x=3.6; i=(int)x; printf(“x=%f,i=%d”,x,i); 结果:x=3.600000,i=3int(x+yint(x+y) )精度损失问题较高类型向较低类型转换时可能发生运算符和表达式C运运算算符符算术运算符:(算术运算符:(+ - + - * * / % + - / % + -)关系运算符:(关系运算符:( = != = !=)逻辑运算符:(!逻辑运算符:(! & |& |)位运算符位运算符 :(:( | & | &)赋值运算符:(赋值运算符:(= = 及其扩展)及其扩展)条件运算符:(条件运算符:(?:?:)逗号运算符:(逗号运算符:(, ,)指针运算符:(指针运算符:(* * & &)求字节数求字节数 :(:(sizeofsizeof)强制类型转换:(类型)强制类型转换:(类型)分量运算符:(分量运算符:(. -. -)下标运算符:(下标运算符:()其它其它 :(:(( ) -( ) -)学习运算符应注意:v运算符功能运算符功能v与运算量关系与运算量关系l要求运算量个数要求运算量个数l要求运算量类型要求运算量类型v运算符优先级别运算符优先级别v结合方向结合方向v结果的类型结果的类型算术运算符和表达式v基本算术运算符:基本算术运算符: + + - - * * / % / %l结合方向:从左向右结合方向:从左向右l优先级:优先级: 负号:负号:- - - -* * / % / % - - + -+ - (2) (3) (4) (2) (3) (4)