• / 67
  • 下载费用:10 金币  

第2章 C语言的基本数据类型.ppt

关 键 词:
第2章 C语言的基本数据类型.ppt
资源描述:
第2章 C语言的基本数据类型 数据是程序的基本组成元素,是被处理的对象,在程序中起到纽带作用,它把C语言中的各个函数联系起来,相互配合完成某些功能。因而熟练地掌握数据类型的特点、常量和变量的使用方法,是进行程序编写的基础。本章将介绍C语言中的各种数据类型。通过本章的学习,使读者了解C语言常量与变量的含义,并掌握各种数据类型间的混合运算。,C语言数据类型 常量与变量 整型数据 实型数据 字符型数据 各类数值类型间的混合运算,2.1 C语言数据类型 著名计算机科学家Nikiklaus Wirth曾经提出了一个非常著名的公式:数据结构+算法=程序。可见在一个程序中必须存在以下两点: (1)数据结构:是指程序中对数据的具体描述及数据的组织形式,它包括数据的类型和数据的组织形式。不同的计算机语言所允许定义和使用的数据结构是不同的,比如在C语言中提供的“结构体”数据结构,而在FORTRAN语言中就不支持这种数据结构。 W,(2)算法:是指程序中具体的操作步骤,它处理的对象是数据,而数据是以某种特定的形式存在(如整数、实数、字符数等)于程序中,因而算法处理的对象实际上是各种不同的数据类型。 可以说算法是程序的灵魂,数据结构是程序的加工对象,在处理同一类问题时,如果数据结构不同,算法也不同。因而在考虑算法时,必须注意合理地选择数据结构。通常在处理复杂问题时,应当综合考虑数据结构和算法,选择最优的数据结构及算法。,在C语言中,数据结构通常是以数据类型的形式出现的,具体数据类型如图2.1.1所示。,,图2.1.1 C语言中的数据类型,2.2 常量与变量 常量和变量是C语言中的两种重要的数据组织形式。顾名思义,常量就是其值不能被改变的量;变量就是其值可以被任意改变的量。在C语言中,各类数据是计算机处理的主要对象,这些数据在计算机处理的过程中,就是以常量和变量的形式表达和存储的。,2.2.1 常量和符号常量 在C语言中,把在程序运行过程中其值保持恒定不变的数据称为常量。根据类型的不同可以将常量分为以下4种: (1)整型常量:是以整数形式存在的常量,如21,0,-21等。 (2)实型常量:是以浮点形式存在的常量,如2.6,-3.7等。 (3)字符常量:是以字符形式存在的常量,如‘a’,‘f ’,‘x’等。 (4)字符串常量:是以字符串形式存在的常量,如‘student’,‘for’,‘int’等。,常量不仅可以直接表示,也可以用一个标识符来代替,这种用标识符代表的常量称为符号常量,该标识符其实就是常量的别名。符号常量的一般格式如下: #define 标识符 字符串,例2.1 编写一个求圆面积的程序,要求输入圆的半径,输出圆面积。 程序 #include #define PI 3.14 main() { float rad,area; printf(“Input the radius of the round:\n“); scanf(“%f\n“, },输入 Input the radius of the round: 12.54↙ 输出 The area of the round is 493.770020 #define表示宏定义命令,一般情况下符号常量名用大写,变量名用小写,以示区别,在程序中使用符号常量,具有以下优点: (1)含义清楚。在定义符号常量时,可以按“见名知意”的原则为符号常量命名,这样在检查程序时可以很方便地分清常量的含义。比如可以用PI代表圆周率,用area表示面积等。,(2)修改方便。如果需要修改常量值时,只须在符号常量定义的位置修改即可,这样其值在整个程序中都将发生改变。 在C语言中,系统提供了一个测试某一种类型数据所占存储空间长度的运算符“sizeof”,其格式如下: sizeof(类型表示符) 例如:利用运算符sizeof求整型int所占的内存空间。 sizeof(int);,2.2.2 变量 变量就是在程序的运行过程中,其值可以根据需要经常更新的数据。变量可分为整型变量、实型变量、字符变量等。每个变量都必须具备4个基本要素,即变量名、变量值、变量对应的内存空间和变量的数据类型。,1.变量名 为了区分不同的变量,每个变量必须具有自己的名称,在对变量命名时应该遵循以下3点: (1)变量名只能由字母、数字和下画线3种字符组成。 (2)数字不能作为第1个字符。 (3)英文大写字母和小写字母是不同的字符。 下面是合法的标识符和变量名: num,day,mouth,year,max12,Student,_round等。 下面的则是不合法的标识符和变量名: M.D.jack,¥1982,#86,@sohu,ab,deng-lei等。,注意:在C语言中,英文大写字母和小写字母被认为是两个不同的字符,如num和NUM就是两个不同的变量名。一般情况下,变量名用小写字母表示,而符号常量名用大写字母表示。,2.变量的定义 常量在使用前可以不用定义,但是变量在使用前必须先定义。定义变量的实质就是在内存中为变量分配一定大小的空间。定义变量的一般形式如下: 例如: int num1,num2; /*定义整型变量num1,num2*/ float f1,f2; /*定义浮点型变量f1,f2*/ char c1,c2; /*定义字符型变量c1,c2*/,3.变量的用法 为变量赋值的过程称为变量的初始化。一般情况下,变量初始化的方法有以下3种: (1)定义变量的同时为其赋值。 例如:int num=5; (2)定义变量后再为其赋值。 例如: float pi; pi=3.14; /*此处“=”表示赋值运算符*/ (3)同时定义多个变量并分别为它们赋值。 例如:int num1=12;num2=14;num3=16;,2.3 整型数据 在C语言中,用于表达和处理整数的数据称为整型数据。整型数据有整型常量和整型变量之分。 2.3.1 整型常量 整型常量即整常量,在C语言中,整型常量可用以下3种形式表示: (1)十进制整数:如1982,-86,0等。 (2)八进制整数:通常把以数字0开头的数称为八进制数,如0154,-0123等。 其中,(0154)8=1×82+5×81+4×80=(108)10 (-0123)8=-(1×82+2×81+3×80)=(-83)10,(3)十六进制整数:通常把以数字0x开头的数称为十六进制数,如0x154,-0x123等。 其中, (0x154)16=1×162+5×161+4×160=(340)10 (-0x123)16=-(1×162+2×161+3×160)=(-291)10,例2.2 整型常量3种形式的应用。 程序 #include main() { int num1,num2,num3; num1=125; num2=0125; num3=0x125;,printf(“The algorism numbers are“); printf(“%d,%d,%d\n“,num1,num2,num3); /*以十进制形式输出*/ printf(“The octavo numbers are“); printf(“%o,%o,%o\n“,num1,num2,num3); /*以八进制形式输出*/ printf(“The hex numbers are“); printf(“%x,%x,%x\n“,num1,num2,num3); /*以十六进制形式输出*/ },输出 The algorism numbers are 125,85,293 The octavo numbers are 175,125,445 The hex numbers are 7d,55,125 分析 “%d”,“%o”,“%x”为格式转换控制符,分别用于输出十进制、八进制、十六进制整数。,2.3.2 整型变量及分类 整型变量是用来存储整型数据的,数据在计算机内部是以二进制形式存放的,根据数据的表示范围可以将整型变量分为3种。 1.有符号与无符号基本整型变量 有符号基本整型变量一般是以signed int表示的,或直接表示为int,通常用到的都是有符号基本整型变量;无符号基本整型变量一般是以unsigned int表示的,或表示为unsigned,使用无符号整型变量是为了充分利用变量的表示范围,节约内存。无符号整型变量只能存放不带符号的整数,如123,456等,而不能存放负数,如-123,-456等。,2.有符号与无符号长整型变量 有符号长整型变量一般以signed long int表示,或直接用long表示;无符号长整型变量一般以unsigned long int表示,或直接用unsigned long表示。 3.有符号与无符号短整型变量 有符号短整型变量一般以signed short int表示,或直接用short表示;无符号长整型变量一般以unsigned short int表示,或直接用unsigned short表示。ANSI标准定义了整数数据的字节长度和数的取值范围,如表2.1所示。 其中,表中“[ ]”内的部分表示可以省略,不影响变量在内存中数的取值范围,如[signed] [long] [int]与long是等价的。,表2.1 整型数据的字节长度和数的取值范围,例2.3 整型数据溢出的应用。 程序 #include main() { int num1=32767,num2; num2=num1+1; printf(“%d,%d\n“,num1,num2); } 输出 32767,-32768,分析 有符号基本整型变量int的范围是-32 768~32 767即215~(215-1),在上例中num1=32 767,由于计算机只识别二进制数,因而将num1转换成二进制数。当num1+1后,其结果超出了有符号基本整型变量的范围,此情况称为数据溢出,当达到最大值后,就又从最小值开始计数,因而当32 767加1后得不到32 768,而得到有符号基本整型变量取值的最小值-32 768,如图2.3.1所示。,num1:32 767,num2:-32 768,图2.3.1 整型数据溢出,2.4 实型数据 在C语言中,用于表达和处理实数的数据称为实型数据。实型数据有实型常量和实型变量之分。 2.4.1 实型常量 实型常量即实数,在C语言中又称为浮点数,实型常量可用以下两种形式表示: (1)普通形式:一般用小数表示,书写时小数点不能省略。如3.14,.15,5.,0.0等,其中,0.0,0.和.0是等价的。,(2)指数形式:即科学计数法,在C语言中,指数的表示主要靠字母“e”或“E”来实现,e或E跟一个整数表示以10为底数的幂。如3.14e-2表示3.14×10-2即0.0314,5.14E3表示5.14×103即5140。值得注意的是C语言中规定字母“e”或“E”的前后都必须有数字,并且后面的数字必须为整数,如e5,e.,3.14e2.5等都是不合法的指数形式。,例2.4 实型常量的应用。 程序 #include main() { float x,y; x=3.14e4; y=3.14E-4; printf(“x=%f\n“,x); printf(“y=%f\n“,y); } 输出 x=31400.000000 y=0.000314,2.4.2 实型变量及分类 实型变量是用来存储实数数据的,在C语言中,可将实型变量分为单精度实型变量、双精度实型变量和长双精度实型变量3种,实型数据的字节长度和数的取值范围如表2.2所示。 表中的有效位表示数据在前几位之内是有效的,而其后的数字则是计算机的随机数。如单精度float数123456.789只能保证前7位数字的准确性。,表2.2 实型数据的字节长度和数的取值范围,例2.5 实型变量的定义与应用。 程序 #include main() { float x; double y; x=123456.789; y=123456.789; printf(“x=%f\n“,x); printf(“y=%f\n“,y); } 输出 x=123456.789062 y=123456.789000,分析 从程序运行结果可以看出,x的值并不等于赋予的初值,而y的值等于赋予的初值。这是由不同数据类型变量的有效数字不同产生的差异。因而在需要定义较大的数时,应选取双精度double型,甚至选取长双精度long double型,以确保数据的准确性。,2.5 字符型数据 在C语言中,用于表达和处理字符的数据称为字符型数据。字符型数据有字符常量和字符变量之分。 2.5.1 字符常量 字符型常量是一个用单撇号括起来的字符。如‘a’,‘A’,‘%’,‘@’等。在C语言中,除了以上形式的字符常量外,还允许某些特殊形式的字符常量存在,这些字符常量是一种“控制字符”,称为转义字符。在屏幕上不能显示,只能产生相应的功能操作,如转义字符‘\n’表示换行。C语言中常用的转义字符及其含义,如表2.3所示。,表2.3 常用的转义字符及其含义,表中,“转义字符”的含义是将反斜杠“\”后面的字符转换成相应的意思。如‘\n’中的“n”,并不表示字母n,而是作为“换行”符;‘\f ’中的“f”不表示字母f,而是作为“换页”符。除了表中的转义字符外,在C语言中还可以用“\”加上1~3位八进制数表示的ASCII码来表示,如“\101”表示字母A;“\012”表示换行符。此外还可以用“\”加上1~2位十六进制数来表示,如“x0c”表示换页符;“x0d”表示回车符等。,例2.6 转义字符实例。 程序 #include main() { printf(“\n“); printf(“c\tprogram\n“); printf(“c\t\bprogram\n“); } 输出 c program c program,分析 程序中第1个输出语句是换行;第2个输出语句是在第1列,先输出字符“c”,然后跳到第9列输出字符串“program”;第3个输出语句是在第1列先输出字符“c”,然后跳到第9列准备输出,遇到一个退格控制符“\b”,回到第8列输出字符串“program”。,2.5.2 字符变量及分类 字符变量是用来存储字符常量的,在内存中,一个字符占一个字节。在C语言中,可将字符变量分为有符号字符变量(char)和无符号字符变量(unsigned char)。将一个字符常量存入字符变量中,实际是将该字符的ASCII码存入存储单元中,与整数的存储形式类似,因此一个字符数据既可以以字符形式输出,也可以以整数形式输出。字符数据的字节长度和数的取值范围如表2.4所示。,表2.4 字符数据的字节长度和数的取值范围,例2.7 字符变量实例。 程序 #include main() { char c1,c2; c1='a'; c2=97; printf(“%d\n“,c1); printf(“%d\n“,c2); } 输出 97 97,分析 由于字符‘a’的ASCII码是97。在本程序中,将字符‘a’赋予c1,将数字97赋予c2,然后分别以整型形式输出,结果都是97;可见字符型数据与整形数据之间是可以通用的。,2.5.3 字符串常量 在C语言中,使用单个字符的情况较少,大多时候是使用字符串。一般情况下,字符用单撇号括起来,如‘a’,‘b’等;而字符串用双撇号括起来,如“student”,“I love C Program!”等。,例2.8 字符串常量实例。 程序 #include main() { char c; c='a'; printf(“%c\n“,c); printf(“a\n“); printf(“I love C Program!\n“); } 输出 a a I love C Program!,分析 本程序中,第1个输出语句输出的是一个字符‘a’;第2个输出语句输出的是一个字符串“a”,其中包括两个字节,即‘a’和‘\0’;第3个输出语句输出的是一个字符串“I love C Program!”。在C语言中每个字符串的结尾都加一个字符串结束标志,以便系统辨别字符串的结束。规定以字符‘\0’作为字符串结束标志,其ASCII码为0。程序中3个输出语句的输出结果实际上在内存中分别如下:,a a\0 IloveCProgram!\0在C语言中,没有专门的字符串变量,如果将某个字符串存放在变量中,必须用字符数组,即将字符串中的每个字符存放在数组中的单元中,关于数组将在第7章介绍。,2.6 各类数值型数据间的混合运算 在C语言中,整型、实型、字符型数据之间可以在同一表达式中进行混合运算。在进行运算时,不同类型的数据先要转换成同一类型的数据,然后再进行运算。数据的转换方式有2种,即自动转换和强制转换。 1.自动转换 自动转换的规则有两点:一是低类型数据必须转换成高类型数据;二是赋值符号“=”右边的数据类型转换成左边的数据类型。具体转换规则如图2.6.1所示。,,图2.6.1 数据类型转换规则,数据类型自动换转时需要注意以下几点: (1)图中横向的箭头表示必定的转换。如字符数据char和短整型数据short必须先转换成整型数据int;实型数据float必须先转换成双精度型double,然后再进行各种运算。 (2)图中纵向箭头表示当运算对象为不同数据类型时的转换方向。如某个int型数据和某个long型数据进行运算,应先将int型转换成long型,再进行运算,其结果是long型。,(3)当进行赋值运算时,将赋值符号右边的类型转换成赋值符号左边的类型,其结果为赋值符号左边的类型。如果赋值符号右边为实型float,左边为整型int,转换时应去掉小数部分;当右边是双整型double,左边是实型float,转换时应做四舍五入处理。,例2.9 不同类型数据的混合运算实例。 程序 #include main() { int n,num=125; char c,ch='a'; float f,flo=3.14; n=num+ch*flo; c=num+ch*flo; f=num+ch*flo;,printf(“int-n=%d\n“,n); printf(“char-c=%c\n“,c); printf(“float-f=%f\n“,f); } 输出 int-n= 429 char-c= ¡ float-f=429.580017,2.强制转换 上面运算中数据类型的转换都是系统自动进行的,但有时设计者需要自己实现数据类型的转换,这种转换形式称为强制转换。其一般形式如下: (数据类型名)(表达式) 其中,数据类型名表示待强制转换的类型;表达式表示强制转换的对象。 例如:(int)(ch+flo)表示将表达式(ch+flo)的结果转换成整型数据。,例2.10 不同类型数据的混合运算实例。 程序 #include main() { int num1,num2,num3; long num4; char c; float f1,f2; num1=100; num2=500;,f1=45.55; f2=55.55; num3=num1*num2; num4=(long)num1*num2; /*符号“*”的优先级高于“()”,因而(long)num1*num2等价于(long)(num1*num2)*/ c=(char)f1*f2; printf(“%d,%ld,%c\n“,num3,num4,c); } 输出 -15536,50000,├,2.7 程序举例 例2.11 求一元二次方程ax2+bx+c=0的两个根x1和x2。其中a,b,c从键盘输入。 算法 在解方程前,首先应判断a及b是否为0,然后再判断b2-4ac的值是否为正,最后求方程的根,一元二次方程的根为 上式可以分解为设 ,则x1=p+q,x2=p–q,,,,,,程序 #include main() { float a,b,c; double x1,x2,p,q,disc; printf(“Please input a,b and c:\n”); scanf(“%f,%f,%f\n”,/*sqrt函数是系统函数,表示求二次方根,fabs表示求绝对值*/,if(a==0) if(b==0) printf(“Error!\n“); else printf(“The answer is x1=x2=%f\n“,-c/b); else if(disc0) { printf(“The answer is\n“); printf(“The real part is %f,\n“,p+q); printf(“The imag part is %f\n“,p-q); },else { printf(“The answer is\n“); printf(“x1=%f\n“,p+q); printf(“x2=%f\n“,p-q); } } 输入 Please input a,b and c: 12,24,12↙ 输出 The answer is x1=-1.000000 x2=-1.000000,输入 Please input a,b and c: 12,3,21↙ 输出 The answer is The real part is 1.191957, The imag part is -1.441957,本章小结 本章首先介绍了C语言中的常量与变量的定义及用法,然后结合实例重点介绍了常见的3种基本数据类型即整型数据、实型数据和字符数据的相关概念,最后介绍了整型数据、实型数据和字符数据之间的相互转换及混合运算。,习 题 二 一、填空题 1.C语言中,常量包括_________、_________、_________和_________。 2.C语言中,数据类型包括_________、_________、_________和_________。 3.若有定义:int a=0;则执行赋值语句a+=a*=a%=a-=15;后变量a中的值是_________。 4.printf(“%d\n”,(int)(2.5+3.0)/3);的输出结果是_________。 5.假设变量a为整型,则执行a=3+5,a*4;printf(“%d\n”,a);后的输出结果是_________。,二、选择题 1.下列数据中,不正确的数值或字符常量是( )。 A.0.825e2 B.5L C.0xabcd D.o13 2.以下字符中,不正确的C语言转义字符是( )。 A.'\\' B.'\018' C.'\xaa' D.'\t' 3.若有代数式,则错误的C语言表达式是( )。 A.a/b/c*e B.a*e/b*c C.a*e/b/c D.a*e/c/b,4.已知有以下变量定义: int i=8,k,a,b; unsigned long w=5; double x=1.42,y=5.2; 则不符合C语言语法的表达式是( )。 A.k=i++ B.(int)x+0.4 C.w+=-2 D.a=2*a=3,三、上机操作题 1.写出下列程序的运行结果。 #include #define num 35 #define cha 'f' #define flo 5.25 main() { int n; char c; float f; n=num*flo-cha; c=num*flo-cha; f=num*flo-cha; printf(“n=%d\nc=%c\nf=%f\n“,n,c,f); },2.编写程序求如下表达式的值。 (1) (2) (3) 其中:a=23,b=25,c=15,,
展开阅读全文
  微传网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
0条评论

还可以输入200字符

暂无评论,赶快抢占沙发吧。

关于本文
本文标题:第2章 C语言的基本数据类型.ppt
链接地址:https://www.weizhuannet.com/p-10200536.html
微传网是一个办公文档、学习资料下载的在线文档分享平台!

网站资源均来自网络,如有侵权,请联系客服删除!

 网站客服QQ:80879498  会员QQ群:727456886

copyright@ 2018-2028 微传网络工作室版权所有

     经营许可证编号:冀ICP备18006529号-1 ,公安局备案号:13028102000124

收起
展开