《C程序设计课件第1章》由会员分享,可在线阅读,更多相关《C程序设计课件第1章(66页珍藏版)》请在金锄头文库上搜索。
1、第三章第三章简单程序简单程序1 1常量常量2 2变量变量3 3表达式表达式4 4语句组成语句组成5 5表达式语句表达式语句6 6赋值赋值7 7类型转换类型转换8 8输入输入/输出输出常量常量(constant)n n在程序执行期间不变的数据称为常量在程序执行期间不变的数据称为常量在程序执行期间不变的数据称为常量在程序执行期间不变的数据称为常量n n如如如如 圆周率圆周率圆周率圆周率的近似值的近似值的近似值的近似值3.141659263.14165926自然对数底的近似值自然对数底的近似值自然对数底的近似值自然对数底的近似值2.71832.7183等等等等可以直接书写在程序中的常量,称为字面常量
2、。可以直接书写在程序中的常量,称为字面常量。可以直接书写在程序中的常量,称为字面常量。可以直接书写在程序中的常量,称为字面常量。#include#include voidmain()voidmain()printf(“%fprintf(“%fn”,2.7183);n”,2.7183);打印出打印出打印出打印出 2.71832.7183 n n常量标识符常量标识符为什么为什么为什么为什么 一个常量多次用到一个常量多次用到一个常量多次用到一个常量多次用到 方便修改常量方便修改常量方便修改常量方便修改常量如何声明如何声明如何声明如何声明枚举常量表中的标识符就是常量标识符枚举常量表中的标识符就是常量标
3、识符枚举常量表中的标识符就是常量标识符枚举常量表中的标识符就是常量标识符#define#define标识符标识符标识符标识符 常量常量常量常量如何使用如何使用如何使用如何使用#defineSPEED55#defineSPEED55 #definepai3.14#defineR10voidmain()floatx,y;x=2*pai*R;y=pai*R*R#definepai3.14#defineR10voidmain()floatx,y;x=2*3.14*10;y=3.14*10*10#definepai3.14;#defineR10;voidmain()floatx,y;x=2*pai*R;
4、y=pai*R*R#definepai3.14;#defineR10;voidmain()floatx,y;x=2*3.14;*10;y=3.14;*10;*10;变量变量(variable)n n相对于常量,变量是程序执行期间值可变的数据对象相对于常量,变量是程序执行期间值可变的数据对象相对于常量,变量是程序执行期间值可变的数据对象相对于常量,变量是程序执行期间值可变的数据对象n n两个方面两个方面两个方面两个方面变量值:程序运行某一时刻,变量所具有的值变量值:程序运行某一时刻,变量所具有的值变量值:程序运行某一时刻,变量所具有的值变量值:程序运行某一时刻,变量所具有的值变量属性:变量属性:
5、变量属性:变量属性:名字名字名字名字数据类型数据类型数据类型数据类型作用域作用域作用域作用域存储空间存储空间存储空间存储空间存储地址存储地址存储地址存储地址 等等等等编译程序在把高级语言程序翻译成机器语言时编译程序在把高级语言程序翻译成机器语言时编译程序在把高级语言程序翻译成机器语言时编译程序在把高级语言程序翻译成机器语言时给每个变量都分配一块适当的存储空间,以便随时保给每个变量都分配一块适当的存储空间,以便随时保给每个变量都分配一块适当的存储空间,以便随时保给每个变量都分配一块适当的存储空间,以便随时保存变量的值。这块存储区就是存变量的值。这块存储区就是存变量的值。这块存储区就是存变量的值。
6、这块存储区就是变量的存储区变量的存储区变量的存储区变量的存储区变量的地址变量的地址变量的地址变量的地址就是这块存储区的就是这块存储区的就是这块存储区的就是这块存储区的首地址首地址首地址首地址变量的值变量的值变量的值变量的值就是这块存储区中现行保存的数据。就是这块存储区中现行保存的数据。就是这块存储区中现行保存的数据。就是这块存储区中现行保存的数据。n n变量变量变量变量vv被分配在内存地址为被分配在内存地址为被分配在内存地址为被分配在内存地址为0F0000F000开始的存储区域,当开始的存储区域,当开始的存储区域,当开始的存储区域,当前值为前值为前值为前值为5 5。5V0F000:变量地变量地
7、址址变量名变量名变量值变量值变量的存储变量的存储区区变量声明变量声明n n声明变量的意义:声明变量的意义:引进新变量引进新变量引进新变量引进新变量规定所引变量的属性规定所引变量的属性规定所引变量的属性规定所引变量的属性n n语法语法变量声明变量声明变量声明变量声明类型类型类型类型 变量项表变量项表变量项表变量项表 ;变量项表变量项表变量项表变量项表变量项变量项变量项变量项变量项,变量项表变量项,变量项表变量项,变量项表变量项,变量项表变量项变量项变量项变量项标识符标识符标识符标识符 标识符标识符标识符标识符 =初值初值初值初值 n n不考虑初值的一般形式不考虑初值的一般形式Tid,id,.,i
8、d;变量类型变量类型变量类型变量类型变量名字变量名字变量名字变量名字变量的作用域变量的作用域变量的作用域变量的作用域n n例子例子intinti,j,k;i,j,k;charc;charc;intintt;t;floatamount,total;floatamount,total;boolboolflag;flag;enumenumred,blue,greenred,blue,greencolor;color;voidmain()intx,y;z=x*2;charz;x=x+y;z=x+y;w=z+x;变量出现形态变量出现形态n n声明出现声明出现n n赋值出现赋值出现n n引用出现引用出现i
9、ntn,x;n=1;n=3;n=n*5+7x=n;n: 编译程序会给该变量分编译程序会给该变量分编译程序会给该变量分编译程序会给该变量分配一块存储空间。但是配一块存储空间。但是配一块存储空间。但是配一块存储空间。但是从程序开始执行的时刻从程序开始执行的时刻从程序开始执行的时刻从程序开始执行的时刻一直到给该变量赋值之一直到给该变量赋值之一直到给该变量赋值之一直到给该变量赋值之前该变量是没有值的,前该变量是没有值的,前该变量是没有值的,前该变量是没有值的,这时称该变量为这时称该变量为这时称该变量为这时称该变量为“ “值无值无值无值无定义的定义的定义的定义的” ” 为变量赋以一个它值域为变量赋以一个
10、它值域为变量赋以一个它值域为变量赋以一个它值域之内的(即所属类型的)之内的(即所属类型的)之内的(即所属类型的)之内的(即所属类型的)一个数据。一旦为变量一个数据。一旦为变量一个数据。一旦为变量一个数据。一旦为变量赋值,该变量就变成了赋值,该变量就变成了赋值,该变量就变成了赋值,该变量就变成了“ “值有定义的值有定义的值有定义的值有定义的” ” 引用性出现分成引用性出现分成引用性出现分成引用性出现分成引用变量当前值引用变量当前值引用变量当前值引用变量当前值 一般在表达式中一般在表达式中一般在表达式中一般在表达式中 变量必须是变量必须是变量必须是变量必须是“ “值有定义的值有定义的值有定义的值有
11、定义的” ” 不会改变变量的值不会改变变量的值不会改变变量的值不会改变变量的值引用变量本身引用变量本身引用变量本身引用变量本身 多出现在参数结合中多出现在参数结合中多出现在参数结合中多出现在参数结合中 可是可是可是可是“ “值无定义的值无定义的值无定义的值无定义的” ” 可能会改变变量的值可能会改变变量的值可能会改变变量的值可能会改变变量的值 1 322x:22变量地址变量地址n n变量地址变量地址变量在内存中的所在位置,即内存地址。变量在内存中的所在位置,即内存地址。n n求地址求地址将单目运算符将单目运算符“&”,缀在变量前,缀在变量前,求相求相应变量地址。应变量地址。n n例子例子被分配
12、在内存地址为被分配在内存地址为被分配在内存地址为被分配在内存地址为0F0000F000开始的存储区域的变开始的存储区域的变开始的存储区域的变开始的存储区域的变量量量量V V&V&V的值就是的值就是的值就是的值就是 0F0000F000,也称为,也称为,也称为,也称为V V的指针的指针的指针的指针变量初始化变量初始化n n形式形式id=初值初值n n例子例子inti=0,j=1,k=100*2,m=k*i*j;charc=A;enumred,blue,greencolor=red;变量在声明时被赋以初值,则在程序开始运变量在声明时被赋以初值,则在程序开始运行时,它便取得了相应值,它是行时,它便取
13、得了相应值,它是值有定义值有定义的。的。enumseta,b,c,dvar_set;enumseta,b,c,dvar_set=d;enumseta,b,c,d;enumsetvar_set=d;enuma,b,c,dvar_set=d;变量使用注意事项变量使用注意事项n n程序中使用的一切变量都必须声明。程序中使用的一切变量都必须声明。程序中使用的一切变量都必须声明。程序中使用的一切变量都必须声明。n n在同一作用域内,任何两个变量不许重名,也不许与在同一作用域内,任何两个变量不许重名,也不许与在同一作用域内,任何两个变量不许重名,也不许与在同一作用域内,任何两个变量不许重名,也不许与其它类
14、标识符重名。其它类标识符重名。其它类标识符重名。其它类标识符重名。n n从程序的静态行文顺序看,变量的声明必须出现在所从程序的静态行文顺序看,变量的声明必须出现在所从程序的静态行文顺序看,变量的声明必须出现在所从程序的静态行文顺序看,变量的声明必须出现在所有使用之前。有使用之前。有使用之前。有使用之前。n n从程序的静态行文顺序看,在变量声明中给变量赋初从程序的静态行文顺序看,在变量声明中给变量赋初从程序的静态行文顺序看,在变量声明中给变量赋初从程序的静态行文顺序看,在变量声明中给变量赋初值处,相应表达式必须是可计算的。值处,相应表达式必须是可计算的。值处,相应表达式必须是可计算的。值处,相应
15、表达式必须是可计算的。n n从程序的动态执行顺序看,为变量赋值的出现必须在从程序的动态执行顺序看,为变量赋值的出现必须在从程序的动态执行顺序看,为变量赋值的出现必须在从程序的动态执行顺序看,为变量赋值的出现必须在所有使用值之前。所有使用值之前。所有使用值之前。所有使用值之前。表达式表达式n n表达式表达式表达式表达式(expression)(expression)是是是是 CC程序完成各类运算的主程序完成各类运算的主程序完成各类运算的主程序完成各类运算的主要部分,由运算符和运算分量组成。要部分,由运算符和运算分量组成。要部分,由运算符和运算分量组成。要部分,由运算符和运算分量组成。n n语法语
16、法语法语法表达式表达式表达式表达式基本表达式基本表达式基本表达式基本表达式后缀表达式后缀表达式后缀表达式后缀表达式一元表达式一元表达式一元表达式一元表达式二元表达式二元表达式二元表达式二元表达式条件表达式条件表达式条件表达式条件表达式逻辑表达式逻辑表达式逻辑表达式逻辑表达式赋值表达式赋值表达式赋值表达式赋值表达式顺序表达式顺序表达式顺序表达式顺序表达式基本表达式基本表达式基本表达式基本表达式标识符标识符标识符标识符字面常量字面常量字面常量字面常量(表达式)(表达式)(表达式)(表达式) n n基本表达式是基本表达式是C表达式的最底层,包括:表达式的最底层,包括:标识符标识符字面常量字面常量括号
17、表达式括号表达式n n标识符标识符包括变量标识符和常量标识符,它们的包括变量标识符和常量标识符,它们的类型由相应声明给出,当表达式计算时,变量类型由相应声明给出,当表达式计算时,变量应该是应该是值有定义的值有定义的。n n字面常量字面常量n n括号括表达式括号括表达式3*63*6u0u0r=(r=(x+yx+y)*5=(r-s)/8)*5=(r-s)/8n n33、66、uu、r r、xx、yy、55、ss、88都是基本表达式都是基本表达式都是基本表达式都是基本表达式n n经与运算符组合后的经与运算符组合后的经与运算符组合后的经与运算符组合后的 x+yx+y 、r-sr-s 是表达式;是表达式
18、;是表达式;是表达式;n n用括号括上的表达式用括号括上的表达式用括号括上的表达式用括号括上的表达式 ( (x+yx+y) )、( (r-sr-s) )又变成基本表达又变成基本表达又变成基本表达又变成基本表达式式式式n n最终若干基本表达式与运算符组合得到的最终若干基本表达式与运算符组合得到的最终若干基本表达式与运算符组合得到的最终若干基本表达式与运算符组合得到的r=(r=(x+yx+y)*5=(r-s)/8)*5-直接直接直接直接选择选择选择选择. .函数函数函数函数调调调调用用用用F()F()从左从左从左从左到右到右到右到右后后后后缀缀缀缀下下下下标标标标akak 1616无无无无基本表达
19、式基本表达式基本表达式基本表达式简单记简单记简单记简单记号号号号标识标识标识标识符、字面常量、符、字面常量、符、字面常量、符、字面常量、()()优先级优先级优先级优先级结合结合结合结合关系关系关系关系类别类别类别类别运算符运算符运算符运算符记号记号记号记号优先级优先级优先级优先级结合关系结合关系结合关系结合关系类别类别类别类别运算符运算符运算符运算符记号记号记号记号1414类类类类型型型型转换转换转换转换( (类类类类型名型名型名型名) )间间间间接接接接访问访问访问访问* *地址地址地址地址&算算算算术负术负术负术负、正、正、正、正- +- +逻辑逻辑逻辑逻辑非非非非! !按位取反按位取反按
20、位取反按位取反一元一元一元一元长长长长度度度度sizeofsizeof1515从右到左从右到左从右到左从右到左前前前前缀缀缀缀自增、自减自增、自减自增、自减自增、自减+ -+ -4 4逻辑逻辑逻辑逻辑或或或或|5 5逻辑逻辑逻辑逻辑与与与与&6 6按位或按位或按位或按位或| |7 7按位异或按位异或按位异或按位异或8 8按位与按位与按位与按位与&9 9判等运算判等运算判等运算判等运算= != !=1010关系运算关系运算关系运算关系运算 = =1111左移、右移左移、右移左移、右移左移、右移1212算算算算术术术术加、减加、减加、减加、减+ -+ -1313从左到右从左到右从左到右从左到右二元
21、二元二元二元算算算算术术术术乘、除、求余数乘、除、求余数乘、除、求余数乘、除、求余数* * / %/ %1 1从左到右从左到右从左到右从左到右顺顺顺顺序表达式序表达式序表达式序表达式, ,2 2二元二元二元二元赋值赋值赋值赋值= += -= *= /= = += -= *= /= %= = %= = &= = |=&= = |=3 3从右到左从右到左从右到左从右到左三元三元三元三元条件表达式条件表达式条件表达式条件表达式? :? :n nC表达式与通常数学表达式的书写区别:表达式与通常数学表达式的书写区别:1.所有字符必须写在一条水平线上。不允许所有字符必须写在一条水平线上。不允许出现上、下角
22、标、分数线等。出现上、下角标、分数线等。sqrt(x*y)x*x*x*x*x(x+y)/5fabs(x*y)2.a乘乘babababa*b3.除了下标使用方括号以外,所有括号必除了下标使用方括号以外,所有括号必须用圆括号。须用圆括号。a*b+c*(a+b)(a*(b+c*(a+b)4.数学中连续的关系运算,数学中连续的关系运算,ayb应该写成应该写成(ay)&(y=y|y=2&y2(xy)|(y=2)&(y2)(xy)|(y=2)&(y2)表达式计算规则表达式计算规则n n括号内的表达式先计算括号内的表达式先计算n n运算符分运算符分16个优先级,不同级运算符相邻,个优先级,不同级运算符相邻,
23、先计算优先级高的运算先计算优先级高的运算n n同级运算符相邻,按结合律的规定从左向同级运算符相邻,按结合律的规定从左向右或从右向左进行计算右或从右向左进行计算n n二元运算符和三元运算符的各个运算分量二元运算符和三元运算符的各个运算分量的计算次序是依赖于实现的。的计算次序是依赖于实现的。intx=3,y=4,r=1,s=9;r=(x+y)*5v|xxw=0|u+20v|xx false|truefalse|truexxxxtrue&falsetrue&false语句(语句(statement)n n程序的一个侧面是描述对数据的操作,操程序的一个侧面是描述对数据的操作,操作由一个个动作组成。作由
24、一个个动作组成。n n在程序设计语言中,表示动作的是语句,在程序设计语言中,表示动作的是语句,语句的执行语句的执行执行相关动作。执行相关动作。语句分类语句分类空语句空语句表达式语句表达式语句返回语句返回语句break语句语句continue语句语句goto语句语句复合语句复合语句if语句语句分支语句分支语句switch语句语句do语句语句重复性语句重复性语句while语句语句for语句语句简单语句简单语句结构语句结构语句语句语句表达式语句表达式语句n n语法语法表达式语句表达式语句表达式语句表达式语句表达式表达式表达式表达式 ;n n例子例子3+53+5;b=a*c-3b=a*c-3x+yx+
25、y&c+dc+d0;e-名称名称名称名称e e应为应为应为应为左左左左值值值值(e)(e)无无无无ekek 应为变应为变应为变应为变量名量名量名量名标识标识标识标识符符符符附加条件附加条件附加条件附加条件表达式表达式表达式表达式n n+和和和和- -v v0 011一元一元一元一元-v-vv v0 0v v0 011后后后后缀缀缀缀v-v-v v0 0+1+1一元一元一元一元+v+vv v0 0v v0 0+1+1后后后后缀缀缀缀v+v+运算后表达式运算后表达式运算后表达式运算后表达式值值值值运算后运算后运算后运算后v v的的的的值值值值类别类别类别类别表达式表达式表达式表达式Eg: (1)
26、int p=1,q; (2) int p=1,q; q=p+; q=+p; q=1;p=2 q=2;p=2类型转换类型转换n n为什么要进行类型转换为什么要进行类型转换对对对对 CC而言,各种不同类型及其数据是有区别的而言,各种不同类型及其数据是有区别的而言,各种不同类型及其数据是有区别的而言,各种不同类型及其数据是有区别的C C对参与运算的运算分量类型对参与运算的运算分量类型对参与运算的运算分量类型对参与运算的运算分量类型 在参数结合时对参在参数结合时对参在参数结合时对参在参数结合时对参数的类型都有一定的限制或进行一些必要的转换数的类型都有一定的限制或进行一些必要的转换数的类型都有一定的限制
27、或进行一些必要的转换数的类型都有一定的限制或进行一些必要的转换voidmain()boolx=true,y=true,z=true;intw=x+y+z;boolu=x+y+z;隐式类型转换隐式类型转换n n对象对象各种浮点类型各种浮点类型各种浮点类型各种浮点类型各种整数类型各种整数类型各种整数类型各种整数类型n n转换的原因转换的原因每一类型数据存储长度,表示形式不同每一类型数据存储长度,表示形式不同每一类型数据存储长度,表示形式不同每一类型数据存储长度,表示形式不同隐式转换规则隐式转换规则n n单目运算(一元运算、后缀运算)转换规则单目运算(一元运算、后缀运算)转换规则所有浮点类型不转换所
28、有浮点类型不转换所有浮点类型不转换所有浮点类型不转换长度大于长度大于长度大于长度大于intint类型的整数类型不转换类型的整数类型不转换类型的整数类型不转换类型的整数类型不转换长度小于长度小于长度小于长度小于intint类型的带符号整数类型转换成类型的带符号整数类型转换成类型的带符号整数类型转换成类型的带符号整数类型转换成intint类型类型类型类型长度小于长度小于长度小于长度小于intint类型的无符号整数类型类型的无符号整数类型类型的无符号整数类型类型的无符号整数类型 值可以用值可以用值可以用值可以用intint类型表示,转换成类型表示,转换成类型表示,转换成类型表示,转换成intint类
29、型类型类型类型 值不能用值不能用值不能用值不能用intint类型表示,转换成类型表示,转换成类型表示,转换成类型表示,转换成unsignedunsignedintint类型类型类型类型n n双目运算和三目运算双目运算和三目运算向类型高的运算分量转换向类型高的运算分量转换向类型高的运算分量转换向类型高的运算分量转换把短类型转换成长类型把短类型转换成长类型把短类型转换成长类型把短类型转换成长类型把整数类型转换成浮点类型把整数类型转换成浮点类型把整数类型转换成浮点类型把整数类型转换成浮点类型把有符号类型转换成无符号类型把有符号类型转换成无符号类型把有符号类型转换成无符号类型把有符号类型转换成无符号类
30、型longdoubledoublefloatunsignedlonglonglonglongunsignedlonglongunsignedintunsignedchar、unsignedshortintchar、short把短类型转换成长类型把短类型转换成长类型把短类型转换成长类型把短类型转换成长类型把整数类型转换成浮点类型把整数类型转换成浮点类型把整数类型转换成浮点类型把整数类型转换成浮点类型把有符号类型转换成无符号类型把有符号类型转换成无符号类型把有符号类型转换成无符号类型把有符号类型转换成无符号类型各占用多少字节各占用多少字节?强制类型转换强制类型转换n n形式形式形式形式(类型名)(
31、类型名)(类型名)(类型名)n n例子例子例子例子(char)(A+0)(char)(A+0)结果为结果为结果为结果为charchar类型小写的类型小写的类型小写的类型小写的 qq(int)5.2/2(int)5.2/2结果为结果为结果为结果为intint类型的类型的类型的类型的2 2(float)5/25/(float)2(float)5/25/(float)2结果为结果为结果为结果为floatfloat类型的类型的类型的类型的2.52.5n n注意注意注意注意 类型名必须用括号括上,该运算符就是这种形式;类型名必须用括号括上,该运算符就是这种形式;类型名必须用括号括上,该运算符就是这种形式
32、;类型名必须用括号括上,该运算符就是这种形式; 用括号把它的运算分量括上是一种好的习惯用括号把它的运算分量括上是一种好的习惯用括号把它的运算分量括上是一种好的习惯用括号把它的运算分量括上是一种好的习惯 (char)(A+0)(char)(A+0)结果为结果为结果为结果为charchar类型小写的类型小写的类型小写的类型小写的 qq (char)A+0(char)A+0结果为结果为结果为结果为intint类型的类型的类型的类型的113113。赋值运算过程赋值运算过程w w计算赋值运算符右端表达式计算赋值运算符右端表达式e的值的值w w若若e与与v赋值兼容,把赋值兼容,把e的值按赋值转换规的值按赋
33、值转换规则转换成赋值运算符左端则转换成赋值运算符左端v的类型的类型w w把转换后的值送入把转换后的值送入v中中n n例子例子floatv;floatv=3.0;floatv;floatv=3.0;intinti=3;i=3;intinti;i;v=i+3;i=v+3;v=i+3;i=v+3;赋值兼容赋值兼容v=ev=e中要求中要求中要求中要求e e的类型与的类型与的类型与的类型与v v的类型兼容的类型兼容的类型兼容的类型兼容nullnull指指指指针针针针常量常量常量常量任何任何任何任何类类类类型型型型void *void *类类类类型型型型T T的指的指的指的指针针针针T T的指的指的指的指
34、针针针针void *void *类类类类型型型型T T 的指的指的指的指针针针针,其中,其中,其中,其中T T 与与与与T T兼容兼容兼容兼容T T的指的指的指的指针针针针兼容的兼容的兼容的兼容的联联联联合体合体合体合体类类类类型型型型联联联联合体合体合体合体类类类类型型型型兼容的兼容的兼容的兼容的结结结结构体构体构体构体类类类类型型型型结结结结构体构体构体构体类类类类型型型型算算算算术类术类术类术类型型型型算算算算术类术类术类术类型型型型右端操作数类型右端操作数类型左端操作数类型左端操作数类型算术赋值转换规则算术赋值转换规则适适适适应应应应v v v v的的的的长长长长度(精度)把度(精度)
35、把度(精度)把度(精度)把e e e e的的的的值转换值转换值转换值转换成成成成v v v v的的的的类类类类型型型型浮点浮点浮点浮点类类类类型型型型浮点浮点浮点浮点类类类类型型型型把把把把e e e e的的的的值值值值直接直接直接直接转换转换转换转换成成成成v v v v的浮点的浮点的浮点的浮点类类类类型,送入型,送入型,送入型,送入v v v v中。中。中。中。整数整数整数整数类类类类型型型型浮点浮点浮点浮点类类类类型型型型把把把把e e e e的的的的值值值值截尾取整,截尾取整,截尾取整,截尾取整,转换转换转换转换成整数成整数成整数成整数类类类类型;在按照型;在按照型;在按照型;在按照v
36、 v v v和和和和e e e e都是整数都是整数都是整数都是整数类类类类型的型的型的型的规则进规则进规则进规则进行行行行转换转换转换转换。浮点浮点浮点浮点类类类类型型型型整数整数整数整数类类类类型型型型l l适适适适应应应应v v v v的的的的长长长长度,按度,按度,按度,按补码补码补码补码方式直接方式直接方式直接方式直接转换转换转换转换e e e e的的的的值为值为值为值为v v v v类类类类型。型。型。型。l l若若若若v v v v的的的的长长长长度度度度eeee的的的的长长长长度,度,度,度,则则则则e e e e扩扩扩扩展到展到展到展到v v v v的的的的长长长长度度度度l
37、l若若若若v v v v的的的的长长长长度度度度eeee的的的的长长长长度,从度,从度,从度,从e e e e的尾部截取合适的的尾部截取合适的的尾部截取合适的的尾部截取合适的长长长长度数据,保持数度数据,保持数度数据,保持数度数据,保持数值值值值e e e e的符号,送入的符号,送入的符号,送入的符号,送入v v v v中中中中整数整数整数整数类类类类型型型型整数整数整数整数类类类类型型型型转换规则转换规则转换规则转换规则e e e e的的的的类类类类型型型型v v v v的的的的类类类类型型型型输入输入/输出输出(I/O)n n输入输入把数据从外部设备(磁盘、把数据从外部设备(磁盘、把数据从
38、外部设备(磁盘、把数据从外部设备(磁盘、键盘键盘键盘键盘、磁带、传感器、磁带、传感器、磁带、传感器、磁带、传感器、)上读入计算机内。)上读入计算机内。)上读入计算机内。)上读入计算机内。n n输出输出指把计算机内部的数据送到外部设备(磁盘、指把计算机内部的数据送到外部设备(磁盘、指把计算机内部的数据送到外部设备(磁盘、指把计算机内部的数据送到外部设备(磁盘、显显显显示器示器示器示器、打印机、打印机、打印机、打印机、). .n nC语言中的处理方式语言中的处理方式一切外部设备全部定义为文件一切外部设备全部定义为文件一切外部设备全部定义为文件一切外部设备全部定义为文件C C的的的的 I/OI/O全
39、部是针对文件的全部是针对文件的全部是针对文件的全部是针对文件的通过标准函数库中若干标准函数实现通过标准函数库中若干标准函数实现通过标准函数库中若干标准函数实现通过标准函数库中若干标准函数实现I/OI/O。n n程序文件分类程序文件分类头文件头文件头文件头文件(.h)(.h)代码文件代码文件代码文件代码文件(. (.cppcpp或或或或 .c).c)n n标准库函数标准库函数#include#include命令命令命令命令意义意义意义意义将源文件包含到当前源程序文件中将源文件包含到当前源程序文件中将源文件包含到当前源程序文件中将源文件包含到当前源程序文件中形式形式形式形式#include#inc
40、lude #include“#include“文件名文件名文件名文件名” ”标准标准标准标准I/OI/O函数头文件函数头文件函数头文件函数头文件stdio.hstdio.h任何任何C C 程序使用程序使用I/OI/O函数函数, ,必须引用该标准头文件必须引用该标准头文件: :#include#include 单个字符输入单个字符输入n n输入函数输入函数getchar()从标准输入设备(键盘)上读入一个字符,作从标准输入设备(键盘)上读入一个字符,作从标准输入设备(键盘)上读入一个字符,作从标准输入设备(键盘)上读入一个字符,作为函数值为函数值为函数值为函数值使用使用使用使用charcharc
41、hch; ;chch= =getchargetchar();();读入一个字符送入变量读入一个字符送入变量chch中中单个字符输出单个字符输出n n输出函数输出函数putchar(int型表达式型表达式)intint型表达式计算出的值转换成字符类型值输出到型表达式计算出的值转换成字符类型值输出到型表达式计算出的值转换成字符类型值输出到型表达式计算出的值转换成字符类型值输出到标准输出设备(显示器)上。标准输出设备(显示器)上。标准输出设备(显示器)上。标准输出设备(显示器)上。函数值函数值函数值函数值如果正确,输出的如果正确,输出的如果正确,输出的如果正确,输出的intint型整数作为函数值型整
42、数作为函数值型整数作为函数值型整数作为函数值如果错误,则如果错误,则如果错误,则如果错误,则EOFEOF( -1-1)作为函数值)作为函数值)作为函数值)作为函数值使用使用charcharchch=c;=c;putchar(ch+3);putchar(ch+3);格式输入函数格式输入函数n n形式形式形式形式scanfscanf(, )n n意义意义意义意义 其操作是从标准输入设备上读入一系列数据,按其操作是从标准输入设备上读入一系列数据,按其操作是从标准输入设备上读入一系列数据,按其操作是从标准输入设备上读入一系列数据,按格式控制的要求进行转换并送入输入列表所列的格式控制的要求进行转换并送入
43、输入列表所列的格式控制的要求进行转换并送入输入列表所列的格式控制的要求进行转换并送入输入列表所列的诸变量中诸变量中诸变量中诸变量中n n函数值函数值函数值函数值输入的数据个数输入的数据个数输入的数据个数输入的数据个数如果输入操作正确如果输入操作正确如果输入操作正确如果输入操作正确EOFEOF否则否则否则否则n n输入列表输入列表&v1,&v2,&v3,&vnn n格式控制格式控制含有各种以百分号开始的格式控制符的常量含有各种以百分号开始的格式控制符的常量字符串字符串如下是一个格式控制:如下是一个格式控制:“%d%c%f%d”“%.d%.d”%g%g%e%e%f%f(float)(float)以
44、小数或指数形式以小数或指数形式以小数或指数形式以小数或指数形式浮点数浮点数浮点数浮点数%s s(series(series) )字符串字符串字符串字符串%c c(char(char) )单单单单个字符个字符个字符个字符%u u(undesigned(undesigned) )无符号无符号无符号无符号1010进进进进制整数制整数制整数制整数%d d(designed(designed) )带带带带符号符号符号符号1010进进进进制整数制整数制整数制整数整数整数整数整数格式控制符格式控制符格式控制符格式控制符输输输输入要求入要求入要求入要求输输输输入数据入数据入数据入数据类类类类型型型型n n设设
45、i为为int型变量、型变量、ch为为char型变量、型变量、v为为float型变量、型变量、k为为int型变量型变量scanf(“%d%c%f%d”,&i,&ch,&v,&k)从键盘上输入数据从键盘上输入数据1234123e+2987 变量变量i得到整数数据得到整数数据1234变量变量ch得到字符型数据空格得到字符型数据空格v得到浮点型数据得到浮点型数据12300k得到整数数据得到整数数据987格式输出格式输出n n形式形式printfprintf(, )n n意义意义其操作是按照格式控制的要求,把输出列表上的其操作是按照格式控制的要求,把输出列表上的其操作是按照格式控制的要求,把输出列表上的
46、其操作是按照格式控制的要求,把输出列表上的数据转换成字符串,送入标准输出设备上输出。数据转换成字符串,送入标准输出设备上输出。数据转换成字符串,送入标准输出设备上输出。数据转换成字符串,送入标准输出设备上输出。n n函数值函数值输出的字符个数输出的字符个数如果输出操作正确;如果输出操作正确;EOF否则。否则。n n输出列表输出列表输出列表输出列表 e1,e2,e3,ene1,e2,e3,enn n格式控制格式控制格式控制格式控制以字符形式以字符形式以字符形式以字符形式输输输输出一出一出一出一个字符:个字符:个字符:个字符:c c1 1%c%cc c%-mu%-mu%mu%mu以无符号以无符号以
47、无符号以无符号1010进进进进制形制形制形制形式式式式输输输输出整数出整数出整数出整数字段宽度字段宽度m m不不应小于数据应小于数据长度长度%u%uu u%-%-mdmd%mdmd以以以以带带带带符号符号符号符号1010进进进进制形制形制形制形式式式式输输输输出整数(正数出整数(正数出整数(正数出整数(正数不不不不输输输输出符号)出符号)出符号)出符号)M M为字段宽度为字段宽度, ,表示相应输表示相应输出段所占字出段所占字符个数符个数%d%dd d说说说说明明明明N N省缺省缺省缺省缺值值值值mm省缺省缺省缺省缺值值值值使用形式使用形式使用形式使用形式格式符格式符格式符格式符“-”表示以左对
48、齐方式输出%m.nem.ne以指数形式以指数形式以指数形式以指数形式输输输输出是出是出是出是实实实实数:数:数:数: x.xxx.xxxexxxxexxx6 6%e%ee e%-%-m.nfm.nf%m.nfm.nf以小数形式以小数形式以小数形式以小数形式输输输输出是出是出是出是实实实实数:数:数:数:xxxxx.xxx.xxxx6 6n n表示小数表示小数部分占用部分占用的字符数的字符数%f%ff f%-ms%-ms%ms%ms输输输输出字符串:出字符串:出字符串:出字符串:cccccc字符串字符串字符串字符串长长长长度度度度%s%ss s说说说说明明明明N N省缺省缺省缺省缺值值值值mm省
49、缺省缺省缺省缺值值值值使用形式使用形式使用形式使用形式格式符格式符格式符格式符%-%-m.nem.neprintf(“num1=%2dflag=%cnarea=%10.3fnum2=%5dn”,25,A,123.0/2,987);num1=25flag=Aarea= 61.500num2=987n例例3-3修改例修改例3-2使之适用于任意长、宽、面积;使之适用于任意长、宽、面积;并产生一个较好的输出格式。并产生一个较好的输出格式。#include#includestdio.hstdio.h #include#includemath.hmath.h voidmain()voidmain()flo
50、atx1,x2,b,d;floatx1,x2,b,d;floatlength,floatlength,width,areawidth,area; ;printf(pleaseprintf(pleaseinputinputlength,width,area:nlength,width,area:n););scanf(%f%f%f,&length,&width,&areascanf(%f%f%f,&length,&width,&area); );b=-2.0*(b=-2.0*(length+widthlength+width); );d=d=sqrt(bsqrt(b*b-4.0*4.0*area)
51、;*b-4.0*4.0*area);x1=(-b+d)/(2*4);x1=(-b+d)/(2*4);x2=(-b-d)/(2*4);x2=(-b-d)/(2*4);printf(x1=%.1fx2=%.1fn,x1,x2);printf(x1=%.1fx2=%.1fn,x1,x2);n n首先将在终端屏幕上显示一行提示首先将在终端屏幕上显示一行提示首先将在终端屏幕上显示一行提示首先将在终端屏幕上显示一行提示:Pleaseinput:Pleaseinput:lenthlenth,width,area:,width,area:这时计算机处于等待输入状态。这时计算机处于等待输入状态。这时计算机处于等
52、待输入状态。这时计算机处于等待输入状态。n n操作员应顺次从键盘键入矩形方框的长、宽和面积操作员应顺次从键盘键入矩形方框的长、宽和面积操作员应顺次从键盘键入矩形方框的长、宽和面积操作员应顺次从键盘键入矩形方框的长、宽和面积设键入值为设键入值为设键入值为设键入值为: :50305005030500 n n键入结束后,计算机继续向下运行,产生如下输出键入结束后,计算机继续向下运行,产生如下输出键入结束后,计算机继续向下运行,产生如下输出键入结束后,计算机继续向下运行,产生如下输出: :x1=36.6x2=3.4x1=36.6x2=3.4n n到此程序执行结束。到此程序执行结束。到此程序执行结束。到此程序执行结束。本章小结本章小结n常量常量n变量变量n表达式表达式n语句组成语句组成n表达式语句表达式语句n赋值赋值n类型转换类型转换n输入输入/输出输出作业作业3.13.23.33.63.93.133.14-1、3、5、73.27