第三章 最简单的C程序设计_第1页
第三章 最简单的C程序设计_第2页
第三章 最简单的C程序设计_第3页
第三章 最简单的C程序设计_第4页
第三章 最简单的C程序设计_第5页
已阅读5页,还剩90页未读 继续免费阅读

下载本文档

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

文档简介

1、第第3章章 最简单的最简单的C程序设计程序设计3.1 顺序程序设计举例顺序程序设计举例3.2 数据的表现形式及其运算数据的表现形式及其运算3.3 C语句语句3.4 数据的输入输出数据的输入输出例例3.1 有人用温度计测量出用华氏法表示的温度有人用温度计测量出用华氏法表示的温度(如如 69F),今要求把它转换为以摄氏法表示,今要求把它转换为以摄氏法表示的温度的温度(如如 20 ) 解题思路解题思路:找到二者间的转换公式找到二者间的转换公式 )32(95fcf代表华氏温度代表华氏温度,c代表摄氏温度代表摄氏温度 3.1 顺序程序设计顺序程序设计举例举例 算法:算法:输入输入f的值的值输出输出c的值

2、的值)(3295fc N-S图图 #include int main ( ) float f,c; f=64.0; c= ( 5.0/9 ) * ( f-32 ); printf(f=%fnc=%fn,f,c); return 0; 定义定义f和和c为单精度浮点型变量为单精度浮点型变量 指定指定f的值的值 计算计算c的值的值 输出输出f和和c的的值值 32)(f95c 例例3.2 计算存款利息。有计算存款利息。有1000元,想元,想存一年。有三种方法可选:存一年。有三种方法可选: (1)活期,年利率为活期,年利率为r1 (2)一年期定期,年利率为一年期定期,年利率为r2 (3)存两次半年定期,

3、年利率为存两次半年定期,年利率为r3 请分别计算出一年后按三种方法所请分别计算出一年后按三种方法所得到的本息和。得到的本息和。解题思路:解题思路:确定计算本息和的公式。确定计算本息和的公式。从数学知识可知:若存款额为从数学知识可知:若存款额为p0,则:,则:活期存款一年后本息和为:活期存款一年后本息和为: p1=p0(1+r1)一年期定期存款,一年后本息和为:一年期定期存款,一年后本息和为: p2=p0(1+r2)两次半年定期存款,一年后本息和为:两次半年定期存款,一年后本息和为: ) +)(1+p0(1=p32323rr算法算法:输入输入p0,r1,r2,r3的值的值计算计算p1=p0(1+

4、r1)计算计算p2=p0(1+r2)计算计算p3=p0(1+ )(1+ )输出输出p1,p2,p323r23r#include int main ( ) float p0=1000, r1=0.0036,r2=0.0225, r3=0.0198, p1, p2, p3; p1 = p0 * (1 + r1); p2 = p0 * (1 + r2); p3 = p0 * (1 + r3/2) * (1 + r3/2); printf(p1=%fnp2=%fnp3=%fn,p1,p2,p3); return 0; 定义变量定义变量同时同时赋予初值赋予初值 3.2 数据的表现形式及其运算数据的表现形

5、式及其运算3.2.1 常量和变量常量和变量3.2.2 数据类型数据类型3.2.3 整型数据整型数据3.2.4 字符型数据字符型数据3.2.5 浮点型数据浮点型数据3.2.6 怎样确定常量的类型怎样确定常量的类型3.2.7 运算符和表达式运算符和表达式1.1.常量常量2.2.变量变量3.3.常变量常变量4.4.标识符标识符3.2.3整型数据整型数据1.整型数据的分类整型数据的分类2.整型数据在内存中的存放形式整型数据在内存中的存放形式 3.整型变量的定义整型变量的定义:3.2.4 字符型数据字符型数据 1.字符与字符代码字符与字符代码 2.字符变量字符变量3.字符串常量字符串常量3.2.5 浮点

6、型数据浮点型数据1.浮点型常量的表示方法浮点型常量的表示方法 2. 浮点型常量的类型浮点型常量的类型3. 浮点型变量浮点型变量3.2.7 运算符和表达式运算符和表达式1. 基本的算术运算符基本的算术运算符:2. 自增、自减运算符自增、自减运算符 + -3. 强制类型转换运算符强制类型转换运算符4. 算术表达式和运算符的算术表达式和运算符的 优先级与结合性优先级与结合性 5. 不同类型数据间的混合运算不同类型数据间的混合运算3.2.6 怎样确定常量的类型怎样确定常量的类型 3.2.1 常量和变常量和变量量 1.常量常量:程序运行时其值不能改变的量(程序运行时其值不能改变的量(即常数即常数)。)。

7、 整型常量整型常量:如如1000,12345,0,-345 实型常量实型常量u十进制小数形式十进制小数形式:如如0.34 -56.79 0.0u指数形式指数形式:如如12.34e3 (代表代表12.34 103) 字符常量字符常量:u普通字符普通字符 如如 a 3 ? u转义字符转义字符:如:如 n r ? 字符串常量字符串常量:如如 ”boy” ”1abc” 符号常量符号常量:#define PI 3.1416字符形式字符形式含义含义ASCII码码n换行,将当前光标移到下一行开头换行,将当前光标移到下一行开头10t水平制表,跳到下一个水平制表,跳到下一个Tab位置位置9b退格,将当前光标向后

8、退一位退格,将当前光标向后退一位8r回车,将当前光标移动到当前行首回车,将当前光标移动到当前行首13f换页,移动到下一页开头换页,移动到下一页开头12反斜杠反斜杠92单引号单引号39双引号双引号34d dd ddd1到到3位位8进制数所代表的字符进制数所代表的字符xhh1到到2位十六进制数所代表的字符位十六进制数所代表的字符例例 符号常量举例符号常量举例(3-1.c)#define PRICE 30#includeint main() int num,total; num=10; total=num*PRICE; printf(total=%d,total); return 0; 说明:说明:

9、如再用赋值语句给如再用赋值语句给PRICE赋值是错的赋值是错的 PRICE=40; /* 错误,不能给符号常量赋值错误,不能给符号常量赋值 */一般用大写字母(变量一般用大写字母(变量名用小写)。名用小写)。它的值在其作用域内不它的值在其作用域内不能改变,也能改变,也不能再被赋不能再被赋值。值。是是宏定义预处理命令宏定义预处理命令,不是不是C语句。语句。优点:含义清楚,优点:含义清楚,“一一改全改改全改”。符号常量符号常量:用标识符代表常量用标识符代表常量定义格式:定义格式: #define 符号常量符号常量 常量常量l变量定义的一般格式:变量定义的一般格式:数据类型数据类型 变量变量1,变量

10、,变量2,变量,变量n;决定分配字节数决定分配字节数和数的表示范围和数的表示范围合法标识符合法标识符例例: int a,b,c; float data; int a=1,b=-3,c; float data=3.67; char ch=A; int x=1,y=1,z=1; 2. 变量变量:在程序运行期间,在程序运行期间,其值可以改变的量。其值可以改变的量。l定义定义变量变量时指定该变量时指定该变量的的名字名字和和类型类型l变量初始化变量初始化:可以在定义时赋初值可以在定义时赋初值l变量名变量名和和变量值变量值是是两个不同的概念两个不同的概念:变量名实际上是以一个变量名实际上是以一个名字名字代

11、表的一个代表的一个存储地址存储地址;从变量中取值从变量中取值,实际上是通过变量名找到相应的内,实际上是通过变量名找到相应的内存地址,从该存储单元中读取数据存地址,从该存储单元中读取数据。int a=3; l 分清分清 “存储单元存储单元变量值变量值变量名变量名”#includeint main() int a,b=2; float data; a=1; data=(a+b)*1.2; printf(“data=%fn”,data); return 0; 定义变量 可执行语句 设置变量好处设置变量好处1 int student; stadent=19; /Undefined symbol sta

12、dent in function main 设置变量好处设置变量好处2 float a,b,c; c=a%b; /illegal use of floating point in function main l变量的使用:变量的使用:必须先作必须先作定义,后使用定义,后使用l变量定义位置:变量定义位置:一般一般放在函数开头放在函数开头3.常变量常变量:const int a=3;4.标识符标识符:一个对象的名字一个对象的名字语言规定标识符只能由语言规定标识符只能由字母、数字字母、数字和和下划线下划线3种字符组成,且种字符组成,且第一个字符必第一个字符必须为字母或下划线须为字母或下划线#defi

13、ne Pi 3.1415926 定义符号常量定义符号常量const float pi= 3.1415926 定义常变量定义常变量语言规定语言规定标识符(标识符(一个对象的名字一个对象的名字)只能由字母、数字和只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线。下划线三种字符组成,且第一个字符必须为字母或下划线。标识符标识符 C C语言中,标识符分为:语言中,标识符分为:分关健字和用户自定义标识两类。分关健字和用户自定义标识两类。 关健字关健字( (必须小写,必须小写,P378P378页页 附录附录C)C) 在语言中的关键字,根据其功能不同可分为以下几种。在语言中的关键字,根据

14、其功能不同可分为以下几种。说明数据类型:说明数据类型:intint long short char unsigned float long short char unsigned float double double enumenum structstruct union void const union void const定义数据类别:定义数据类别:auto static register externauto static register extern用于语句的:用于语句的:if else case default break do while if else case defaul

15、t break do while for switch for switch gotogoto return continue return continue为原有的数据类型命新名:为原有的数据类型命新名:typedeftypedef求字节数:求字节数:sizeofsizeof预处理:预处理:define include define include undefundef endifendif ifdefifdef ifndefifndef用户自定义标识:用户自定义标识:不允许是关键字不允许是关键字编译系统将编译系统将认为是两个不同的字符。认为是两个不同的字符。 变量名的长度允许变量名的长度允

16、许32个字符,建议最好不要超过个字符,建议最好不要超过8个字符。个字符。在选择变量名和其它标识符时,应注意做到在选择变量名和其它标识符时,应注意做到“见名知意见名知意”,即选有含意的英文单词即选有含意的英文单词 (或其缩写)作标识符。(或其缩写)作标识符。 注意区别:注意区别: 0 与与 o或或O 1 与与 | 与与 l或或L 例:以下哪些可以作为用户自定义的合法变量名:例:以下哪些可以作为用户自定义的合法变量名: flowers_1_2_3 M.D.John BASIC 3Day Student_name _total else ab ¥123 return Return month1 _3

17、D64 Mr.Wang Li_ling DEScription 3.2.2 数据类型数据类型 所谓所谓类型类型,就是对数据分配存储单元的安,就是对数据分配存储单元的安排,包括存储单元的长度排,包括存储单元的长度(占多少字节占多少字节)以以及数据的存储形式及数据的存储形式不同的类型分配不同的长度和存储形式不同的类型分配不同的长度和存储形式数据类型决定:数据类型决定:1. 1. 数据占内存字节数数据占内存字节数2. 2. 数据取值范围数据取值范围3. 3. 其上可进行的操作其上可进行的操作数据数据类型类型 空类型(空类型(void) 枚举类型(枚举类型(enum) 基本基本类型类型 基本整型(基本

18、整型(int)短整型(短整型(short int)长整型(长整型(long int)双长整型(双长整型(long long int)字符型(字符型(char)布尔型(布尔型(bool)整型整型类型类型 派生类型派生类型 浮点浮点 类型类型 指针类型(指针类型(*)数组类型(数组类型( )结构体类型(结构体类型(struct)共用体类型(共用体类型(union)函数类型()函数类型()单精度浮点型单精度浮点型float双精度浮点型双精度浮点型double复数浮点型复数浮点型C语言允许使用的数据类型语言允许使用的数据类型:基本类型基本类型枚举类型枚举类型空类型空类型派生类型派生类型u指针类型指针类

19、型u数组类型数组类型u结构体类型结构体类型u共用体类型共用体类型u函数类型函数类型算术类型算术类型纯量类型纯量类型组合组合类型类型用来定义函数用来定义函数 整型常量(整常数)整型常量(整常数)三种形式:三种形式:十进制整数:由数字十进制整数:由数字0-9和正负号表示和正负号表示.如如 123,-456,0八进制整数:由数字八进制整数:由数字0开头开头,后跟数字后跟数字0-7表示表示.如如0123,011十六进制整数:由十六进制整数:由0 x或或0X开头开头,后跟后跟0-9,a-f,A-F表示。表示。 如如0 x123,0Xff问题:问题:0141 = ( )100141 = ( )100 x1

20、41 = ( )100 x141 = ( )100Xff = ( )100Xff = ( )1097 321 255 1、整型数据的分类整型数据的分类 最基本的整型类型最基本的整型类型 基本整型基本整型(int型型):占占2个或个或4个字节个字节 短整型短整型(short int):VC+6.0中占中占2个字节个字节 长整型长整型(long int):VC+6.0中占中占4个字节个字节 双长整型双长整型(long long int):C99新增的新增的3.2.3 整型数据整型数据 数的表示及进制转换数的表示及进制转换扩充的整型类型:扩充的整型类型: 有符号基本整型有符号基本整型 signed

21、int 无符号基本整型无符号基本整型 unsigned int 有符号短整型有符号短整型 signed short int 无符号短整型无符号短整型 unsigned short int 有符号长整型有符号长整型 signed long int 无符号长整型无符号长整型 unsigned long int 有符号双长整型有符号双长整型 signed long long int 无符号双长整型无符号双长整型 unsigned long long int 说明说明:数据类型所占字节数随机器硬件不同而不同数据类型所占字节数随机器硬件不同而不同 0 00 00 00 00 00 00 00 00 00

22、 00 00 01 10 0 1 10 02、整型数据在内存中的存放形式整型数据在内存中的存放形式 数据在内存中是以数据在内存中是以二进制二进制形式存放的。形式存放的。 如如: int i; i=10; 注意注意:数值是以补码数值是以补码(complement) 表示的。表示的。如如: int i; i=-10;( -10的绝对值为的绝对值为10 )0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1 0 01 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 0 0 1

23、 11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 0 010的原码的原码取反取反再加再加1,得,得-100 0 1 11 11 11 11 11 1 1 11 11 11 1 1 11 11 1 1 1 1 11 1 0 00 00 00 00 00 0 0 00 00 00 0 0 00 00 0 0 0 1 1 215-1 -215+1 1 1 1 11 11 11 11 11 1 1 11 11 11 1 1 11 11 1 1 1 1 10 0 0 00 00 00 00 00 0 0 00 00 00 0 0

24、00 00 0 0 0 0 00 0 0 00 00 00 00 00 0 0 00 00 00 0 0 00 00 0 0 0 1 1 -1 1 0 符符号号位位1 1 1 11 11 11 11 11 1 1 11 11 11 1 1 11 11 1 1 1 0 0 -2 1 1 0 00 00 00 00 00 0 0 00 00 00 0 0 00 00 0 0 0 0 0-215 -32768 -32767 32767 整整型型数数据据的的存存储储空空间间和和取取值值范范围围类型类型字节字节数数取值范围取值范围2-3276832767 即即-215 215-1 4-214748364

25、82147483647即即-231 231-12065535,即,即0 216-1404294967295 ,即,即0 232-1short 2-215 215-1unsigned short 2065535,即,即0 216-1long4-231 231-1unsigned long40 232-1long long8-263 (263-1)unsigned long long80 (264-1)int unsigned int l 一个整常量后面加一个字母一个整常量后面加一个字母u或或U,认为是,认为是unsigned int型。型。 如如12345u,在内存中按,在内存中按unsigne

26、d int规定的方式存放规定的方式存放; 如果写成如果写成-12345u,则先将,则先将-12345转换成其补码转换成其补码53191,然后按无符号数存储。然后按无符号数存储。l在一个整常量后面加一个字母在一个整常量后面加一个字母l或或L,则认为是,则认为是long int 型常量。型常量。 例如:例如: 123L,432L,0L,0l,这常用于函数调用中。这常用于函数调用中。 如果函数的形参为如果函数的形参为long int型,则要求实参也为型,则要求实参也为long int型。型。注:注:3、整型变量的定义、整型变量的定义:例如例如:unsigned short c,d; (指定变量(指定

27、变量c、d为无符号短整型)为无符号短整型) long e,f; (指定变量(指定变量e、f为长整型)为长整型)例例3.1 整型变量的定义与使用整型变量的定义与使用 #include int main ( ) int a,b,c,d; unsigned u; a=12; b=-24; u=10; c=a+u; d=b+u; printf(a+u=%d,b+u=%dn,c,d); return 0; 说明说明: 可以看到不同种类的整型数据可以进行算术运算可以看到不同种类的整型数据可以进行算术运算 #include 例例3.2.3_1.cint main()int a,b; a=32767; /*2

28、147483647*/ b=a+1; printf(%d,%dn,a,b); return 0; 数值是以补码表示的。一个整型变量只能容纳有数值是以补码表示的。一个整型变量只能容纳有限范围内的数,无法表示大于限范围内的数,无法表示大于32767或小于或小于-32768的的数。数。遇此情况就发生遇此情况就发生“溢出溢出”。运行结果:运行结果: a+u=22,b+u=-14unsigned short price=100;printf(”%un” , price); 指定无符号十进制数的格式输出指定无符号十进制数的格式输出3.2.4 字符型数据字符型数据 1.字符与字符代码字符与字符代码: 大多数

29、系统采用大多数系统采用ASCII字符集字符集u字母:字母:A Z,a zu数字:数字:09u专门符号:专门符号:29个:个:! ” # & ( ) *等等u空格符:空格符:空格、水平制表符、换行空格、水平制表符、换行等等u不能显示的字符:不能显示的字符:空空(null)字符字符(以以0表示表示)、警告、警告(以以a表示表示)、退格、退格(以以b表示表示)、回车、回车(以以r表示表示)等等u字符字符1只是代表一个形状为只是代表一个形状为1的符号,在需要时按原的符号,在需要时按原样输出,在内存中以样输出,在内存中以ASCII码形式存储,占码形式存储,占1个字节个字节。 注意:注意:字符字符

30、1和整数和整数1是不同的概念是不同的概念: 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 00 0 0 0 0 0 0 1u整数整数1是以整数存储方式是以整数存储方式(二进制补码方式二进制补码方式)存储的,存储的,占占2个或个或4个字节个字节。如如a A ? n 101 (ab “c”不是字符常量)不是字符常量)l定义定义:用用单引号单引号括起来的括起来的单个单个普通字符普通字符或或转义字符转义字符. 字符常量的值字符常量的值:该字符的:该字符的ASCII码码值值(附录附录B) 如如 101 -A 012 -n 36 - x61 -a 60 -0 483 -( )例例:A-101

31、-x41-65如如 A65, a97, 048 , n10转义字符转义字符:反斜线后面跟一个字符或一个代码值表示反斜线后面跟一个字符或一个代码值表示3.2.4_1.c例例3.2.4_2.c 转义字符举例转义字符举例 #includevoid main() printf(101 x42 Cn); printf(I say:How are you?n); printf(C Programn); printf(Turbo C);运行结果:运行结果:(屏幕显示屏幕显示)A B CIsay:”How are you?”C ProgramTurbo C例例3.2.4_3.c#includevoid mai

32、n() printf(“Yb=n”); 运行结果:运行结果:屏幕显示:屏幕显示:=打印机输出:打印机输出: 字符型变量用来存放字符常量,注意只能放字符型变量用来存放字符常量,注意只能放一个字符一个字符。 字符变量的定义形式如下:字符变量的定义形式如下:char c1,c2; 在本函数中可以用下面语句对在本函数中可以用下面语句对c1,c2赋值:赋值: c1a;c2 b ; 一个字符变量在内存中占一个字符变量在内存中占一个字节一个字节。 l 字符数据在内存中的存储形式及其使用方法字符数据在内存中的存储形式及其使用方法2. 字符变量字符变量 字符相应的字符相应的ASCII代码代码放到存储单元中。这样

33、使放到存储单元中。这样使字符型数据和整型数据之字符型数据和整型数据之间可以通用。间可以通用。注意注意: 一个字符数据既可一个字符数据既可以以字符形式输出,也可以以字符形式输出,也可以以整数形式输出。以以整数形式输出。例例3.2.4_4.c 向字符变量赋以整数。向字符变量赋以整数。#include int main() char c1,c2; c1=97; c2=98; printf(“%c %cn”,c1,c2); printf(“%d %dn”,c1,c2); return 0; 相当于:相当于:c1a; c2b; 因因为为a和和b的的ASCII码为码为97和和98运行结果:运行结果:a b

34、97 98int i;i=a;printf(”%c,%dn”,i,i);); 运行结果:运行结果: a,97 字符数据与整型数据可以相互赋值。字符数据与整型数据可以相互赋值。例例3.2.4_5.c 大小写字母的转换大小写字母的转换#include int main() char c1,c2; c1=a; c2=b; c1=c1-32; c2=c2-32; printf(“c cn”,c1,c2);); return 0; 说明:说明:程序的作用是将两个小写字母程序的作用是将两个小写字母a和和b转换成大写字母转换成大写字母A和和B。从。从ASCII代码表代码表中可以看到中可以看到每一个小写字母比

35、它相应的每一个小写字母比它相应的大写字母的大写字母的ASCII码大码大32。语言允许。语言允许字符数据与整数直接进行算术运算。字符数据与整数直接进行算术运算。 x=255; y=256; z=258; 1 1 1 1 1 1 1 10 0 0 0 0 0 0 1 0 0 0 0 0 0 0 00 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1例例3.2.4_6.c 运行结果:运行结果: 3. 字符串常量字符串常量字符串常量是一对字符串常量是一对双撇号双撇号括起来的字符序列括起来的字符序列. 合法的字符串常量合法的字符串常量:“How do you do.”, “CHINA”, “a

36、” , “$123.45”可以输出一个字符串,如可以输出一个字符串,如 printf(“How do you do.”); 结论:结论:不能把一个字符串常量赋给一个字符变量。不能把一个字符串常量赋给一个字符变量。注意:若有字符变量注意:若有字符变量 char c;则则c=a; c=”a”; c”Hello!”;a a 0例例 a“a” 规定:在每一个字符串常量的结尾加一个规定:在每一个字符串常量的结尾加一个 “字符字符串结束标志串结束标志”,以便系统据此判断字符串是否结束。,以便系统据此判断字符串是否结束。规定以字符规定以字符作为字符串结束标志。作为字符串结束标志。 如如:若有一个字符串常量若

37、有一个字符串常量”Hello!”,实际上在内存中是:实际上在内存中是: Hello!0个字符,输出时不输出个字符,输出时不输出。 两种表示形式两种表示形式小数小数指数指数0.123 3e-3注意注意: 字母字母e(或或E)之前必须有数字,且之前必须有数字,且e后面的指数必须为整数。后面的指数必须为整数。1e3 1.8e-3 -123e-6 0.1e-3 e3 2.1e3.5 .e3 e 3.2.5 浮点型数据浮点型数据1. 浮点型常量的表示方法浮点型常量的表示方法 规范化的指数形式:规范化的指数形式: 在字母在字母e(或(或E)之前的小数部分中,小数点左边应有一)之前的小数部分中,小数点左边应

38、有一位(且只能有一位)非零的数字。位(且只能有一位)非零的数字。 例如例如: 123.456可以表示为:可以表示为: 123.456e0, 12.3456e1, 1.23456e2, 0.123456e3, 0.0123456e4, 0.00123456e 其中的其中的1.23456e2称为称为“规范化的指数形式规范化的指数形式”。以指数形。以指数形式输出一个实数时,必然以式输出一个实数时,必然以规范化的指数形式输出规范化的指数形式输出。 C编译系统将浮点型常量作为双精度来处理。编译系统将浮点型常量作为双精度来处理。 例如例如:float f; f = 2.45678 * 4523.65 说明

39、:说明:一个浮点型常量可以赋给一个一个浮点型常量可以赋给一个float型、型、double型、型、long double型变量。根据变量的类型型变量。根据变量的类型截取截取实型常量中相实型常量中相应的有效位数字。应的有效位数字。2. 浮点型常量的类型浮点型常量的类型 系统先把系统先把2.45678和和4523.65作为作为双精度数双精度数,然后进,然后进行相乘的运算,得到的乘也是一个行相乘的运算,得到的乘也是一个双精度数双精度数。最后取其。最后取其前前7位赋给浮点型变量位赋给浮点型变量f。若是在数的后面。若是在数的后面加字母加字母f或或F(如(如1.65f, 654.87F),这样编译系统就会

40、把它们按),这样编译系统就会把它们按单单精度精度(32位)处理。位)处理。+.1 2 3 4 5 63123.456在内存中的存储形式(用十进制数示意)在内存中的存储形式(用十进制数示意) 数符数符 小数部分小数部分 指数指数 小数小数部分占的位数越多部分占的位数越多,数据的有效数字越多数据的有效数字越多,精度精度越越高高;指数指数部分占的位数越多部分占的位数越多,则能表示的则能表示的数值范围数值范围越大。越大。 + .1 2 3 4 5 6 103 3. 浮点型变量浮点型变量 (1)浮点型数据在内存中的存放形式浮点型数据在内存中的存放形式 (2) 浮点型变量的分类浮点型变量的分类浮点型变量分

41、为:浮点型变量分为:l单精度(单精度(float型)型)l双精度(双精度(double型)型)l长双精度型(长双精度型(long double)三类形式。)三类形式。类型类型 位数位数 数的范围数的范围 有效数字有效数字float 32 10-38 1038 6 7 位位double型型 64 10-30810308 15 16位位long double 128 10-4932104932 18 19位位PPT77(3)例例3.2.5_1.c 浮点型数据的舍入误差浮点型数据的舍入误差#include int main() float a,b; a = 123456.789e5; b = a +

42、 20 ; printf(“%fn”,b); return 0; 一个浮点型变量只能保一个浮点型变量只能保证的有效数字是证的有效数字是7位,有效数字位,有效数字后面的数字是无意义的,并不后面的数字是无意义的,并不准确地表示该数。应当避免将准确地表示该数。应当避免将一个很大的数和一个很小的数一个很大的数和一个很小的数直接相加或相减,否则就会直接相加或相减,否则就会“丢失丢失”小的数。小的数。运行结果:运行结果: 12345678848.000000(保留小数点后保留小数点后6位,但整体只有前位,但整体只有前7位是准确数字)位是准确数字),3.2.6 怎样确定常量的类型怎样确定常量的类型l字符常量

43、字符常量:由单撇号括起来的单个字符或转义字符由单撇号括起来的单个字符或转义字符l整型常量整型常量:不带小数点的数值不带小数点的数值u系统根据数值的大小确定系统根据数值的大小确定int型型还是还是long型型等等l浮点型常量浮点型常量:凡以小数形式或指数形式出现的实数凡以小数形式或指数形式出现的实数uC编译系统把浮点型常量都按双精度处理编译系统把浮点型常量都按双精度处理,分配分配8个字节个字节 float a=3.1415926f ; long double b=1.23L ;3.2.7 运算符和表达式运算符和表达式 的运算符有以下几类:的运算符有以下几类:(附录(附录C)(1)算术运算符算术运

44、算符 (+ - * / %)(2)关系运算符关系运算符 ( !)(3)逻辑运算符逻辑运算符 (!(! | )(4)位运算符位运算符 ( | )(5)赋值运算符赋值运算符 (及其扩展赋值运算符)(及其扩展赋值运算符)(6)条件运算符条件运算符 (?:)(?:)(7)逗号运算符逗号运算符 (,)(,)(8)指针运算符指针运算符 (*和)和)(9)求字节数运算符(求字节数运算符(sizeof)(10)强制类型转换运算符(强制类型转换运算符( (类型类型) )(11)分量运算符(分量运算符(-)(12)下标运算符()下标运算符()(13)其他其他 (如函数调用运算符()(如函数调用运算符()3.2.7

45、_1sizeof.c单目运算符:单目运算符:只只有一个运算对象,有一个运算对象,如;如;-(负号)(负号)双目运算符:双目运算符:有有两个运算对象,如:两个运算对象,如:+(加号)(加号)三目运算符:三目运算符:有有三个运算对象,三个运算对象,如:?:条件运算如:?:条件运算1. 基本的算术运算符基本的算术运算符: (加法运算符,或(加法运算符,或正值正值运算符。如运算符。如:3+5、+3) (减法运算符,或(减法运算符,或负值负值运算符。如运算符。如:5-2、-3) * (乘法运算符。如(乘法运算符。如:3*5) (除法运算符。如(除法运算符。如:53) (模运算符,或称求余运算符(模运算符

46、,或称求余运算符,两侧均应为两侧均应为整型数据整型数据,如如:74的值为的值为3)。)。例例3.2.7_2.c5/25/2.0-5/25%25%-2-5%2-5%-2 两个实数相除的结果是双精度实数,而两个整数相两个实数相除的结果是双精度实数,而两个整数相除的结果为整数除的结果为整数 。语言规定了运算符的优先级和结合性。语言规定了运算符的优先级和结合性。 例例 j=3; k=+j; j=3; k=j+; a=3;b=5;c=(+a)*b; a=3;b=5;c=(a+)*b; j=3; printf(“%d”,+j); j=3; printf(“%d”,j+); k=4,j=4 k=3,j=4

47、输出输出4 输出输出3 c=20,a=4 c=15,a=4 2. 自增、自减运算符自增、自减运算符 + -作用:使变量值加作用:使变量值加1或减或减1,其种类有:,其种类有:前置前置 +i,- -i ( +i是先执行是先执行i=i+1后,再使用后,再使用i的值的值)后置后置 i+,i- - ( i+是先使用是先使用i的值后,再执行的值后,再执行i=i+1)例例 -i+ i=3; printf(“%d”,-i+); 例例 -i+ -(i+)i=3; printf(“%d”,-i+); /-3 例例 j+k; 说明:说明: + - 不能用于常量和表达式不能用于常量和表达式, 如如 5+,(a+b)

48、+ 优先级:优先级:- + - * / % + - + -结合方向:结合方向: 自右向左自右向左其常用于循环其常用于循环语句中使循环语句中使循环变量自动加变量自动加,也用于指针变也用于指针变量,使指针指量,使指针指向下一个地址。向下一个地址。C C编译系统在处理时尽可能多地将若编译系统在处理时尽可能多地将若干字符组成一个运算符干字符组成一个运算符( (在处理标识在处理标识符符, ,关键字时也按同一原则处理关键字时也按同一原则处理) )。 例例 j+k; (j+)+k;3. 强制强制类型转换运算符类型转换运算符 用强制类型转换运算符可以将一个表达式转换成所需类型。用强制类型转换运算符可以将一个表

49、达式转换成所需类型。 一般形式:一般形式:(类型名)(类型名)(表达式)(表达式)例如:例如:(double)a (double)(3/2)(int)(x+y) (int)x+y(float)(5%3) (int)3.6 例例3.2.7_3.c 强制类型转换。强制类型转换。#include void main ( ) float x; int i; x=3.6; i=(int)x; printf(x=%f, i=%dn,x,i); return 0; 运行结果:运行结果: x3.600000, i=3说明:说明:强制转换得到强制转换得到所需类型的中间变量,所需类型的中间变量,原变量类型不变原变

50、量类型不变 说明:说明:有两种类型转换,一种是系有两种类型转换,一种是系统自动进行的类型转换(隐式转统自动进行的类型转换(隐式转换),如换),如3+6.5。第二种是强制类型。第二种是强制类型转换(强制类型转换或显示转换)。转换(强制类型转换或显示转换)。4. 算术表达式和运算符的优先级与结合性算术表达式和运算符的优先级与结合性: 用算术运算符和括号将运算对象用算术运算符和括号将运算对象(也称操作数)连接也称操作数)连接起来的、符合语法规则的式子,称为起来的、符合语法规则的式子,称为算术表达式算术表达式。 运算对象运算对象: 包括常量、变量、函数等。包括常量、变量、函数等。 说明:说明:“-”可

51、为可为单目运算符时单目运算符时,右结合右结合性性;详见附录详见附录C如如: a * bc1.5 a max(x,y)是一个合法的表达式是一个合法的表达式算术运算符:算术运算符: + - * / %结合方向:结合方向:从左向右从左向右优先级:优先级: * / % + l语言规定了运算符的优先级语言规定了运算符的优先级和和结合性结合性l有关表达式使用中的问题说明有关表达式使用中的问题说明ANSIC并没有具体规定表达式中的子表达式的求值顺并没有具体规定表达式中的子表达式的求值顺序,允许各编译系统自己安排。序,允许各编译系统自己安排。 例如例如:对表达式对表达式 a= =f1( )+( )+f2( )

52、 ( ) 并不是所有的编并不是所有的编译系统都先调用译系统都先调用f1( )( ),然后调用,然后调用f2( )( )。在有的情况下。在有的情况下结果可能不同。结果可能不同。语言中有的运算符为一个字符,有的运算符由两个字语言中有的运算符为一个字符,有的运算符由两个字符组成,为避免误解,最好采取大家都能理解的写法。符组成,为避免误解,最好采取大家都能理解的写法。 例如例如:不要写成:不要写成i+j的形式,而应写成的形式,而应写成 ( i+ ) + j的形式的形式在调用函数时在调用函数时,实参数的求值顺序实参数的求值顺序,标准并无统一规定。标准并无统一规定。 例如:例如:的初值为,如果有下面的函数

53、调用的初值为,如果有下面的函数调用 printf(”d,d”,i,i+) 以上这种写法不宜提倡,以上这种写法不宜提倡, 最好改写成最好改写成 j = i+; printf(“%d, %d”, j,i); 5. 不同类型数据间的混合运算不同类型数据间的混合运算 混合运算:混合运算:整型(包括整型(包括int,short,long)、浮点型(包)、浮点型(包括括 float,double)可以混合运算。在进行运算时,不同)可以混合运算。在进行运算时,不同类型的数据要先转换成同一类型类型的数据要先转换成同一类型,然后进行运算然后进行运算. 隐式转换隐式转换什么情况下发生?什么情况下发生?运算转换运算

54、转换-不同类型数据混合运算时不同类型数据混合运算时赋值转换赋值转换-把一个值赋给与其类型不同的变量时把一个值赋给与其类型不同的变量时输出转换输出转换-输出时转换成指定的输出格式输出时转换成指定的输出格式函数调用转换函数调用转换-实参与形参类型不一致时转换实参与形参类型不一致时转换 运算转换规则运算转换规则:不同类型数据运算时先不同类型数据运算时先自动自动转换成同一类型转换成同一类型说明说明: : 必定的转换必定的转换 运算对象类型不同时转换运算对象类型不同时转换 例例 char ch; int i; float f; double d;ch / i + f * d - ( f + i )int

55、intdoubledoubledoubledoubledoubledoublech / i + f * d - ( f + i )intintdoubledoubledoubledoubledoubledouble10+a +i*f - d/i例例 int i; float f; double d; 10 + a + i * f - d / i3.3 C语句语句 3.3.1 C语句的作用和分类语句的作用和分类3.3.2 最基本的语句最基本的语句-赋值语句赋值语句l赋值运算符赋值运算符l复合运算符复合运算符l赋值表达式赋值表达式l赋值过程中的转换类型赋值过程中的转换类型l赋值语句赋值语句l变量赋

56、初值变量赋初值3.3.1 C语句的作语句的作 用和分类用和分类一个一个c程序可以有若干程序可以有若干个个源程序文件源程序文件组成组成;5类类控制语句控制语句函数调用语句函数调用语句 表达式语句表达式语句空语句空语句复合语句复合语句函数体由函数体由数据声明数据声明和和执行语句执行语句组成;组成; 一个源文件可以有若一个源文件可以有若干干 个个函数函数和和预处理命令预处理命令以以及及全局变量声明部分全局变量声明部分组成组成一个函数有一个函数有函数首部函数首部和和函数体函数体组成;组成; C语句分为语句分为 C C程序程序 源程序文件源程序文件1 1 源程序文件源程序文件2 2 源程序文件源程序文件

57、n n 预处理命令预处理命令 函数函数n n 函数函数1 1 数据声明数据声明 函数首部函数首部 函数体函数体 数据声明数据声明 执行语句执行语句 #include Int main ( ) int max(int x,int y); int a, b, c; scanf (%d,%d,&a,&b); c=max (a,b); printf (max=%d,c); return 0;int max(int x,int y) int z; if (xy) z=x; else z=y; return (z); 1 if() else 条件条件语句语句 2 switch() 开关语句

58、开关语句 多分支选择语句多分支选择语句3 for() 循环循环语句语句4 while() 循环循环语句语句5 do while() 循环循环语句语句6 continue 继续继续语句语句 结束本次循环语句结束本次循环语句7 break 间断语句间断语句 中止执行中止执行switch或循环语句或循环语句 8 goto 转向语句转向语句 9 return 从函数返回语句从函数返回语句(一一) 控制语句控制语句: 完成一定的控制功能。完成一定的控制功能。 #include int main ( ) int a, b, c; scanf (%d,%d,&a,&b); if (ab) c

59、=a; else c=b printf (max=%d,c); return 0; #include int main( ) int i,t; t=1; i=2; while(i=5) t=t*i; i=i+1; printf(%dn,t); return 0;(五)复合语句:用一对五)复合语句:用一对 括起来的语句。括起来的语句。 int t,z=200;t=z/100;printf(“%f”,t) ; (二二) 函数调用语句函数调用语句 有一个有一个函数函数调用加一个调用加一个分号分号构成一个语句。构成一个语句。 printf(“This is a C statement.”); c=ma

60、x (a,b); (三三) 表达式语句表达式语句 有一个有一个表达式表达式加一个加一个分号分号构成一个语句。构成一个语句。 a = 3 ;(四四) 空语句空语句 只有一个只有一个分号分号的语句(什么也不做)。的语句(什么也不做)。 用来做流程的转向点用来做流程的转向点 用来作为循环语句中的循环体用来作为循环语句中的循环体a=3i+ 与与i+;a+b ;C语言允许一行上写几个语句,语言允许一行上写几个语句,一个语句也可拆开写在几行上。一个语句也可拆开写在几行上。 解题思路:假设给定的三个边符合构成三角形的条件解题思路:假设给定的三个边符合构成三角形的条件 关键是找到求三角形面积的公式关键是找到求三角形面积的公式 公式为:公式为:

温馨提示

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

评论

0/150

提交评论