C语言程序设计 第2章 数据类型.ppt_第1页
C语言程序设计 第2章 数据类型.ppt_第2页
C语言程序设计 第2章 数据类型.ppt_第3页
C语言程序设计 第2章 数据类型.ppt_第4页
C语言程序设计 第2章 数据类型.ppt_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

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

文档简介

1、,第2章,数据类型与基本操作,本章要点,数据类型; 常量、变量和标识符; 算术运算符、 赋值运算符、自增/自减运算符及表达式; 数据类型转换、输入输出函数,本章主要内容是常量、变量等基本概念和各种运算符号 的用法,及输入输出函数的用法,大部分内容需要记忆, 学习时不但要掌握运算符的写法,还要掌握其优先级及 结合性,应注意归纳,列出记忆要点。,学习方法建议,本章内容,2.1 基本数据类型与常数的表示,2.2变量与内存,2.3运算符与表达式,2.4 输入输出函数,2.1 基本数据类型与常数的表示,2.1.1 基本数据类型,数据类型,构造类型,指针类型,空类型(无值类型) void,上一页,下一页,

2、返 回,2.1.2 常量,1. 整型常量,(1)十进制整数:由正负号及0 9 十个数字组成,如:255、-32768、0等; (2)八进制整数:以0开头(不是字母“o”),后跟0 7 八个数字组成,如:010、027等; (3)十六进制整数:以0 x或0X开头,后跟0 9十个数字及A F(或a f)六个字符(分别对应数字10、11、12、13、14、15)组成,如:0XDE、0 x5A等;,在C语言中,常量有数值常量(包括整型常量和实型常量)、字符常量、字符串常量及符号常量等。,上一页,下一页,返 回,1小数形式:由数字、正负号和小数点组成(必须要有小数点)。 如0.12、.50、-25.、0

3、.0 2指数形式:书写时,e(或E)之前必须有数字,e (或E)后面的指数必须为整数。 如1e2、9.5e-3、35e-6,分别代表1102,9.510-3,3510-6。,2. 实型常量,实型常量即实数,又称为浮点数,上一页,下一页,返 回,3. 字符型常量,常见的转义字符如表下表。,C语言中还允许使用一种特殊形式的字符常量,称为转义字符, 它们总是以一个反斜线开头后跟一个特定的字符,用来代表某一 个特定的ASCII字符,这些字符常量也必须括在一对单引号内。,字符常量是用单引号括起来的一个字符,如A、d、3、等; C语言规定,所有字符常量都作为整型量来处理,在计算机内部,其对 应的整数值就是

4、ASCII字符集中该字符的序号(即:ASCII码值)。 因此字符常量A的值为65、a的值为97, 0的值为48, (空格符)的值为32。,上一页,下一页,返 回,4. 字符串常量,字符串在内存中占用的字节数要比字符串长度多1,因为C语言总是自动地在字符串尾部加上一个转义字符0(空字符,其ASCII码值为0)作为字符串的结束标志,系统据此判断字符串是否结束。,字符串常量是用双引号括起来的若干个字符的字符序列,如“c”、 “abc” 、“ ”、“”等。字符串常量中双引号仅起定界符的作用,并不是字符串中的字符,因此双引号之间的字符个数才是字符串的长度。,上一页,下一页,返 回,5.符号常量,用标识符

5、(即符号)来表示常量,称符号常量。,在C语言中有两种方法定义符号常量: 使用编译预处理命令define,例如:#define PI 3.14159。 使用常量说明符const,例如: const float PI=3.14159。,上一页,下一页,返 回,例 符号常量的使用#include #define PRICE 30void main()int num,total; num=10; total=num*PRICE; printf(total=%dn,total);,运行结果: total=300,上一页,下一页,返 回,【例2.1 】 几个常数的输出 #include main() pr

6、intf(输出各种常数:n); printf(整型常数:%dt实型常数:%ft字符常数:%cn,625,0.325e-2,!); ,2.2 变量与内存,2.1.1 标识符,用来标识变量名、符号名、函数名、数组名、文件名以及一些具有专门含义的名字的有效字符序列,称为标识符。它必须遵循以下规则: (1)第一个字符必须是英文字母或下划线; (2)第二个字符及以后的字符可以是英文字母、数字和下划线; (3)字符长度一般不超过8个(可因机器及C编译系统而不同); (4)英文字母的大小写不等价,即C语言区分字母的大小写;,C语言的标识符可以分为以下三类: (1)关键字 (2)预定义标识符 (3)用户标识符

7、,例:判断下列标识符号合法性 sum Sum M.D day Date 3days student_name #33 lotus_1_2_3 char ab _above $123,上一页,下一页,返 回,变量必须先定义后使用,C语言在定义变量的同时说明该变量的类型,系统在编译时就能根据其类型为它分配相应大小的存储单元。,2.2.2 变量的定义与初始化,变量的定义格式为: 数据类型 变量名表; 如: int a,b; /*定义a,b为整型变量*/ float x; /*定义x为单精度实型变量*/,C语言提供了字符型、整型、实型等基本数据类型的同时,也提供了数组、结构体、共用体等构造类型,另外还

8、提供了指针类型和空类型。,上一页,下一页,返 回,例2.2 整型和单精度型变量 #include main() int a,b,c; float x; a=625; b=-325; c=a+b; x=3.15; printf(a=%d,b=%d,c=%d,x=%fn,a,b,c,x); ,变量与内存的关系,上一页,下一页,返 回,(1)基本型的整型变量用关键字int进行定义,例如: int i,j,k; /*定义变量i,j,k为整型*/ C语言规定:可以在定义变量的同时给变量赋初值,称为变量初始化。 如:int i=1,j=0,k=2; (2)短整型变量用关键字short int或short定

9、义,如short a,b; (3)长整型变量用关键字long int或long定义,如long x,y; 若变量不指定为无符号型(unsigned),则隐含为有符号型(signed)。,1 整型变量,整型变量可以分为有符号型和无符号型两种。有符号型和无符号型又分别包含基本型、短整型、长整型三种。,上一页,下一页,返 回,VC+6.0中定义的整型数所占的字节数和数值范围。,上一页,下一页,返 回,在一般的计算机系统中,为float类型的变量分配4个字节的存储单元,为double类型的变量分配8个字节的存储单元。 在VC+6.0中float类型数值范围约在-10381038之间,并提供7位有效字位

10、;double类型的数值范围约在-1030810308之间,并提供16位左右有效字位。 在内存中,实数一律是用指数形式存放的。 注意:在计算机中可以精确地存放一个整数,不会出现误差,但整数范围比实数小。实数的范围比整数大,但往往存在误差。,2. 实型变量,C语言中实型变量分为单精度型和双精度型两种,分别用关键字float和double进行定义。 例如: float a,b; double c,d;,例2.3 长整型与双精度型的比较 #include main() long a=123456789L; double x=2.0,y; y=x/3.0; printf(a=%ld,y=%20.18f

11、n,a,y); ,上一页,下一页,返 回,C语言中,字符变量用关键字char进行定义,在定义的同时可以赋初值。 例如:char ch1=A,ch2=B,ch3; 字符变量在内存中占一个字节,可以存放ASCII字符集中的任何字符。,3. 字符型变量,当把字符放入字符型变量中时,字符变量中的值就是该字符的ASCII代码值,所以字符变量可以作为整型变量来处理,可以参与整型变量所允许的任何运算。 例如:char c1,c2,c3;int k=5; c1=1; c2=c1+1; c3=(c2+32+k)%25,例2.4 字符数据与整型数据 #include main() char ch1,ch2; ch

12、1=a; ch2=65; printf(ch1=%c,ch1=%dn,ch1,ch1); printf(ch2=%c,ch2=%dn,ch2,ch2); ,上一页,下一页,返 回,例2.5 将小写字母转成大写字母 #include main() char ch1=b,ch2; int i; i=a-A; ch2=ch1-i; printf(ch1=%c,ch2=%c,i=%dn,ch1,ch2,i); ,上一页,下一页,返 回,2.3 运算符与表达式,2.3.1 算术运算符与表达式,说明: (1)除法运算符 / ,若两侧运算对象均为整型值时,则商也为整型,即舍掉小数部分。例如:5/2的结果为2

13、,1/2的结果为0 如果参与运算的两个数中有一个为实数,则运算结果为实数。 例如: 5.0/2的结果为2.5, 1/2.0的结果为0.5,3.0/2.0的结果为1.5 (2)求余运算符%,仅用于整型变量或整型常量,结果为整除后的余数,其符号在VC+6.0系统中取决于被除数。 例如:5%3的值为2,2%3的值为2,-7%4的值为-3,7%-4的值为3,-7%-4的值为-3。 (3)优先级 *、/、%,+、- (4)结合性(运算方向) 从左到右,加,减,乘,除及求余(取模)5种,分别用+,-,*,/,%来表示。,1. 算术表达式,2. 算术表达式,算术表达式采用线性书写形式,运算对象和运算符都要写

14、在一条横线上。 例如:2+sqrt(c)*b就是一个合法的算术表达式。,运算规则和要求如下: (1)在算术表达式中,可使用多层圆括号,但左右括号必须配对,圆括号优先级最高。 (2)若表达式中运算符的优先级相同时,则按运算符的结合方向进行。,例2.6 将一个三位整数365转换为563,调换个位与百位数字 #include main() int x=365,a,b,c,y; c=x%10; b=x/10%10; a=x/100; y=c*100+b*10+a; printf(x=%d,y=%dn,x,y); ,上一页,下一页,返 回,2.3.2 赋值运算符及其表达式,C语言的赋值运算符为“=”,它

15、的作用是将赋值运算符右边表达式 的值赋给其左边的变量。形式如下: 变量名=表达式,赋值表达式的处理过程是:先计算“=”右侧表达式的值 ,然后将该值赋给左侧的变量。 例如:a=1,b=a+2, 前者是把常量1赋给变量a,后者是将表达式a+2的值赋给变量b。,赋值运算符的左侧只能是变量,不能是常量或表达式。,右结合性,C语言规定可以使用10种复合赋值运算符,其中与算术运算有关的复合赋值运算符是:+=、-=、*=、/=、%=。,表达式n+=1的运算规则等价于n=n+1,表达式n*=m+3的运算规则等价于n=n*(m+3),,例2.7 变量的读写操作 #include main() int a=15,

16、b=23,c=5,t; printf(a=%d,b=%d,c=%dn,a,b,c); t=a;a=b;b=t; printf(a=%d,b=%dn,a,b); c=c+1; printf(c=%dn,c); ,上一页,下一页,返 回,2.3.3 数据类型转换,1. 自动转换,上一页,下一页,返 回,字符型整型单精度实型双精度实型,例如: float y; int x=16; y=40/x; y结果是2.0,而不是2.5。,转换方向,2. 强制转换,一般形式如下所示: (类型名)(表达式),例如:(int)(a+b),将a+b的结果强制转换成int型;若a=3,b=4,则(float)a/(fl

17、oat)b的结果为0.75,而(float)(a/b)的结果为0,注意:经强制类型转换后, 得到的是一个所需类型的 中间变量,原来变量的类 型并没有发生任何变化。,上一页,下一页,返 回,2.3.4 常用数学函数,1.头文件包含 #include 2.函数原型 绝对值函数 int abs(int x) 绝对值函数 double fabs(double x) 平方根函数 double sqrt(double x) 幂函数xy double pow(double x,double y) 3.参数的定义域 负数不能求平方根,三角函数的自变量为弧度,例2.8 几个常用数学库函数的作法 #include

18、 #include main() printf(abs(-5)=%d,abs(5)=%dn,abs(-5),abs(5); printf(sqrt(2)=%20.16fn,sqrt(2); printf(pow(2,3)=%f,pow(2.0,0.5)=%fn,pow(2,3),pow(2,0.5); printf(exp(1)=%fn,exp(1); printf(sin(x)=%fn,sin(30*3.14/180); ,上一页,下一页,返 回,2.3.5 几个特殊的运算符,1. 自增/自减运算符及其表达式,自增运算符(+)和自减运算符(-)都是单目运算符, 其作用是使变量的值增1或减1。

19、如i+ +,相当于i=i+1;i- -; 相当于i=i-1。因此,自加/自减运算本身也是一种赋值运算。,自增/自减运算符构成表达式时,既可以前缀形式出现,也可以后缀形式出现,但其意义不同,其运算对象只能是变量,不能是常量或表达式。 +i,-i /* 在使用i之前,先使i的值加(减)1 */ i+,i- - /* 在使用i之后,再使i的值加(减)1 */,例如: i=2; j=+i; /* i,j的值均为3 */ i=2; j=i+; /* j的值为2,i变为3 */ i=2; j=-i; /* i, j的值均为1 */ i=2; j=i-; /* j的值为2,i变为1 */,例2.9 自增运算

20、 #include main() int a=3,b=4,c,d; c=a+; d=+b; printf(a=%d,b=%d,c=%d,d=%dn,a,b,c,d); ,上一页,下一页,返 回,2. 逗号运算符及其表达式,逗号运算符可将两个或两个以上的表达式连接起来构成逗号表达式。 逗号表达式的形式为:表达式1,表达式2, 表达式n;,逗号表达式的执行 过程是:先求表达式1 的值,再求表达式2 的值,再求表 达式n的值,表达式 n的值就是整个逗 号表达式的值。,不是任何地方出现的 逗号都作为逗号运算符, 如printf (d,d,a,b); 其中的逗号不是运算符, 而是分隔符。prin pri

21、nttf (“d,d”, (a,b,c),b); 其中( a,b,c)中的“,” 是逗号运算符,,上一页,下一页,返 回,2.4 输入与输出函数,文件开头应有以下预编译命令: #include 或 #include stdio.h,2.4.1 格式输出函数(printf( ),1printf( )函数的一般格式 printf(格式控制,输出表列),格式控制:是用双引号括起来的字符串,它包括: 格式说明:由“%格式字符”组成,如%d,%f等。其作用是将输出的数据转换为指定的格式输出。 普通字符:原样输出。,输出表列:是需要输出的一些数据,可以是常量、变量和表达式。 例如:printf(“a=%d

22、,b=%d,a,b);,上一页,下一页,返 回,2格式字符,(1)d格式字符:以十进制整数形式输出数据。, %d:按整型数据的实际宽度输出。 %md:m为一个正整数,用以指定输出数据所占的宽度。 如果数据的位数小于m,则右对齐,左端补以空格, 若数据位数大于m,则按实际位数输出。 %-md:m为一个正整数,用以指定输出数据所占的宽度。 如果数据的位数小于m,则左对齐,右端补以空格, 若数据位数大于m,则按实际位数输出。 %ld:输出长整型数据。,对于长整型数据也可以指定字段宽度m,其用法与整型数据完全相同。,上一页,下一页,返 回,【例2_1b】 运行下面的程序,观察printf( )的输出效

23、果。 【程序代码】 #include stdio.h main( ) int a=123; long b=12345; printf(a=%dtb=%ldn,a,b); printf(a=%2dtb=%3ldn,a,b); printf(a=%5dtb=%8ldn,a,b); printf(a=%-5dtb=%-8ldn,a,b); ,运行结果如下:,(1)格式字符必须用小写字母,如%d不能写成%D。 (2)可以在printf函数中的“格式控制”字符串内包含“转义字符”,如“n”、“t”等。,上一页,下一页,返 回,(2)c格式符:用来输出一个字符。,一个整数,只要它的值在0255范围内,也可

24、以用字符形式输出, 在输出前,系统会将该整数作为ASCII码转换成相应的字符; 反之,一个字符数据也可以用整数形式输出。C格式符也可以加 宽度说明,其用法同格式符d一样。,【例2_2b】 字符数据的输出。 #include stdio.h main( ) char c=b; int i=98; printf(%c,%dn,c,c); printf(%3c,%3dn,i,i); ,上一页,下一页,返 回,(3)s格式符:用来输出一个字符串, %s,按实际宽度输出一个字符串,例如: printf(%s,hello); 输出结果为: hello %ms,输出的字符串占m列,如字符串本身长度大于m,

25、则突破m的限制,将字符串全部输出。若串长小于m, 则右对齐左补空格。,上一页,下一页,返 回, %f,不指定字段宽度,由系统自动指定,使整数部分全部输出, 并输出6位小数。双精度数也可以用%lf格式输出。 说明:对于单精度数,前7位是有效的数字,而对于双精度数, 前16位是有效的。 %m.nf指定输出的数据共占m列,其中有n位小数。 如果数值长度小于m,则左端补空格。 %-m.nf与%m.nf基本相同,只是使输出的数值向左端靠, 右端补空格。,【例2_4b】 输出下列单精度和双精度实数。 #include stdio.h main ( ) float f1,f2; double d1,d2;

26、f1=111111.111; f2=222222.222; d1=1111111111111.111111111; d2=2222222222222.222222222; printf(%fn,f1+f2); printf(%fn,d1+d2); ,(4) f格式符:用来输出实数(包括单、双精度),以小数形式输出。,上一页,下一页,返 回,【例2_5b】 输出实数时指定小数位数。 【程序代码】 #include stdio.h main( ) float f=123.456; printf(%f%10f%10.2f%.2f%-10.2fn,f,f,f,f,f); ,上一页,下一页,返 回,2.

27、4.2 格式输入函数(scanf( ),1scanf( )函数的一般格式 scanf(格式控制,地址表列),格式控制:同printf()函数;但double型数据用%lf或%le,地址表列:由若干个地址组成,可以是变量的地址,或字符串的首地址。,【例2_6b】 用scanf( )函数输入数据。 【程序代码】 #include stdio.h main( ) int a,b,c; scanf(%d%d%d, ,上一页,下一页,返 回,2使用scanf函数时应注意的问题,(1)输入数据时不能规定精度, 例如:float a;scanf(%7.2f,是不合法的。 (2)scanf函数中的“格式控制”后面应当是变量地址, 而不应是变量名。 (3)“格式字符串”中出现的普通字符(包括转义字符形式 的字符),务必原样输入。 (4)输入数据时,遇到以下情况,系统认为该数据结束 遇到空格,或者回车键,或者Tab键。 遇到非法输入。例如,在输入数值数据时, 遇到字母等非数值符号(数值符号仅由数字0-9、小数点 和正负号构成)。 (5)使用格式说明符“%c”输入单个字符时, 空格可作为有效字符被输入。,上一页,下一页,返 回,【例2_7b】 遇非法输入。 【程序代码】 #include stdio.h main( ) int num; char c; float f; scan

温馨提示

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

评论

0/150

提交评论