1、C语言程序设计第讲语言程序设计第讲编程练习:编程练习:n:一个长方形的长是:一个长方形的长是6米,宽是米,宽是8米;求:米;求:1、长方形的周长;长方形的周长;n 2、长方形的面积。、长方形的面积。n如何写出如何写出C源程序?源程序?计算公式:计算公式:周长周长=长长+宽宽*2面积面积=长长*宽宽:长:长=6、宽、宽=8,这两个数是不变的,可称为这两个数是不变的,可称为 常量常量 周长、面积为未知数,由公式计算而得,可称为变周长、面积为未知数,由公式计算而得,可称为变量。量。编程的目的:利用的条件,去进展计算,从而得到编程的目的:利用的条件,去进展计算,从而得到数字化的结果或进展某种操作。数字
2、化的结果或进展某种操作。n常量可以直接使用。常量可以直接使用。n变量需要先定义后使用。变量需要先定义后使用。n变量定义的两个要素:变量定义的两个要素:n1、类型:决定变量的存储和计算方式、类型:决定变量的存储和计算方式n2、名字:编程者自定。、名字:编程者自定。n以两个名人为例:以两个名人为例:n 男男 董永董永n 女女 七仙女七仙女n类型:类型:1、决定存储方式:、决定存储方式:n 2、计算方式:男:耕田,、计算方式:男:耕田,女:织布女:织布n名字:名字:由父母取名由父母取名如何定义变量:周长、面积如何定义变量:周长、面积n因为:长因为:长=6、宽、宽=8,是整数,是整数n进展进展+、*运
3、算结果都是整数。运算结果都是整数。n可以将周长和面积的类型定义为整型可以将周长和面积的类型定义为整型integern整型变量类型关键字:整型变量类型关键字:intn名字:周长:名字:周长:perimeter 面积:面积:area n不建议使用拼音。不建议使用拼音。n匈牙利命名法,变量名中包含变量类型和变量意义匈牙利命名法,变量名中包含变量类型和变量意义n如:如:intPerimeter,intArean或或 iRectanglePerimeter,iRectangleAreaC语言中整型变量的定义语言中整型变量的定义nint 变量名变量名;nVC中,中,int 占内存单元:占内存单元:4 字节
4、字节nshort int 短整型,短整型,2字节字节nlong int 长整型长整型,4字节字节nint (长长)整型整型 ,4字节字节 Question:变量是否可以随意取名?:变量是否可以随意取名?nAnswer:否。否。只能包含:只能包含:1、字母、字母(AZ,az)2、数字、数字(09)3、下划线、下划线(_)n第一个字符必须是字母或下划线第一个字符必须是字母或下划线。n不可以是数字开头不可以是数字开头n:一个长方形的长是:一个长方形的长是6米,宽是米,宽是8米;米;n编程求:编程求:1、长方形的周长;周长、长方形的周长;周长=长长+宽宽*2n 2、长方形的面积。面积、长方形的面积。面
5、积=长长*宽宽n编程算法:编程算法:n1、分析有多少个常量,思考需要多少个变量?、分析有多少个常量,思考需要多少个变量?n2、写出、写出C源程序的根本框架源程序的根本框架;n3、定义变量;、定义变量;n4、代入公式进展计算;、代入公式进展计算;n5、输出结果。、输出结果。源程序框架:源程序框架:#include stdio.hint main()return 0;定义变量:定义变量:#include stdio.hint main()int iPerimeter;/定义变量周长定义变量周长int iArea;/定义变量面积定义变量面积 return 0;计算:计算:#include stdio
6、.hint main()/*变量定义变量定义*/int iPerimeter;/定义变量周长定义变量周长int iArea;/定义变量面积定义变量面积 /*计算周长和面积计算周长和面积*/iPerimeter=(6+8)*2;/赋值语句,将右边值赋给左边变量赋值语句,将右边值赋给左边变量 iArea=6*8;return 0;运行本程序,结果如何?运行本程序,结果如何?修改程序,实现正确输出修改程序,实现正确输出#include stdio.hint main()/*变量定义变量定义*/int iPerimeter;/定义变量周长定义变量周长int iArea;/定义变量面积定义变量面积 /*
7、计算周长和面积计算周长和面积*/iPerimeter=(6+8)*2;iArea=6*8;/*输出结果输出结果*/printf(“周长为:周长为:%d 米米n,iPerimeter);printf(“面积为:面积为:%d 平方米平方米n,iArea);return 0;输出函数输出函数 printf()n格式输出函数格式输出函数,用来向标准输出设备用来向标准输出设备(屏幕屏幕)写数据写数据;nprintf(“格式控制串,参数表格式控制串,参数表);n格式化字符串包括两局部内容格式化字符串包括两局部内容:n1.正常字符正常字符:这些字符将按原这些字符将按原 样输出样输出;n 例:例:printf
8、(“hello world);n2.格式声明格式声明:%格式字符格式字符,确定输出格式。确定输出格式。n 例:例:printf(“面积为:面积为:%d 平方米平方米,iArea);n1.格式字符格式字符 n 符号作用符号作用%d decimal 十进制有符号整数十进制有符号整数%f float浮点数浮点数 默认小数点后默认小数点后6位位%c character 单字符单字符%s string字符串字符串%u unsigned 十进制无符号整数十进制无符号整数%p pointer 指针指针%e exponential指数形式的浮点数指数形式的浮点数(1.2e+02)n%x,%Xhex 无符号以十
9、六进制表示的整数无符号以十六进制表示的整数%o octal无符号以八进制表示的整数无符号以八进制表示的整数修改程序如下:修改程序如下:#include stdio.hint main()/*变量定义变量定义*/int iPerimeter,iArea;/同时定义两个变量同时定义两个变量 /*计算计算*/iPerimeter=(6+8)*2;iArea=6*8;/*输出结果输出结果*/printf(周长周长=%d n 面积面积=%dn,iPerimeter,iArea);return 0;格式控制符的数目格式控制符的数目 必需与必需与 参数个数一致。参数个数一致。宏常量宏常量n以上程序中,以上程
10、序中,6和和8的意义是什么呢?如果不是源的意义是什么呢?如果不是源程序的作者,其他人怎么知道程序的作者,其他人怎么知道6代表长还是宽?代表长还是宽?n在编程中,一般不直接写常量的值,在编程中,一般不直接写常量的值,通常定义一通常定义一个符号,用来表示一个常量个符号,用来表示一个常量,称之为,称之为宏常量宏常量。n例如例如n#define LENGTH 6 /用符号用符号LENGTH代表代表6n#define WIDTH 8 /用符号用符号WIDTH 代表代表8#include stdio.h#define LENGTH 6 /*定义定义 宏常量宏常量 LENGTH 值为值为6*/#define
11、 WIDTH 8 /*定义定义 宏常量宏常量 WIDTH 值为值为8*/int main()/*变量定义变量定义*/int iPerimeter,iArea;/*计算计算*/iPerimeter=(LENGTH+WIDTH)*2;iArea=LENGTH*WIDTH;/*输出结果输出结果*/printf(周长周长=%d n 面积面积=%dn,iPerimeter,iArea);return 0;编程练习:编程练习:n道三角形的底边为道三角形的底边为5 m,高为,高为3 m,求三角,求三角形的面积。形的面积。n面积面积=底底*高高/2编程算法:编程算法:1、分析有多少个常量,思考需要多少个变量?
12、、分析有多少个常量,思考需要多少个变量?2、写出、写出C源程序的根本框架源程序的根本框架;3、定义变量;、定义变量;4、代入公式进展计算;、代入公式进展计算;5、输出结果。、输出结果。#include stdio.h#define 底底 5#define 高高 3int main()/*变量定义变量定义*/int 面积变量;面积变量;/*计算计算*/面积面积=底底*高高/2;/*输出结果输出结果*/printf(“面积面积=%d 平方米平方米n,面积变量面积变量);return 0;#include stdio.h#define BOTTOM 5#define HIGH 3int main()
13、int iArea;/定义变量面积定义变量面积 iArea=BOTTOM*HIGH/2;printf(面积面积=%d平方米平方米n,iArea);return 0;执行结果是否正确,为什么?执行结果是否正确,为什么?浮点数浮点数 float n整数的运算结果只会是整数。整数的运算结果只会是整数。n带有小数点的数称为浮点数,根据精度长度,带有小数点的数称为浮点数,根据精度长度,或分为单精度和双精度浮点数。或分为单精度和双精度浮点数。n单精度浮点数的定义:单精度浮点数的定义:n float 变量名变量名;占占4字节内存字节内存n双精度浮点数的定义:双精度浮点数的定义:n double变量名变量名;
14、占占8字节内存字节内存浮点数浮点数 float n整数的运算结果只会是整数。整数的运算结果只会是整数。n带有小数点的数称为浮点数,根据精度长度,带有小数点的数称为浮点数,根据精度长度,或分为单精度和双精度浮点数。或分为单精度和双精度浮点数。n单精度浮点数的定义:单精度浮点数的定义:n float 变量名变量名;占占4字节内存字节内存n双精度浮点数的定义:双精度浮点数的定义:n double变量名变量名;占占8字节内存字节内存改写成单精度浮点数的形式改写成单精度浮点数的形式#include stdio.h#define BOTTOM 5#define HIGH 3int main()float
15、fArea;/定义变量面积定义变量面积 fArea=BOTTOM*HIGH/2;printf(“面积面积=%f 平方米平方米n,fArea);return 0;改为改为%d,输出,输出结果如何?结果如何?改写成双精度浮点数的形式改写成双精度浮点数的形式#include stdio.h#define BOTTOM 5#define HIGH 3int main()double dArea;/定义变量面积定义变量面积dArea=BOTTOM*HIGH/2;printf(“面积面积=%lf 平方米平方米n,dArea);/如果用如果用%f结果如何?结果如何?return 0;输出格式符输出格式符%f
16、和和%lf在用于在用于输出输出时,可以互换时,可以互换如何控制输出的小数位数如何控制输出的小数位数#include stdio.h#define BOTTOM 5#define HIGH 3int main()double dArea;/定义变量面积定义变量面积 dArea=BOTTOM*HIGH/2;printf(“面积面积=%6.2lf 平方米平方米n,dArea);return 0;课堂练习课堂练习n编程:三角形的底边为编程:三角形的底边为 10 m,输入三角形,输入三角形的高度,求三角形的面积。的高度,求三角形的面积。n面积面积=底底*高高/2如何输入数据?如何输入数据?scanf()
17、函数,格式输入函数。函数,格式输入函数。使用方法:使用方法:scanf(“格式控制符格式控制符,变量地址变量地址);如:如:int length;float width;double high;scanf(“%d,&length);scanf(“%f,&width);scanf(“%lf,&high);scanf(“%d%f%lf,&length,&width,&length);n1.格式字符格式字符 n 符号作用符号作用%d decimal 十进制有符号整数十进制有符号整数%f float浮点数浮点数 默认小数点后默认小数点后6位位%c character 单字符单字符%s string字符
18、串字符串 数据输入数据输入1、先输出一个提示语句,提示输、先输出一个提示语句,提示输入数据个数和格式入数据个数和格式printf(请输入三角形的高度:请输入三角形的高度:);2、使用、使用scanf()函数输入数据函数输入数据scanf(“%f,&fHigh);/输入数据输入数据#include stdio.h#define BOTTOM 5int main()float fHigh;float fArea;/定义变量面积定义变量面积printf(请输入三角形的高度:请输入三角形的高度:);scanf(“%f,&fHigh);/输入数据输入数据 fArea=BOTTOM*fHigh/2;pri
19、ntf(面积面积=%6.2fn,fArea);return 0;课堂练习课堂练习n编程:输入三角形的底边和高度,求三角编程:输入三角形的底边和高度,求三角形的面积。形的面积。n面积面积=底底*高高/2#include stdio.hint main()float fBottom,fHigh;float fArea;/定义变量面积定义变量面积printf(请输入三角形的底和高请输入三角形的底和高:);scanf(%f,%f,&fBottom,&fHigh);fArea=fBottom*fHigh/2;printf(面积面积=%6.2fn,fArea);return 0;如果输入数据为:如果输入数
20、据为:3 5,结果如何?,结果如何?scanf()函数函数如果在如果在“格式控制字符串中除了格式说明格式控制字符串中除了格式说明以外还有其他字符,以外还有其他字符,那么在输入数据时必须在对应位置输入这那么在输入数据时必须在对应位置输入这些字符。些字符。课堂练习课堂练习n从键盘中输入圆的半径,编程求圆的面积从键盘中输入圆的半径,编程求圆的面积准确到小数点后两位准确到小数点后两位n 计算公式:计算公式:S=r2 =3.14r2。n例例1:编程求圆的面积准确到小数点后两:编程求圆的面积准确到小数点后两位位n 计算公式:计算公式:S=r2 =3.14r2。开始开始计算面积计算面积输出结果输出结果输入半
21、径输入半径#include math.h#include stdio.h#define PI 3.14 /3.14 表示常量为浮点型表示常量为浮点型int main()float fRadius,fArea;printf(请输入圆的半径请输入圆的半径:);scanf(%f,&fRadius);/输入半径值输入半径值 fArea=3.14f*fRadius *fRadius;/计算面积计算面积 printf(半径为的圆面积是半径为的圆面积是%5.2f 平方米平方米n,fRadius,fArea);return 0;/*圆面积计算程序圆面积计算程序*/#include stdio.h#define
22、 PI 3.14f /3.14f 表示常量为浮点型表示常量为浮点型int main()float fRadius,fArea;printf(请输入圆的半径请输入圆的半径:);scanf(%f,&fRadius);/输入半径值输入半径值 fArea=3.14f*fRadius2;/这种写法是否正确?这种写法是否正确?printf(半径为的圆面积是半径为的圆面积是%5.2f 平方米平方米n,fRadius,fArea);return 0;以下程序是否正确以下程序是否正确?n 是位是位“异或运算符,只能用于整数。并不能用于异或运算符,只能用于整数。并不能用于“求平求平方运算。方运算。n求平方等计算需
23、要用数学函数。求平方等计算需要用数学函数。n1、先包含数学库头文件、先包含数学库头文件n#include“math.hn2、调用数学函数、调用数学函数n乘方乘方 pow(双精度浮点型变量双精度浮点型变量,n次方次方)n平方根平方根 sqrt(double)#include math.h#include stdio.h#define PI 3.14 /3.14 表示常量为浮点型表示常量为浮点型int main()float fRadius,fArea;printf(请输入圆的半径请输入圆的半径:);scanf(%f,&fRadius);/输入半径值输入半径值 fArea=3.14f*pow(fR
24、adius,2);/计算面积计算面积 printf(半径为的圆面积是半径为的圆面积是%5.2f 平方米平方米n,fRadius,fArea);return 0;n变量名的命名规那么?变量名的命名规那么?n数据的类型有何作用?数据的类型有何作用?n如何输入数据?如何输入数据?n如何输出数据?如何输出数据?根底知识根底知识n关键字是由语言规定的具有特定意义的字符串,通常也关键字是由语言规定的具有特定意义的字符串,通常也称为保存字。用户定义的标识符不应与关键字一样。语称为保存字。用户定义的标识符不应与关键字一样。语言的关键字分为以下几类:言的关键字分为以下几类:n (1)类型说明符类型说明符n 用于
25、定义、说明变量、函数或其它数据构造的类型。用于定义、说明变量、函数或其它数据构造的类型。如如int,doublen (2)语句定义符语句定义符n 用于表示一个语句的功能。如用于表示一个语句的功能。如if 就是条件语句的语句就是条件语句的语句定义符。定义符。C语言的关键字语言的关键字n标准标准ANSI C 89一共只有一共只有32个关键字个关键字 p378 autobreakcasecharconstcontinuedefaultdo double else enum extern float for goto if int long register return short signed s
26、tatic sizeof struct switch typedef union unsigned void volatilewhileC99中新增:中新增:inline restrict _bool _complex _imaginaryn(1)数据类型说明符数据类型说明符14个个n n长短双正负长短双正负 long short double unsigned singned n无值整型浮点字符无值整型浮点字符 void int float charn 联合枚举构造联合枚举构造 union enum structn(2)变量类型变量类型4个:个:n 外部外部 静态自动静态自动 存放器存放器
27、extern static auto registern 3常量常量1个个:constn(2)程序构造语句定义符程序构造语句定义符10个个n判断:判断:ifn循环:循环:for do while n转移:转移:goton跳出:跳出:break continuen返回:返回:returnn开关:开关:switch case3、其它关键字、其它关键字nsizeof 类型大小类型大小ntypedef类型定义类型定义ndefault 默认默认nvolatile可变的变量可变的变量n数据为什么要区分类型?数据为什么要区分类型?n不同类型的数据代表不同的不同类型的数据代表不同的数据表示形式数据表示形式合法
28、的取值范围合法的取值范围占用内存空间大小占用内存空间大小可参与的运算种类可参与的运算种类 数据类型数据类型Data TypeData Type p42 p42语言的数据类型语言的数据类型 n数据类型:对数据分配存储单元的安排,包数据类型:对数据分配存储单元的安排,包括存储单元的长度所占字节数,以及数括存储单元的长度所占字节数,以及数据的存储形式。据的存储形式。n不同的类型分配不同的长度和存储形式。不同的类型分配不同的长度和存储形式。n在语言中,数据类型可分为:根本类型,在语言中,数据类型可分为:根本类型,枚举类型,空类型,派生类型四大类枚举类型,空类型,派生类型四大类 p43 p43。根本类型
29、根本类型派生类型派生类型枚举类型枚举类型(enum)空类型空类型(void)整型整型浮点类型浮点类型根本整型根本整型(int)长整型长整型(long)短整型短整型(short)*双长整型双长整型(long long int)字符型字符型(char)*布尔型布尔型(bool)数据类型数据类型单精度浮点型单精度浮点型(float)双精度浮点型双精度浮点型(double)复数浮点型复数浮点型数组类型数组类型()构造体类型构造体类型(union)共用体类型共用体类型(stuct)数据类型数据类型(p43)(p43)指针类型指针类型(*)函数函数计算机中的数据单位:bit,Byte,KB,MB,GB,T
30、Bnbit,位,位nByte,字节,字节,BnKilo byte(KB),K nMega byte(MB),MnGiga byte(GB),GnTera byte(TB),T为什么每增加一个量级是为什么每增加一个量级是1024而不是更容易计算的而不是更容易计算的1000?为什么为什么2M网络下载速度只有两百多网络下载速度只有两百多K?常量和符号常量常量和符号常量(p39)n在程序运行过程中在程序运行过程中,其值不能被改变的量称为常量其值不能被改变的量称为常量n常量区分为不同的类型:常量区分为不同的类型:字符型字符型 a,2 a,2,nn字符串字符串 “a “a,“ab,“ab,“1232“12
31、32符号常量符号常量#define PRICE 30#define PRICE 30 变量变量(p41)n变量的值存放在特定存储单元中的数据,在程序运变量的值存放在特定存储单元中的数据,在程序运行期间,变量的值是可以改变的。行期间,变量的值是可以改变的。n变量名对应着内存空间中的某个地址,在对程序编变量名对应着内存空间中的某个地址,在对程序编译连接时由编译系统给每一个变量名分配对应的内译连接时由编译系统给每一个变量名分配对应的内存地址。从变量中取值,实际上是通过变量名找到存地址。从变量中取值,实际上是通过变量名找到相应的内存地址,从该存储单元中读取数据。相应的内存地址,从该存储单元中读取数据。
32、图 3-33变量值变量名存储单元auint 整数,在目前绝大多数编译器上占整数,在目前绝大多数编译器上占4个字节。中是个字节。中是2个字节个字节 int a=64;ufloat 浮点数浮点数单精度浮点数,一般是单精度浮点数,一般是4 4个字节长个字节长 float b=64.0;float b=64.0;uchar 字符字符字符,一般是字符,一般是1 1个字节长个字节长用来表示用来表示256256个个ASCIIASCII字符,或者字符,或者0-2550-255的整数。的整数。char=a;根本数据类型根本数据类型变量在内存中以补码的形式存储。变量在内存中以补码的形式存储。short int:0
33、000000000001101int 或或 long int型:型:00000000000000000000000000001101在在VC中,以整数中,以整数13为例:其二进制数为为例:其二进制数为:1101负整数的补码为其正整数的反码负整数的补码为其正整数的反码+1负数负数13:1000000000001101附符号位外,取反附符号位外,取反1变变0,0变变1在在VC中,以整数中,以整数-13为例:其二进制数为为例:其二进制数为:-11011111111111110010反码反码+11111111111110011unsigned int 65523ushort int,短整型,短整型,2
34、个字节。个字节。简写为简写为shortulong int,长整型,长整型,4个字节。个字节。简写为简写为longusignedu用来修饰用来修饰char、int、short和和long,说明他们是有符号的整,说明他们是有符号的整数正整数、数正整数、0和负整数。一般缺省都是有符号的,所以这个和负整数。一般缺省都是有符号的,所以这个修饰符通常省略修饰符通常省略uunsignedu用来修饰用来修饰char、int、short和和long,说明他们是无符号的整,说明他们是无符号的整数正整数和数正整数和0整型数据类型修饰符整型数据类型修饰符关键字关键字sizeof 计算不同类型数据所占字节数计算不同类型
35、数据所占字节数用法:用法:sizeof(变量或变量类型变量或变量类型)返回变量类型所占字节数返回变量类型所占字节数#include stdio.hvoid main()printf(char:%dn,sizeof(char);printf(int:%dn,sizeof(int);printf(long:%dn,sizeof(long);printf(float:%dn,sizeof(float);printf(double:%dn,sizeof(double);各类整型量所分配的内存字节数及数的表示范围。各类整型量所分配的内存字节数及数的表示范围。p45类型说明符类型说明符在在VC中,变量的范
36、围中,变量的范围字节数字节数short-3276832767 即即-215(215-1)2unsigned short065535 即即 0(216-1)2(long)int-231(231-1)4unsigned long0(232-1)4两字节的最大数为两字节的最大数为:1111111111111111signed,最高位是符号位,最高位是符号位,15位有效数字,位有效数字,最大值为最大值为 215-1unsigned,16位有效数字,位有效数字,最大值为最大值为 216-1浮点数:用来表示具有小数点的实数浮点数:用来表示具有小数点的实数 以指数的形式存放在存储单元中以指数的形式存放在存储
37、单元中float 单精度浮点数单精度浮点数 4 字节字节(VC)double 双精度双精度浮点数浮点数 8 字节字节(VC)long double 长双精度长双精度 8字节字节(VC)浮点型数据浮点型变量浮点型变量(1)浮点型数据在内存中的存放形式浮点型数据在内存中的存放形式 浮点型数在内存中占浮点型数在内存中占4个字节个字节(32位位)。浮点型数据是按照指数形式存储的。浮点型数据是按照指数形式存储的。浮点型数分成小数局部和指数局部。浮点型数分成小数局部和指数局部。指数局部采用标准化的指数形式。指数局部采用标准化的指数形式。浮点型常量的两种表示方法浮点型常量的两种表示方法小数小数指数指数1.2
38、3e-3 1.23e-3 或或 注意注意:1.1.字母字母e(e(或或E)E)之前必须有数字,且之前必须有数字,且e e后面的指数必须为整数后面的指数必须为整数 2.2.数字和数字和e e之间不能有空格。之间不能有空格。标准化的指数形式:标准化的指数形式:在字母在字母e e或或E E之前的小数局部中,小数点之前的小数局部中,小数点左边左边应有一位且只能有一位非零的数字应有一位且只能有一位非零的数字.例如例如:123.456:123.456 可以表示为:可以表示为:“标准化的指数形式为:标准化的指数形式为:1.23456e3 1.23456e3。浮点数在内存中的存放形式浮点数在内存中的存放形式
39、p50 浮点数占浮点数占4个字节个字节32位内存空间。按指数形式存储。位内存空间。按指数形式存储。浮点数浮点数3.14159在内存中的存放形式如下:在内存中的存放形式如下:.3141591符号符号 小数局部小数局部 指数指数 0.314159*101用二进制表示浮点数用二进制表示浮点数n二进制只有二进制只有0和和1,小数用下面的方式来表示:,小数用下面的方式来表示:a12-1+a22-2+a32-3+.+an2-n n其中其中a1,a2等只可以是等只可以是0或者或者1。类型说明符类型说明符bit(byte)有效数字位数有效数字位数数的范围数的范围float 32(4)6710-371038 d
40、ouble64 (8)151610-30710308 单精度浮点数单精度浮点数4字节字节32bit,其中小数局部占其中小数局部占23 bit,指数占,指数占8 bit,符号位符号位1 bit。双精度浮点数双精度浮点数8字节字节64 bit,其中小数局部占,其中小数局部占52 bit,指数占,指数占11bit,符号位符号位1 bit。小数局部的位数小数局部的位数bit决定浮点数的精度。决定浮点数的精度。思考:为什么思考:为什么float的有效数字位数不是的有效数字位数不是7,而是,而是6 7?ufloatfloat型数据提供型数据提供7 7位有效数字位有效数字udoubledouble型数据提供
41、型数据提供1616位有效数字位有效数字 u使用不当导致舍入误差使用不当导致舍入误差#include main()float a;double b;a=123456.789e4;b=123456.789e4;printf(%fn%fn,a,b);程序执行结果:程序执行结果:uTC2中中int的范围是的范围是-3276832767u如果我们给它一个小于如果我们给它一个小于-32768或者大于或者大于32767的数会如何呢?的数会如何呢?超出取值范围会怎样?超出取值范围会怎样?u一台安装了一台安装了Windows 95/98的机器,如果连续的机器,如果连续运行天没有重新启动,可能死机运行天没有重新启
42、动,可能死机 u原因:原因:Windows自启动时刻起,有一个计数器,记录系统自启动时刻起,有一个计数器,记录系统已经运行了多少毫秒。这个计数器是个已经运行了多少毫秒。这个计数器是个unsigned long 类型的变量类型的变量unsigned long 的最大值是:的最大值是:4294967295(232-1)一天有一天有 24*60*60*1000=86400000毫秒毫秒当当天的时候,此计数器会溢出,引起死机天的时候,此计数器会溢出,引起死机溢出溢出Overflow造成的危害造成的危害u整型常数整型常数18、-31长整型常量长整型常量 123l、123L、123456l、123456L
43、无符号型常量无符号型常量 123u、123Uu浮点常数浮点常数十进制小数形式十进制小数形式、指数形式指数形式 1e-2、e3单精度浮点型常量单精度浮点型常量、1e-2、长双精度浮点型常量长双精度浮点型常量 l、L、1e-2l、L常数常数ConstantConstantn整型常数缺省被看作整型常数缺省被看作int类型,如果超出类型,如果超出int的范围,就自的范围,就自动被看作动被看作long。可以在数字后面加上。可以在数字后面加上l或者或者L强制其为强制其为long。n浮点常数缺省为浮点常数缺省为double,后缀,后缀f或或F为为float,后缀,后缀l或或L为为long double。n因
44、为字母因为字母l和数字和数字1容易混淆,所以当用容易混淆,所以当用l做后缀时,常使用做后缀时,常使用大写形式。大写形式。u以数字以数字“0开场的整型常数是八进制数开场的整型常数是八进制数u022、-037u010和和10大小不一样大小不一样u以以“0 x或者或者“0X开场的整型常数是十六进开场的整型常数是十六进制制uA-F和和a-f用来表示十进制的用来表示十进制的10-15u十六进制的形式比较常用,尤其在进展位一级十六进制的形式比较常用,尤其在进展位一级的控制的时候的控制的时候u0 x12、-0 x1F,-0 x1f八进制与十六进制常数八进制与十六进制常数练习,以下哪些数是合法的练习,以下哪些
45、数是合法的16进制数进制数n0X2An0XA0n5An0XFFFFn0X3Hu字符常数的表示方法字符常数的表示方法na a,A A,5 5,%,$n单引号内只能有一个字符,除非用单引号内只能有一个字符,除非用 开头!开头!n单引号内不能没有字符!单引号内不能没有字符!u字符常数是一个普通整数,可参与各种运算字符常数是一个普通整数,可参与各种运算n每个字符具有一个每个字符具有一个0-2550-255之间的数值,可从之间的数值,可从ASCIIASCII表查出表查出n注意:注意:5 5 和整数和整数5 5的区别的区别字符字符CharacterCharacter常数常数ASCII码表u转义字符转义字符
46、(p40)u一些特殊字符无法从键盘输入或者另有它用用转一些特殊字符无法从键盘输入或者另有它用用转义字符表示义字符表示字符常数字符常数用八进制转义字符表示用八进制转义字符表示ASCII码码nooo 中的o代表8进制数最多三位数。n取值范围为:0 至 777n注意,8进制数中不包含8.n使用规那么:先将八进制数转换为十进制数,再取十进制对应的ASCII码。用十六进制转义字符表示用十六进制转义字符表示ASCII码码nxhh 中的h代表16进制数最多两位数。n取值范围为:0 至 FFn使用规那么:先将十六进制数转换为十进制数,再取十进制对应的ASCII码。u定义方式:定义方式:char 变量名;变量名
47、;u占占 1 个内存单元。个内存单元。u字符型变量可做为整型变量计算和显示。字符型变量可做为整型变量计算和显示。u取值范围:取值范围:uunsigned char 0-FF 0-255usigned char -128-127字符型变量课堂练习:写出以下程序的输出课堂练习:写出以下程序的输出结果。结果。#include stdio.hvoid main()char cOctal=101;char cHex=x41;char cVariable=65;printf(“cOctal:%c,%d n,cVariable,cVariable);printf(“cHex:%c,%d n,cHex,cHe
48、x);printf(“cVariable:%c,%d n,cOctal,cOctal);u小写字母转换为大写字母小写字母转换为大写字母#include main()char ch=b;ch=b-32;printf(%c,%dn,ch,ch);#include main()char ch=a;/*定义定义 ch 为字符型变量为字符型变量*/printf(“%c,%dn,ch,ch);/*分别以字符形式、整数形式输分别以字符形式、整数形式输出出ch*/Char Char 型与型与 int int 型之间的关系型之间的关系u以字符型和整数型两种格式输出字符变量。以字符型和整数型两种格式输出字符变量。
49、u用双引号括住的由用双引号括住的由0个或多个字符组成的字符序列个或多个字符组成的字符序列uI am a stringu表示空字符串表示空字符串u转义字符也可以在字符串中使用转义字符也可以在字符串中使用u引号只作为字符串开场和完毕的标志引号只作为字符串开场和完毕的标志uC语言内部用语言内部用 0 表示字符串的完毕表示字符串的完毕u除注释外,是唯一可以出现中文的地方除注释外,是唯一可以出现中文的地方ux和和x是不同的是不同的u里定义了一系列专门的字符串处理函数里定义了一系列专门的字符串处理函数字符串字符串StringString常数常数u宏常量宏常量u也称符号常量也称符号常量u一般采用大写字母表示
50、一般采用大写字母表示 u#define 标识符标识符 字符串字符串u不是语句,而是一种编译预处理命令不是语句,而是一种编译预处理命令u宏替换宏替换Macro Substitulition#include main()printf(area=%fn,PI*R*R);printf(circumference=%fn,2*PI*R);宏常量宏常量习惯上符号常量的标识符用大写字母,变量标识符用小写字母,以示区别。习惯上符号常量的标识符用大写字母,变量标识符用小写字母,以示区别。u用用const修饰定义的变量为常量修饰定义的变量为常量nconst float ;u常量只能在定义时赋值,然后不能再改变常量
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。