C语言程序设计--第2讲_第1页
C语言程序设计--第2讲_第2页
C语言程序设计--第2讲_第3页
C语言程序设计--第2讲_第4页
C语言程序设计--第2讲_第5页
已阅读5页,还剩99页未读 继续免费阅读

下载本文档

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

文档简介

1、C程序设计第二讲编程练习:编程练习:n已知:一个长方形的长是已知:一个长方形的长是6米,宽是米,宽是8米;米;求:求:1、长方形的周长;、长方形的周长; 2、长方形的面积。、长方形的面积。n如何写出如何写出C源程序?源程序?计算公式:计算公式:n周长周长 = (长(长+宽)宽)*2n面积面积 = 长长*宽宽n已知:长已知:长=6、宽、宽=8,n这两个数是不变的,可称为这两个数是不变的,可称为 常量常量 n周长、面积为未知数,由公式计算而得,可称为周长、面积为未知数,由公式计算而得,可称为变量变量。n编程的目的:利用已知的条件,去进行计算,从编程的目的:利用已知的条件,去进行计算,从而得到数字化

2、的结果或进行某种操作。而得到数字化的结果或进行某种操作。n常量可以直接使用。常量可以直接使用。n变量需要先定义后使用。变量需要先定义后使用。n变量定义的两个要素:变量定义的两个要素:n1、类型:决定变量的存储和计算方式、类型:决定变量的存储和计算方式n2、名字:编程者自定。、名字:编程者自定。n以两个名人为例:以两个名人为例:n 男男 董永董永n 女女 七仙女七仙女n类型:类型:1、决定存储方式:、决定存储方式:n 2、计算方式:男:耕田,、计算方式:男:耕田, 女:织布女:织布n名字:名字: 由父母取名由父母取名如何定义变量:周长、面积如何定义变量:周长、面积n因为:长因为:长=6、宽、宽=

3、8,是整数,是整数n进行进行+、*运算结果都是整数。运算结果都是整数。n可以将周长和面积的类型定义为整型(可以将周长和面积的类型定义为整型(integer)n整型变量类型关键字:整型变量类型关键字: intn名字:周长:名字:周长: perimeter 面积:面积: area n不建议使用拼音。不建议使用拼音。n匈牙利命名法,变量名中包含变量类型和变量意义匈牙利命名法,变量名中包含变量类型和变量意义如:如: intPerimeter, intArea或或 iRectanglePerimeter, iRectangleAreaC语言中整型变量的定义语言中整型变量的定义nint 变量名变量名;nV

4、C中,中,int 占内存单元:占内存单元:4 字节字节nshort int 短整型,短整型,2字节字节nlong int 长整型长整型, 4字节字节nint (长长)整型整型 , 4字节字节 Question:变量是否可以随意取名?:变量是否可以随意取名?nAnswer: 否。否。只能包含:只能包含: 1、字母、字母(AZ,az) 2、数字、数字(09) 3、下划线、下划线(_)n第一个字符必须是字母或下划线第一个字符必须是字母或下划线。n不可以是数字开头不可以是数字开头n已知:一个长方形的长是已知:一个长方形的长是6米,宽是米,宽是8米;米;n编程求:编程求:1、长方形的周长;周长、长方形的

5、周长;周长 = (长(长+宽)宽)*2 2、长方形的面积。面积、长方形的面积。面积 = 长长*宽宽编程算法:编程算法:n1、分析有多少个常量,思考需要多少个变量?、分析有多少个常量,思考需要多少个变量?n2、写出、写出C源程序的基本框架源程序的基本框架;n3、定义变量;、定义变量;n4、代入公式进行计算;、代入公式进行计算;n5、输出结果。、输出结果。源程序框架:源程序框架:#include stdio.hint main() return 0;定义变量:定义变量:#include stdio.hint main()int iPerimeter; /定义变量周长定义变量周长int iArea;

6、 /定义变量面积定义变量面积 return 0;计算:计算:#include stdio.hint main() /*变量定义变量定义*/int iPerimeter; /定义变量周长定义变量周长int iArea; /定义变量面积定义变量面积 /*计算周长和面积计算周长和面积 */ iPerimeter = (6+8)*2; /赋值语句,将右边值赋给左边变量赋值语句,将右边值赋给左边变量 iArea = 6*8 ; return 0;运行本程序,结果如何?运行本程序,结果如何?修改程序,实现正确输出修改程序,实现正确输出#include stdio.hint main() /*变量定义变量定

7、义*/int iPerimeter; /定义变量周长定义变量周长int iArea; /定义变量面积定义变量面积 /*计算周长和面积计算周长和面积 */ iPerimeter = (6+8)*2; iArea = 6*8 ; /* 输出结果输出结果*/ printf(“周长为:周长为: %d 米米n,iPerimeter); printf(“面积为:面积为: %d 平方米平方米n,iArea); return 0;输出函数输出函数 printf()n格式输出函数格式输出函数,用来向标准输出设备用来向标准输出设备(屏幕屏幕)写数据写数据;nprintf(“格式控制串格式控制串”,参数表,参数表

8、); n格式化字符串包括两部分内容格式化字符串包括两部分内容: n1. 正常字符正常字符: 这些字符将按原这些字符将按原 样输出样输出; 例:例: printf(“hello world”);n2. 格式声明格式声明: %格式字符格式字符, 确定输出格式。确定输出格式。 例:例: printf(“面积为:面积为: %d 平方米平方米 , iArea);n1. 格式字符格式字符 符号符号作用作用 %d decimal 十进制有符号整数十进制有符号整数 %f float浮点数浮点数 (默认小数点后(默认小数点后6位)位) %c character 单字符单字符 %s string字符串字符串 %u

9、 unsigned 十进制无符号整数十进制无符号整数 %p pointer 指针指针 %e exponential指数形式的浮点数指数形式的浮点数(1.2e+02) %x, %Xhex 无符号以十六进制表示的整数无符号以十六进制表示的整数 %o octal无符号以八进制表示的整数无符号以八进制表示的整数修改程序如下:修改程序如下:#include stdio.hint main()/*变量定义变量定义 */int iPerimeter, iArea; /同时定义两个变量同时定义两个变量 /* 计算计算*/ iPerimeter = (6+8)*2;iArea = 6*8;/*输出结果输出结果

10、*/printf( 周长周长=%d n 面积面积=%dn, iPerimeter, iArea); return 0;格式控制符的数目格式控制符的数目 必需与必需与 参数个数一致。参数个数一致。宏常量宏常量n以上程序中,以上程序中,6和和8的意义是什么呢?如果不是源的意义是什么呢?如果不是源程序的作者,其他人怎么知道程序的作者,其他人怎么知道6代表长还是宽?代表长还是宽?n在编程中,一般不直接写常量的值,在编程中,一般不直接写常量的值,通常定义一通常定义一个符号,用来表示一个常量个符号,用来表示一个常量,称之为,称之为宏常量宏常量。n例如例如n#define LENGTH 6 /用符号用符号L

11、ENGTH代表代表6n#define WIDTH 8 /用符号用符号WIDTH 代表代表8#include stdio.h#define LENGTH 6 /*定义定义 宏常量宏常量 LENGTH 值为值为6*/#define WIDTH 8 /*定义定义 宏常量宏常量 WIDTH 值为值为8*/int main()/*变量定义变量定义 */int iPerimeter, iArea; /* 计算计算*/ iPerimeter = (LENGTH + WIDTH) * 2;iArea = LENGTH * WIDTH;/*输出结果输出结果 */printf( 周长周长=%d n 面积面积=%d

12、n, iPerimeter, iArea); return 0;编程练习:编程练习:n已知道三角形的底边为已知道三角形的底边为5 m,高为,高为3 m,求,求三角形的面积。三角形的面积。n面积面积=底底*高高/2编程算法:编程算法:1、分析有多少个常量,思考需要多少个变量?、分析有多少个常量,思考需要多少个变量?2、写出、写出C源程序的基本框架源程序的基本框架;3、定义变量;、定义变量;4、代入公式进行计算;、代入公式进行计算;5、输出结果。、输出结果。#include stdio.h#define 底底 5#define 高高 3int main()/*变量定义变量定义 */int 面积变量

13、;面积变量; /* 计算计算*/面积面积 = 底底 * 高高 / 2;/*输出结果输出结果 */printf(“ 面积面积=%d 平方米平方米n”, 面积变量面积变量); return 0;#include stdio.h#define BOTTOM 5#define HIGH 3int main()int iArea; /定义变量面积定义变量面积 iArea = BOTTOM * HIGH /2;printf( 面积面积=%d平方米平方米n, iArea); return 0;执行结果是否正确,为什么?执行结果是否正确,为什么?浮点数浮点数 float n整数的运算结果只会是整数。整数的运算

14、结果只会是整数。n带有小数点的数称为带有小数点的数称为浮点数浮点数,根据精度(长度),根据精度(长度),或分为单精度和双精度浮点数。或分为单精度和双精度浮点数。n单精度浮点数的定义:单精度浮点数的定义: float 变量名变量名; 占占4字节内存字节内存n双精度浮点数的定义:双精度浮点数的定义: double变量名变量名; 占占8字节内存字节内存浮点数浮点数 float n整数的运算结果只会是整数。整数的运算结果只会是整数。n带有小数点的数称为带有小数点的数称为浮点数浮点数,根据精度(长度),根据精度(长度),或分为单精度和双精度浮点数。或分为单精度和双精度浮点数。n单精度浮点数的定义:单精度

15、浮点数的定义: float 变量名变量名; 占占4字节内存字节内存n双精度浮点数的定义:双精度浮点数的定义: double变量名变量名; 占占8字节内存字节内存改写成单精度浮点数的形式改写成单精度浮点数的形式#include stdio.h#define BOTTOM 5#define HIGH 3int main()float fArea; /定义变量面积定义变量面积 fArea = BOTTOM * HIGH /2;printf(“ 面积面积= %f 平方米平方米n, fArea); return 0; 改为改为%d,输出,输出结果如何?结果如何?改写成双精度浮点数的形式改写成双精度浮点数

16、的形式#include stdio.h#define BOTTOM 5#define HIGH 3int main()double dArea; /定义变量面积定义变量面积dArea = BOTTOM * HIGH /2;printf(“ 面积面积=%lf 平方米平方米n”, dArea); /如果用如果用%f结果如何?结果如何? return 0;输出格式符输出格式符%f和和%lf在用于在用于输出输出时,可以互换时,可以互换如何控制输出的小数位数如何控制输出的小数位数#include stdio.h#define BOTTOM 5#define HIGH 3int main()double

17、dArea; /定义变量面积定义变量面积 dArea = BOTTOM * HIGH /2;printf(“ 面积面积= %6.2lf 平方米平方米n”, dArea); return 0;课堂练习课堂练习n编程:已知三角形的底边为编程:已知三角形的底边为 10 m,输入三输入三角形的高度角形的高度,求三角形的面积。,求三角形的面积。n面积面积=底底*高高/2如何输入数据?如何输入数据?scanf()函数,格式输入函数函数,格式输入函数。使用方法:使用方法: scanf(“格式控制符格式控制符”,变量地址变量地址);如:如:int length; float width; double hig

18、h;scanf(“%d”, &length); scanf(“%f”, &width); scanf(“%lf”, &high); scanf(“%d%f%lf”, &length, &width, &length); n1. 格式字符格式字符 符号符号作用作用 %d decimal 十进制有符号整数十进制有符号整数 %f float浮点数浮点数 (默认小数点后(默认小数点后6位)位) %c character 单字符单字符 %s string字符串字符串 数据输入数据输入1、先输出一个提示语句,提示输入数据(个数和格式)、先输出一个提示语句,提

19、示输入数据(个数和格式)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;printf( 面积面积=%6.2fn, fArea

20、);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;如果输入数据为:如果输入

21、数据为: 3 5,结果如何?,结果如何?scanf()函数函数如果在如果在“格式控制格式控制”字符串中字符串中除了格式说明除了格式说明以外还有其他字符以外还有其他字符, 则在输入数据时必须则在输入数据时必须在对应位置输入这些在对应位置输入这些字符字符。 课堂练习课堂练习n从键盘中输入圆的半径,编程求圆的面积从键盘中输入圆的半径,编程求圆的面积(精确到小数点后两位)(精确到小数点后两位) 计算公式:计算公式:S = r2 =3.14r2 。n例例1:编程求圆的面积:编程求圆的面积(精确到小数点后两位)(精确到小数点后两位) 计算公式:计算公式:S = r2 =3.14r2 。开始开始计算面积计算

22、面积输出结果输出结果输入半径输入半径#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(半径为半径为%4.2f的圆面积是的圆面积是%5.2f 平方米平方米n, fRadius, fArea); return 0;/*

23、圆面积计算程序圆面积计算程序*/#include stdio.h#define PI 3.14f / 3.14f 表示常量为浮点型表示常量为浮点型int main() float fRadius, fArea; printf(请输入圆的半径请输入圆的半径: ); scanf(%f, &fRadius) ; /输入半径值输入半径值 fArea= 3.14f * fRadius2 ; / 这种写法是否正确?这种写法是否正确? printf(半径为半径为%4.2f的圆面积是的圆面积是%5.2f 平方米平方米n, fRadius, fArea); return 0;以下程序是否正确以下程序是否

24、正确?n 是位是位“异或异或”运算符,只能用于整数。并不能用于运算符,只能用于整数。并不能用于 “求求平方平方”运算。运算。n求平方等计算需要用数学函数。求平方等计算需要用数学函数。n1、先包含数学库头文件、先包含数学库头文件n#include “math.h”n2、调用数学函数、调用数学函数n乘方乘方 pow(双精度浮点型变量双精度浮点型变量, n次方次方)n平方根平方根 sqrt( double )#include math.h#include stdio.h#define PI 3.14 / 3.14 表示常量为浮点型表示常量为浮点型int main() float fRadius, f

25、Area; printf(请输入圆的半径请输入圆的半径: ); scanf(%f, &fRadius) ; /输入半径值输入半径值 fArea= 3.14f * pow(fRadius, 2) ; /计算面积计算面积 printf(半径为半径为%4.2f的圆面积是的圆面积是%5.2f 平方米平方米n, fRadius, fArea); return 0;n变量名的命名规则?变量名的命名规则?n数据的类型有何作用?数据的类型有何作用?n如何输入数据?如何输入数据?n如何输出数据?如何输出数据?基础知识基础知识n关键字是由语言规定的具有特定意义的字符串,通常也关键字是由语言规定的具有特定意

26、义的字符串,通常也称为保留字。用户定义的标识符不应与关键字相同。语称为保留字。用户定义的标识符不应与关键字相同。语言的关键字分为以下几类:言的关键字分为以下几类:n (1)类型说明符类型说明符 用于定义、说明变量、函数或其它数据结构的类型。如用于定义、说明变量、函数或其它数据结构的类型。如int,doublen (2)语句定义符语句定义符 用于表示一个语句的功能。如用于表示一个语句的功能。如if 就是条件语句的语句定就是条件语句的语句定义符。义符。C语言的关键字语言的关键字n标准标准ANSI C 89一共只有一共只有32个关键字个关键字 p378 autobreakcasecharconstc

27、ontinuedefaultdo double else enum extern float for goto if int long register return short signed static sizeof struct switch typedef union unsigned void volatilewhileC99中新增:中新增:inline restrict _bool _complex _imaginaryn(1) 数据类型说明符(数据类型说明符(14个)个) 长短双正负长短双正负 long short double unsigned singned 无值整型浮点字符

28、无值整型浮点字符 void int float char 联合枚举结构联合枚举结构 union enum struct(2) 变量类型(变量类型(4个):个): 外部外部 静态自动静态自动 寄存器寄存器 extern static auto register (3)常量()常量(1个)个): constn(2)程序结构语句定义符(程序结构语句定义符(10个)个)n判断:判断: ifn循环:循环: for do while n转移:转移:goton跳出:跳出: break continuen返回:返回:returnn开关:开关:switch case3、其它关键字、其它关键字nsizeof 类型

29、大小类型大小ntypedef类型定义类型定义ndefault 默认默认nvolatile可变的变量可变的变量n数据为什么要区分类型?数据为什么要区分类型?n不同类型的数据代表不同的不同类型的数据代表不同的数据表示形式数据表示形式合法的取值范围合法的取值范围占用内存空间大小占用内存空间大小可参与的运算种类可参与的运算种类 数据类型(数据类型(Data TypeData Type) p42p42语言的数据类型语言的数据类型 n数据类型:对数据分配存储单元的安排,包数据类型:对数据分配存储单元的安排,包括存储单元的长度(所占字节数),以及数括存储单元的长度(所占字节数),以及数据的存储形式。据的存储

30、形式。 n不同的类型分配不同的长度和存储形式。不同的类型分配不同的长度和存储形式。n在语言中,数据类型可分为:在语言中,数据类型可分为:基本类型,基本类型,枚举类型,空类型,派生类型枚举类型,空类型,派生类型四大类四大类 p43p43。基本类型基本类型派生类型派生类型枚举类型枚举类型 (enum)空类型空类型(void)整型整型浮点类型浮点类型基本整型基本整型 (int)长整型长整型 (long)短整型短整型 (short)*双长整型双长整型 (long long int)字符型字符型 (char)*布尔型布尔型 (bool)数据类型数据类型单精度浮点型单精度浮点型 (float)双精度浮点型

31、双精度浮点型 (double)复数浮点型复数浮点型数组类型数组类型 ( )结构体类型结构体类型 (union)共用体类型共用体类型 (stuct)数据类型数据类型(p43)(p43)指针类型指针类型 ( * )函数函数计算机中的数据单位:bit, Byte, KB, MB, GB, TBnbit,位,位nByte,字节,字节 , BnKilo byte(KB), K nMega byte(MB),MnGiga byte(GB), GnTera byte(TB), T为什么每增加一个量级是为什么每增加一个量级是1024而不是更容易计算的而不是更容易计算的1000?为什么为什么2M网络下载速度只有

32、两百多网络下载速度只有两百多K?常量和符号常量常量和符号常量 (p39)n在程序运行过程中在程序运行过程中, ,其值不能被改变的量称为常量其值不能被改变的量称为常量n常量区分为不同的类型:常量区分为不同的类型:整型整型 100,012,3.14浮点型浮点型 3.14 , 1.23E2字符型字符型 a, 2,n字符串字符串 “a”, “ab”,“1232”符号常量符号常量 #define PRICE 30 变量变量 (p41)n变量的值存放在特定存储单元中的数据,在程序运变量的值存放在特定存储单元中的数据,在程序运行期间,变量的值是可以改变的。行期间,变量的值是可以改变的。n变量名对应着内存空间

33、中的某个地址,在对程序编变量名对应着内存空间中的某个地址,在对程序编译连接时由编译系统给每一个变量名分配对应的内译连接时由编译系统给每一个变量名分配对应的内存地址。从变量中取值,实际上是通过变量名找到存地址。从变量中取值,实际上是通过变量名找到相应的内存地址,从该存储单元中读取数据。相应的内存地址,从该存储单元中读取数据。图 3-33变量值变量名存储单元auint 整数,在目前绝大多数编译器上占整数,在目前绝大多数编译器上占4个字节。个字节。TC3.0中是中是2个字节个字节 int a=64 ;ufloat 浮点数浮点数单精度浮点数,一般是单精度浮点数,一般是4 4个字节长个字节长 float

34、 b=64.0 ;float b=64.0 ;uchar 字符字符字符,一般是字符,一般是1 1个字节长个字节长用来表示用来表示256256个个ASCIIASCII字符,或者字符,或者0-2550-255的整数。的整数。 char=a ;基本数据类型基本数据类型变量在内存中以补码的形式存储。变量在内存中以补码的形式存储。short int:0000000000001101int 或或 long int型:型:00000000000000000000000000001101在在VC中,以整数中,以整数13为例:其二进制数为为例:其二进制数为:1101负整数的补码为其正整数的反码负整数的补码为其正

35、整数的反码+1负数负数13:1000000000001101附符号位外,取反(附符号位外,取反(1变变0,0变变1)在在VC中,以整数中,以整数-13为例:其二进制数为为例:其二进制数为:-11011111111111110010反码反码+11111111111110011unsigned int 65523ushort int,短整型,短整型,2个字节。个字节。 简写为简写为shortulong int,长整型,长整型, 4个字节。个字节。 简写为简写为longusigned用来修饰用来修饰char、int、short和和long,说明他们是有符号的整,说明他们是有符号的整数(正整数、数(正

36、整数、0和负整数)。一般和负整数)。一般缺省缺省都是都是有符号有符号的,所以这的,所以这个修饰符通常省略个修饰符通常省略uunsigned用来修饰用来修饰char、int、short和和long,说明他们是无符号的整,说明他们是无符号的整数(正整数和数(正整数和0)整型数据类型修饰符整型数据类型修饰符关键字关键字sizeof 计算不同类型数据所占字节数计算不同类型数据所占字节数用法:用法: sizeof(变量或变量类型变量或变量类型) 返回变量类型所占字节数返回变量类型所占字节数#include stdio.hvoid main() printf(char : %dn, sizeof(char

37、); printf(int : %dn, sizeof(int); printf(long : %dn, sizeof(long); printf(float : %dn, sizeof(float); printf(double : %dn, sizeof(double); 各类整型量所分配的内存字节数及数的表示范围。各类整型量所分配的内存字节数及数的表示范围。 p45类型说明符类型说明符在在VC中,变量的范围中,变量的范围字节数字节数short-3276832767 即即 -215(215-1)2unsigned short065535 即即 0(216-1)2(long) int-231

38、(231-1)4unsigned long0(232-1)4两字节的最大数为两字节的最大数为:1111111111111111signed,最高位是符号位,最高位是符号位,15位有效数字,位有效数字, 最大值为最大值为 215-1unsigned, 16位有效数字,位有效数字, 最大值为最大值为 216-1浮点数:用来表示具有小数点的实数浮点数:用来表示具有小数点的实数 以指数的形式存放在存储单元中以指数的形式存放在存储单元中float 单精度浮点数单精度浮点数 4 字节字节(VC)double 双精度双精度浮点数浮点数 8 字节字节(VC)long double 长双精度长双精度 8字节字节

39、(VC)浮点型数据浮点型变量浮点型变量(1)(1)浮点型数据在内存中的存放形式浮点型数据在内存中的存放形式 l浮点型数在内存中占浮点型数在内存中占4 4个字节个字节(32(32位位) )。l浮点型数据是按照指数形式存储的。浮点型数据是按照指数形式存储的。l浮点型数分成小数部分和指数部分。浮点型数分成小数部分和指数部分。l指数部分采用规范化的指数形式。指数部分采用规范化的指数形式。浮点型常量的两种表示方法浮点型常量的两种表示方法小数小数指数指数0.1230.1231.23e-3 1.23e-3 或或 1.23E-31.23E-3 注意注意: : 1.1.字母字母e(e(或或E)E)之前必须有数字

40、,且之前必须有数字,且e e后面的指数必须为整数后面的指数必须为整数 2. 2. 数字和数字和e e之间不能有空格。之间不能有空格。 规范化的指数形式:规范化的指数形式: 在字母在字母e e(或(或E E)之前的小数部分中,小数点左边)之前的小数部分中,小数点左边应有一位(且只能有一位)非零的数字应有一位(且只能有一位)非零的数字. . 例如例如: : 123.456 123.456 可以表示为:可以表示为: 123.456e0, 12.3456e1, 1.23456e2, 123.456e0, 12.3456e1, 1.23456e2, 0.123456e3, 0.0123456e4, 0.

41、00123456e50.123456e3, 0.0123456e4, 0.00123456e5 “规范化的指数形式规范化的指数形式”为:为: 1.23456e3 1.23456e3 。 浮点数在内存中的存放形式浮点数在内存中的存放形式 p50浮点数占浮点数占4个字节(个字节(32位)内存空间。按指数形式存储。位)内存空间。按指数形式存储。浮点数浮点数3.14159在内存中的存放形式如下:在内存中的存放形式如下:.3141591符号符号 小数部分小数部分 指数指数 0.314159 * 101= 3.14159用二进制表示浮点数用二进制表示浮点数n二进制只有二进制只有0和和1,小数用下面的方式来

42、表示:,小数用下面的方式来表示:a12-1+a22-2+a32-3+.+an2-n n其中其中a1,a2等只可以是等只可以是0或者或者1。类型说明符类型说明符bit(byte)有效数字位数有效数字位数数的范围数的范围float 32(4)6710-371038 double64 (8)151610-30710308 单精度浮点数单精度浮点数4字节(字节(32bit),), 其中其中小数部分占小数部分占23 bit,指数占,指数占8 bit,符号位符号位1 bit。双精度浮点数双精度浮点数8字节(字节(64 bit),其中小数部分占),其中小数部分占52 bit,指数占,指数占11bit,符号位

43、符号位1 bit。小数部分的位数(小数部分的位数(bit)决定浮点数的精度。)决定浮点数的精度。思考:为什么思考:为什么float的有效数字位数不是的有效数字位数不是7,而是,而是6 7?ufloatfloat型数据提供型数据提供7 7位有效数字位有效数字udoubledouble型数据提供型数据提供1616位有效数字位有效数字 u使用不当导致舍入误差使用不当导致舍入误差#include main()float a;double b;a = 123456.789e4;b = 123456.789e4;printf(%fn%fn,a,b);程序执行结果:程序执行结果:123457888.0000

44、001234567890.000000uTC2中中int的范围是的范围是-3276832767u如果我们给它一个小于如果我们给它一个小于-32768或者大于或者大于32767的数会如何呢?的数会如何呢?超出取值范围会怎样?超出取值范围会怎样?u一台安装了一台安装了Windows 95/98的机器,如果连续的机器,如果连续运行运行49.7天没有重新启动,可能死机天没有重新启动,可能死机 u原因:原因:Windows自启动时刻起,有一个计数器,记录系统自启动时刻起,有一个计数器,记录系统已经运行了多少毫秒。这个计数器是个已经运行了多少毫秒。这个计数器是个unsigned long 类型的变量类型的

45、变量unsigned long 的最大值是:的最大值是:4294967295(232-1)一天有一天有 24*60*60*1000 = 86400000毫秒毫秒4294967295 / 86400000 = 49.71026961805当当49.7天的时候,此计数器会溢出,引起死机天的时候,此计数器会溢出,引起死机溢出(溢出(Overflow)造成的危害)造成的危害u整型常数整型常数18、-31长整型常量长整型常量 123l、123L、123456l、123456L无符号型常量无符号型常量 123u、 123Uu浮点常数浮点常数十进制小数形式十进制小数形式 123.45、456.78指数形式指

46、数形式 1e-2、4.5e3单精度浮点型常量单精度浮点型常量 123.45、 456.78、1e-2、4.5e3长双精度浮点型常量长双精度浮点型常量 123.45l、 456.78L、1e-2l、4.5e3L常数(常数(ConstantConstant)n整型常数缺省被看作整型常数缺省被看作int类型,如果超出类型,如果超出int的范围,就自的范围,就自动被看作动被看作long。可以在数字后面加上。可以在数字后面加上l或者或者L强制其为强制其为long。n浮点常数缺省为浮点常数缺省为double,后缀,后缀f或或F为为float,后缀,后缀l或或L为为long double。n因为字母因为字母

47、l和数字和数字1容易混淆,所以当用容易混淆,所以当用l做后缀时,常使用做后缀时,常使用大写形式。大写形式。u以数字以数字“0”开始的整型常数是八进制数开始的整型常数是八进制数0 02222、- -0 037370 01010和和1010大小不一样大小不一样u以以“0 x0 x”或者或者“0X0X”开始的整型常数是十六进制开始的整型常数是十六进制A-FA-F和和a-fa-f用来表示十进制的用来表示十进制的10-1510-15十六进制的形式比较常用,尤其在进行位一级的控制的时候十六进制的形式比较常用,尤其在进行位一级的控制的时候0 x0 x1212、- -0 x0 x1F, -1F, -0 x0

48、x1f1f八进制与十六进制常数八进制与十六进制常数练习,下列哪些数是合法的练习,下列哪些数是合法的16进制数进制数n0X2An0XA0n5An0XFFFFn0X3Hu字符常数的表示方法字符常数的表示方法na a, A A , 5 5 , % % , $ $ n单引号内只能有一个字符,除非用单引号内只能有一个字符,除非用 开头!开头!n单引号内不能没有字符!单引号内不能没有字符!u字符常数是一个普通整数,可参与各种运算字符常数是一个普通整数,可参与各种运算n每个字符具有一个每个字符具有一个0-2550-255之间的数值,可从之间的数值,可从ASCIIASCII表查出表查出n注意:注意: 5 5

49、和整数和整数5 5的区别的区别字符(字符(CharacterCharacter)常数)常数ASCII码表u转义字符转义字符 (p40)一些特殊字符(无法从键盘输入或者另有它用)用转义字符表示一些特殊字符(无法从键盘输入或者另有它用)用转义字符表示字符常数字符常数用八进制转义字符表示用八进制转义字符表示ASCII码码nooo 中的o代表8进制数(最多三位数)。n取值范围为: 0 至 777n注意,8进制数中不包含8.n使用规则:先将八进制数转换为十进制数,再取十进制对应的ASCII码。用十六进制转义字符表示用十六进制转义字符表示ASCII码码nxhh 中的h代表16进制数(最多两位数)。n取值范

50、围为: 0 至 FFn使用规则:先将十六进制数转换为十进制数,再取十进制对应的ASCII码。u定义方式:定义方式: char 变量名;变量名;u占占 1 个内存单元。个内存单元。u字符型变量可做为整型变量计算和显示。字符型变量可做为整型变量计算和显示。u取值范围:取值范围:uunsigned char 0- FF 0- 255usigned char -128 - 127字符型变量课堂练习:写出以下程序的输出课堂练习:写出以下程序的输出结果。结果。#include stdio.hvoid main() char cOctal = 101; char cHex = x41; char cVari

51、able = 65; printf(“cOctal: %c, %d n, cVariable, cVariable); printf(“cHex: %c, %d n, cHex, cHex); 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

52、”, ch, ch);/*分别以字符形式、整数形式输出分别以字符形式、整数形式输出ch */Char Char 型与型与 int int 型之间的关系型之间的关系u以字符型和整数型两种格式输出字符变量。以字符型和整数型两种格式输出字符变量。u用双引号括住的由用双引号括住的由0个或多个字符组成的字符序列个或多个字符组成的字符序列I am a stringI am a string表示空字符串表示空字符串转义字符也可以在字符串中使用转义字符也可以在字符串中使用引号只作为字符串开始和结束的标志引号只作为字符串开始和结束的标志C C语言内部用语言内部用 0 0 表示字符串的结束表示字符串的结束除注释外

53、,是唯一可以出现中文的地方除注释外,是唯一可以出现中文的地方ux和和x是不同的是不同的u里定义了一系列专门的字符串处理函数里定义了一系列专门的字符串处理函数字符串(字符串(StringString)常数)常数u宏常量宏常量也称符号常量也称符号常量一般采用大写字母表示一般采用大写字母表示 u#define 标识符标识符 字符串字符串不是语句,而是一种编译预处理命令不是语句,而是一种编译预处理命令u宏替换(宏替换(Macro Substitulition) #include #define PI 3.14159#define R 5.3main()printf(area = %fn, PI * R

54、 * R);printf(circumference = %fn, 2 * PI * R);宏常量宏常量l习惯上符号常量的标识符用大写字母,变量标识符用小写字母,以示区别。习惯上符号常量的标识符用大写字母,变量标识符用小写字母,以示区别。u用用const修饰定义的变量为常量修饰定义的变量为常量nconst float pi = 3.1425926; u常量只能在定义时赋值,然后不能再改变常量只能在定义时赋值,然后不能再改变其值其值u常数常数、 const常量常量、宏常量和枚举常量,宏常量和枚举常量,都可以用来表示一个永远不会改变的数。都可以用来表示一个永远不会改变的数。constconst常量

55、常量#include stdio.hvoid main() int iNum =65; const int iCount = 10; iNum = iCount; iCount = iNum; printf(%d, %d n, iNum, iCount);课堂练习:写出以下程序的输出课堂练习:写出以下程序的输出结果。结果。输出函数 printf()nprintf函数称为格式输出函数函数称为格式输出函数,用来向标准输出设备用来向标准输出设备(屏幕屏幕)写数据写数据;nprintf(“格式控制串格式控制串”,参数表,参数表 ); n格式化字符串包括两部分内容格式化字符串包括两部分内容: n1.正常

56、字符正常字符, 这些字符将按原这些字符将按原 样输出样输出; n2. 格式声明格式声明, %格式字符格式字符, 确定输出格式。确定输出格式。n参数表个数必须与格式化字声明的个数一样参数表个数必须与格式化字声明的个数一样,n 各参数之间用各参数之间用,分开分开, 且顺序一一对应且顺序一一对应, n 参数可以是变量参数可以是变量, 常量和表达式。常量和表达式。n1. 格式字符格式字符 符号符号作用作用 %d decimal 十进制有符号整数十进制有符号整数 %f float浮点数浮点数 (默认小数点后(默认小数点后6位)位) %c character 单字符单字符 %s string字符串字符串

57、%u unsigned 十进制无符号整数十进制无符号整数 %p pointer 指针指针 %e exponential指数形式的浮点数指数形式的浮点数(1.2e+02) %x, %Xhex 无符号以十六进制表示的整数无符号以十六进制表示的整数 %o octal无符号以八进制表示的整数无符号以八进制表示的整数说明:说明:n除了除了X,E,G外,其他格式字符必须用小写。外,其他格式字符必须用小写。n可以在可以在printf函数中的函数中的“格式控制格式控制”字符串中包含转义字符。字符串中包含转义字符。n一个格式说明必须以一个格式说明必须以“%”开头,以开头,以9个格式字符之一为结束,个格式字符之一

58、为结束,中间可以插入附加格式字符。中间可以插入附加格式字符。n想输出想输出%,则应该在格式控制字符串中用连续两个,则应该在格式控制字符串中用连续两个%表示表示n(1) 在在“%”和字母之间插进数字表示最大场宽。和字母之间插进数字表示最大场宽。 %3d 表示输出表示输出3位整型数位整型数, 不够不够3位右对齐。位右对齐。 %9.2f 表示输出场宽为表示输出场宽为9的浮点数的浮点数, 其中小数位为其中小数位为2, 整数位为整数位为6, 小数点占一位小数点占一位, 不够不够9位右对齐。位右对齐。 n(2)“-“ 输出左对齐。输出左对齐。 %-7d 表示输出表示输出7位整数左对齐位整数左对齐格式输入与

59、输出格式输入与输出(一)(一). .格式输入函数格式输入函数n函数作用:按照变量在内存的地址将变量值存函数作用:按照变量在内存的地址将变量值存 进去。进去。n一般格式:一般格式:scanfscanf(格式控制,地址表列)(格式控制,地址表列)同同printf函数函数是由若干个地址组成的表列,可以是变量的地址,或字符串的首地址是由若干个地址组成的表列,可以是变量的地址,或字符串的首地址 使用使用scanf() scanf() 函数时应注意的问题函数时应注意的问题 :(1)scanf() (1)scanf() 函数中的函数中的“格式控制格式控制”后面应当是变量地址,而不应后面应当是变量地址,而不应

60、是变量名。是变量名。 (2)(2) 如果在如果在“格式控制格式控制”字符串中字符串中除了格式说明以外还有其他字除了格式说明以外还有其他字符符, 则在输入数据时则在输入数据时在对应位置应输入与这些字符相同的字符在对应位置应输入与这些字符相同的字符。 (3) (3) 在用在用“”格式输入字符时,空格字符和格式输入字符时,空格字符和“转义字符转义字符”都都作为有效字符输入作为有效字符输入 (4) (4) 在输入数据时,遇以下情况时认为该数据结束。在输入数据时,遇以下情况时认为该数据结束。 遇空格,或按遇空格,或按“回车回车”或或“跳格跳格”(TabTab)键;)键; 按指定的宽度结束,如按指定的宽度结束,如“”,只取列;,只取列; 遇非

温馨提示

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

评论

0/150

提交评论