C案例教程教案word文档第二章.docx

上传人:b****5 文档编号:6587141 上传时间:2023-01-08 格式:DOCX 页数:19 大小:30.48KB
下载 相关 举报
C案例教程教案word文档第二章.docx_第1页
第1页 / 共19页
C案例教程教案word文档第二章.docx_第2页
第2页 / 共19页
C案例教程教案word文档第二章.docx_第3页
第3页 / 共19页
C案例教程教案word文档第二章.docx_第4页
第4页 / 共19页
C案例教程教案word文档第二章.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

C案例教程教案word文档第二章.docx

《C案例教程教案word文档第二章.docx》由会员分享,可在线阅读,更多相关《C案例教程教案word文档第二章.docx(19页珍藏版)》请在冰豆网上搜索。

C案例教程教案word文档第二章.docx

C案例教程教案word文档第二章

第2章 数据类型及其运算

第一节   常量和变量

常量是指在程序运行过程中其值不能被改变的量;变量是指在程序运行过程中其值能够被改变的量。

  一、常量

 常量是指在程序运行过程中,其值不变的量,在C语言中,常量分为数值常量,字符常量和字符串常量。

数值常量又分为整型常量和实型常量。

这三种常量无需说明就可以使用。

C语言的常量主要有以下几种:

(1)整型常量。

如:

-2,3,1234,01234,0xl234,2234L等。

整型常量可以用十进制、八进制和十六进制表示,1234表示的是十进制数,01234表示的是八进制数,0x1234表示的是十六进制数,如果是长整型常量,后面还要加上小写l或大写L,比如1234L。

(2)字符常量。

如:

’a’,’b’等,字符常量必须用英文的单引号引起来。

(3)浮点型常量。

如:

2.55,2.55E-5等。

浮点型常量有两种表示方法,小数表示法,如2.55;科学计数法,如2.55E-5,其中的E可以用e,表示255×10–5。

(4)字符串常量。

如:

”a”,”abc”,”xyz”等。

字符串常量必须用双引号引起来,可以使用汉字。

注意字符串常量与字符常量不同,字符串常量需要用英文的双引号引起来,而字符常量用英文的单引号引起来;字符串常量如”mnl”在存储器内部存储的字符序列为mnl\0,\0(NULL)是结束符,而字符常量如’x’在存储器内部存储的只是字符x。

(5)控制字符常量。

如果要输入ASCII码值在0x00—0xFF之间的字符,需用反斜扛和特定字符组合表示,使用此方法表示的字符叫做转义字符,C语言中的转义字符如表2-1所示。

 

      表2-1 C语言中的转义字符

字符形式

ASCII码

功能

\0

0x00

NULL

\a

0x07

响铃

\b

0x08

退格

\t

0x09

水平制表(Tab)

\f

0x0c

走纸换页

\n

0x0a

回车换行

\v

0x0b

垂直制表

\r

0x0d

回车不换行

\\

0x5c

反斜杠

\’

0x27

单引号

\”

0x22

双引号

\?

0x3f

问号

\ddd

0ddd

1-3位八进制数所代表的字符

\xhh

0xhh

1-2位十六进制数所代表的字符

符号常量是使用标识符表示的常量,也称宏常量,用来增加程序的可维护性。

其定义形式为:

#define符号常量常量字串

例2-1已知圆的半径(radius),计算圆周长(perimeter)、面积(area)和球体体积(volume)。

#include

#definePI 3.1415926  /*PI是符号常量,代表3.1415926*/

void main()

{

  floatperimeter,area,radius,volume;

  printf("Inputradius:

");

  scanf("%f",&radius);    /*输入半径*/

  perimeter=2.0*PI*radius;

  area=PI*radius*radius;

  volume=4/3.0*PI*radius*radius*radius;

  printf("perimeter=%10.4f\narea=%10.4f\nvolume=%10.4f\n",perimeter,area,volume);

}

程序中定义的PI代表常量3.1415926,在编译源程序时,遇到PI就用常量3.1415926代替,PI可以和常量一样进行运算。

C语言规定,每个符号常量的定义式占据一个书写行,而且符号常量不能被再赋值。

习惯上,符号常量名用大写,而变量名用小写,以便于区别。

使用符号常量的好处:

(1)增加了程序的可读性。

(2)增加了程序的易修改性。

二、变量

变量是指在程序运行过程中其值可以改变的量。

变量用一个标识符表示,这个标识符叫做变量名。

在C程序设计中使用变量时必须首先对它的数据类型进行说明,一般定义格式为:

数据类型变量表

例如:

inti,j,k; /*i,j,k是变量

chara,b,c;

变量名有一定的命名规则:

(1)标准C的变量名必须以小写字母或下划线开始。

                  

(2)能用作变量名的字符有a~z,0~9,$或下划线_。

(3)TurboC规定,变量名的有效长度为32个字符。

       

(4)不能使用C语言约定的关键字作变量名。

使用已经定义的变量时,还要对它进行赋值,即变量初始化。

例如:

   inti=5,j=10,k;

然后才能进行计算

   k=i+j;

用来标识变量名、符号常量名、函数名、数组名、类型名、文件名的有效字符序列称为标识符。

C语言规定,标识符只能由字母(a~z,A~z)、数字(0~9)和下划线(_)3种字符组成,而且第一个字符必须为字母或下划线。

不能是汉字。

在C语言中,大写字母和小写字母被认为是不同的字符。

注意应该使用不同的标识符而不是以大小写来区分变量,习惯上作为变量名的标识符用小写字母来表示。

ANSIC标准没有规定标识符的长度,即标识符应该有多少个字符组成.不同的C编译器有自己的规定,

C语言规定,关键字不能用作变量名标识符,关键字是C语言内部规定了特殊含义的特殊的标识符,只能固定用做某些规定用途。

另外,为了使程序具有较好的可读性,应该取代表某种意义的单词或其缩写作为变量名或其他标识符,尽量做到“见名知意”。

C语言规定所有用到的变量在使用之前必须定义其数据类型,即“先定义,后使用”。

变量定义的一般形式:

类型标识符  变量名表

例如:

    ints1,s2,s3;   /*定义整型变量*/

    charname;   /*定义字符型变量*/

C语言允许在定义变量的同时初始化变量(为变量赋初值),例如:

ints1=3,s2=-6,s3=7,total;  /*定义的同时赋初值*/

          

                    第二节   数据类型

                            

基本数据类型为常用类型。

表2—2列出了TurboC语言基本数据类型长度和数值范围

表2-2  TurboC语言基本数据类型

数据类型

类   型

定义标识符

长度/bit

数值范围

整型

普通整型

[signed]int

16

-32768~32767

短整型

[signed]short[int]

16

-32768~32767

长整型

[signed]long[int]

32

-2147483648~2147483647

无符号整型

unsigned[int]

16

0~65535

无符号短整型

unsignedshort[int]

16

0~65535

无符号长整型

unsignedlong[int]

32

0~4294967295

实型

单精度浮点型

Float

32

-3.4E±38~3.4E±38

双精度浮点型

Double

64

-1.7E±308~1.7E±38)

长双精度浮点型

longdouble

80

-3.4E±4932~3.4±E4932

字符型

字符型

[signed]char

8

-127~127

无符号字符型

unsignedchar

8

0~255

空类型

空类型

Void

0

无值

 

一、整型数据

 

在微机上使用的TurboC语言编译系统,整型数据在内存中占2个字节或4个字节(B),16位或32位(bit)。

 

1.整型常量

整数型常量不仅可以用十进制表示,也允许用八进制或十六进制表示,例如:

   36  十进制数

   028 八进制数      以0开头,由0~7构成。

   0x7b十六近制数    以0x开头,由0~9和A~F或a~f构成。

整数类型又可细分成不同长短的类型,应加上类型标识符构成,如:

   短整型shortint       可简化为short标识定义。

   长整型longint       可简化为long标识定义。

   无符号整unsignedint 可简化为unsigned标识定义。

 

2.整型变量

在C语言中,整型的类型标识符为int。

根据整型变量的取值范围又可以将整型变量定义为基本类型(int)、短整型(shortint或short)和长整型(longint或long)3类。

根据实际需要还可以加限定词signed和unsigned,signed指定的是有符号数,unsigned指定的是无符号数,如果不指定signed或unsigned,则C编译器自动指定为有符号(signed)。

归纳起来,可用以下6种整型类型:

   有符号基本整型   [signed]int

   无符号基本整型   unsigned[int]

   有符号短整型     [signed]short[int]

   无符号短整型     unsignedshort[int]

   有符号长整型     [signed]long[int]

   无符号长整型     unsignedlong[int]

在存储有符号数时,存储单元的最高位代表符号位,0为正,1为负。

而存储无符号数时,存储单元全部16位都用作存放数本身,一个无符号整型变量只能存放不带符号的整数,如23900等,而不能存放负数。

如分别定义a和b两个变量:

inta;

unsigned b=65535;

a=-9;

在设计程序时,应该注意变量类型的取值范围,当赋值超过其取值范围时,会出现溢出错误,例如int型的数据被赋于大于最大允许值32767时会出现溢出错误,a=32767+1并不会得到预期的结果,相反最后结果为a=-32768。

注意这种溢出错误在运行时并不报告。

现举例分析如下。

执行源程序

例2-2溢出错误举例

#include

void main()

{

  inta,b;

  a=32767;

  b=a+1;

  printf(“a=%d\n”,a);

  printf(“b=%d\n”,b);

}

 3.整型常量的类型

整型常量不必使用强制类型说明就可以直接使用,当遇到整型常量时,编译器会自动根据其值将该常量认定为相应的类型,保证其按适当的类型参与运算。

一个整数,其值在(-32768~32767)之间时,被认为是int型,可以把它赋值给int型、short型或long型变量;但其值超出了此范围,而在(-2147483648~2147483647)范围之间,则被认为是长型,可以把它赋值给long型变量。

一个整型常量后加U或u后缀则被认为是unsigned类型,在内存中按unsigned规定的方式存放。

而一个整型常量后加l或L后缀则被认为是long类型,在内存中按long规定的位数存放。

4.整型数据的应用

整型数据有各种实际用途,如果取值范围在ASCII码值之内,则可以与字符类型的数据运算。

ASCII码字符类型的数据代表一个字符,出一对单引号将字符括起来.可以用ASCII码表中的代码值表示,例如:

   ‘b’   ASCII码值是98

   ‘B’   ASCII码值是66

例2-3编一个程序,利用ASCII码值大写转小写。

#include

void main()

{

  charchar1,char2,char3,char4;           /*定义字符类型*/

  char1=’B’;                          /*以字符型常量赋值*/

  char2=67;                           /*数值型常量赋值*/

  char3=char1+32;char4=char2+32;       /*整型数值运算*/

  printf(“%c的小写是%c,%c的小写是%c\n”,char1,char3,char2,char4);

  printf(“%c的ASCII码是%d,%c的小写是%d\n”,char3,char3,char4,char4);

  printf(“%c的ASCII码是%d,%c的小写是%d\n”,char1,char1,char2,char2);

}

该程序运行后,分别以字符类型和整型ASCII码值输出,结果略。

 

二、实型数据

 

实型数据又称为浮点型数据,可包含有整数部分和小数部分,例如:

   0.062与.062等同

   5.0与5.等同

科学计数法中,用“尾数e+指数”表示浮点数值,e表示以10为底的指数。

字母“e”或“E”是exponent的英文缩写。

例如:

   8.2e5等同于820000.0

   其中8.2就是尾数,含有整数部分(integerpart)为8和小数部分(fractionalpart)为2,而5就是指数(exponent)部分。

尾数和指数也都有可能为负值,例如:

   -1.23e4

   1.234567e-8

   -78e-12

实型数据在内存中按指数形式存储,单精度实型数据在内存中占4个字节(32位)。

实型数据的取值范围是数学中的实数集中的一个子集。

 

1.实型常量

实型常量有两种表示形式:

(1)十进制小数形式:

十进制小数形式由数字和小数点组成。

(2)指数形式。

指数形式由尾数、e(或E)以及指数3部分组成,其指数部分必须为整数。

如1.e1(代表1.0×101)、9.8E0(代表9.8×100),8.997e-12(代表8997×10-12),-5.43E4(代表-(5.43×104))等那是合法的指数形式。

而像5.4E,.E,e-6,3e3.1则都是不合法的实型数据。

指数形式在输出时按规范化的指数形式输出,即字母e(或E)前面的小数部分中,小数点左边有且只有一位非零数字。

 

2.实型变量

在C语言中,实型变量分为单精度实型(float)、双精度实型(double)和长双精度实型(longdouble)3类。

在微机上常用的C编译系统(如TurboC、MSC、BorlandC)的有关数据如表2-3所示。

   表2—3实型数据

类型

位数(bit)

有效数字

取值范围

float

32

6~7

-3.4E±38~3.4E±38

double

64

15~16

-1.7E±308~3.4E±308

longdouble

80

18~19

-1.2E±4932~1.3E±4932

 

3.实型常量的类型

为了保证数据精度,许多C编译系统都自动地将实型常量作为双精度实型来处理。

在数的后面加上字母f(或F)可以使编译器将其强制转换为单精度实型,如9.76f,5.6F等。

一个实型常量可以赋值给一个float型、double型和longdouble型变量。

编译器将根据变量的类型截取实型常量中相应的有效位数字。

 

 

三、字符型数据

 

字符类型的数据代表一个字符,用一对英文单引号将字符括起来,表示的是该字符在ASCII码表中的代码值。

例如:

   ‘a’   即97

   ‘A’   即65

ASCII码表中的某些控制字符不可显示,则通过加反斜线“\”的转义字符表示,

字符型数据值是单引号括起来的单个字符,如‘A’~‘Z’,‘a’~‘z’,‘$’,‘#’,‘&’,‘*’等,在内存中占一个字节,存储单元中存储的是该字符对应的ASCII码值,即一个整数。

 

1.字符型常量

在C语言中字符型常量使用单引号括起来的一个字符。

如’A’,’x’,’%’等。

另外还有—种特殊的字符常量,即以一个反斜杠“\”开头的字符序列,称为转义字符。

利用上述转义字符“\ddd”和“\xhh”可以输出的各种字符,如字母字符(如a~z,A~Z)专用字符(如“\”,“*”等)、图形字符(如▲,◎等)和控制字符(null,beep,tab等)。

例2-4编程检验ASCII码值与字符的对应关系

#include

voidmain()

{

  charc1,c2;                        /*定义字符类型*/

  c1=97;c2=98;                       /*赋整型值*/

  printf("%c#%c\n",c1,c2);           /*字符类型输出*/

}

 

2.字符型变量

字符型的类型标识符为char,一个字符型变量的值只能是一单个字符。

[signed]char的取值范围足-128~127,而unsignedchar的取值范围是0~255。

 

由于字符型数据在内存中是以字符的ASCII码值形式来存放的,所以通常来讲字符型数据和整型数据是可以互相通用并可进行算术运算的。

一个字符型数据既可以以字符形式(ASCII码所对应的字符)输出,也可以以整数形式(ASCII码值)输出。

当对字符型数据进行算术运算时.实际上相当于对它们ASCII码值进行运算。

 

3.字符串常量

字符串常量不同于字符常量,字符常量是由一对单撇号括起来的一个字符,而字符串常量则是由一对双撇号括起来的一个字符序列。

例如:

’z’是一个字符型常量,而”Z”则是一个字符串常量。

只可以将一个字符常量赋值给一个字符型变量,不能把一个字符串常量赋给一个字符型变量。

在C语言中没有字符串这种数据类型。

因此没有专门的字符串变量来存放字符串常量,只能使用字符数组来存放一个字符串,将在后面章节中介绍。

 

4.字符型数据的应用

字符数据是计算机信息处理的重要组成部分,通常以ASCII码形式输入和输出,所以C语言中的字符型数据类型常常用于处理ASCII字符及字符串等。

例2-5编程处理输出一个字符串

#include

staticcharwords[30]={“we”,”study”,”C”,”programming”};

voidmain()

{

  inti;

  for(i=0;i<30;i++)     /*循环控制输出数组中的每一个字符*/

  printf("%c",words[i]);  /*输出数组元素*/

  printf("\n");

}

        

       第三节   运算符和运算表达式

 

运算符用于控制运算对象,C语言的很多操作都可以用运算符处理。

用运算符将操作数连接起来,就构成了表达式。

各类运算符名称及其符如下:

 

                                    算术运算符     + - * / % ++ --

                                     关系运算符     > < == >= <= !

=

                                    逻辑运算符     !

  && ||

                                    位运算符       << >> ~ | & ^

                                   赋值运算符   =赋值运算及扩展复合赋值运算符

                                   条件运算符            ?

:

                                    逗号运算符            ,

                                    指针运算符            * &

                                    求字节数运算符        sizeof

                                    强制类型转换运算符    (类型关键字)

                                    分量运算符            . ->

                                   下标运算符            []

                                    其他运算符            如函数调用时的()等

 

1.算术运算符和算术表达式

算术运算符包括基本算术运算符(+,-,*,/,%)和自增运算符(++)、自减运算符(--)两种。

 

(1)基本算术运算符:

+加法运算符,正值运算符。

-减法运算符,负值运算符。

*乘法运算符。

如表达式x*y表示求x与y的积

/ 除法运算符。

如表达式x/y表示求x与y的商

%模运算符(求余运算特)。

如表达式x%y表示求x除以y的余数

需要注意的是,在除法运算中,两个整型数据相除的结果仍然得到整型数据。

不能被整除时得到的小数部分被舍去。

当除数和被除数中有一个负整数时,其结果随机器而定,多数机器采取“向零取整”原则,即向零靠近取整。

如8/5的结果为1,8/-5)的结果为-1。

在模运算(求余运算)中,%两侧的运算量必须都是整型,其结果是两数相除所得的余数。

在多数机器上,所得的余数与被除数符号相同。

如8%(-5)的结果为3,而(-8)%5的结果为-3。

另外,如果参加运算(+,-,*,/)的两个数中有一个是实型数据,那么其结果将得到double型数据。

(2)自增、自减运算符。

自增、自减运算符用来对一个操作数进行加1或减1运算,其结果仍然赋于该操作数,而且参加运算的操作数必须是变量,而不能是常量或表达式。

自增运算符。

如x++表示在使用x之后,使x的值加1,即x=x+1。

   ++x表示在使用x之前,先使x的值加1,即x=x+1

自减运算符。

如x--表示在使用x之后,使x的值减1,即x=x-1。

   --x表示在使用x之前、先使x的值减1,即x=x-1。

++x和--x都把运算符用在了操作数之前,这叫做前置运算。

x++和x--,则为后置运算。

前置运算是变量首先加1或减1,然后再使用变量的值。

而后置运算则是使用变量的值后,再执行变量加1或减1。

例2-6变量自加运算

#include

voidmain()

{

  intx,y,z1,z2;

  x=7;

  y=8;

  z1=y-(x++);             /*计算结束后,x的值为8*/

  z2=y-(++x);             /*x的值为8,先自加为9,再与y求差*/

  printf("x=%d\ty=%d\ny-(x++)=%d\ny-(++x)=%d",x,y

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

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1