第3章顺序程序设计_第1页
第3章顺序程序设计_第2页
第3章顺序程序设计_第3页
第3章顺序程序设计_第4页
第3章顺序程序设计_第5页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

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

文档简介

1、第3章 最简单的程序设计 顺序程序设计 编写编写C C语言程序,应具备以下知识和能力:语言程序,应具备以下知识和能力:1 1、要有正确的解题思路,即学会设计算法。、要有正确的解题思路,即学会设计算法。2 2、掌握、掌握C C语言的语法。语言的语法。3 3、采用结构化的程序设计方法编写程序。、采用结构化的程序设计方法编写程序。3.1 顺序程序设计举例例例3.1 3.1 华氏温度的摄氏温度的转换。华氏温度的摄氏温度的转换。#includevoid main() float f,c; scanf(“%f ”,&f); /int用用%d,float用用%f c=5.0/9*(f-32); pr

2、intf(“f=%fnc=%fn”,f, c); 例3.2 计算存款利息。例:有例:有10001000元,想存一年。分别以如下元,想存一年。分别以如下3 3种方法计算出种方法计算出一年后的本息值。一年后的本息值。(1)(1)活期,年利率为活期,年利率为r1r1;(2)(2)一年期定一年期定期,年利率为期,年利率为r2r2; (3)(3)存两次半年定存两次半年定期,年利率为期,年利率为r3.r3. #includevoid main() float p0=1000,r1=0.0036,r2=0.0325,r3=0.0308,p1,p2,p3; p1=p0*(1+r1); p2=p0*(1+r2)

3、; p3=p0*(1+r3/2) *(1+r3/2); printf(“p1=%fnp2=%fnp3=%fn”,p1,p2,p3); 3.2 数据的表现形式及其运算3.2.1 常量和变量常量和变量1.常量常量在程序运行过程中,在程序运行过程中,其值不能被改变的量称为常量其值不能被改变的量称为常量。常见的种类有:常见的种类有:(1)整型常量:如整型常量:如12、0、-3等等(2)实型常量:实型常量:十进制小数形式,十进制小数形式,由数字和小数点组成由数字和小数点组成,如,如4.5、-1.23等。等。指数形式,如指数形式,如12.34e3、-346.87e-25等,等,e/E的前面必须的前面必须有

4、数字,后面必须有整数有数字,后面必须有整数。(3) 字符常量普通字符普通字符用单撇号括起来的一个字符。如用单撇号括起来的一个字符。如a a 、XX为字符常量为字符常量。注意:注意:字符常量不包括单撇号;字符常量不包括单撇号; 大小写不同;大小写不同; 字符常量在内存中是以相应的字符常量在内存中是以相应的ASCIIASCII码存储。码存储。 (3) 字符常量转义字符转义字符n n 换行换行t t 横横向跳格向跳格r r 回回车车 反反斜杠斜杠dddddd dddddd表示表示1 1到到3 3位八进制数字位八进制数字xhhxhh hh hh表示表示1 1到到2 2位十六进制数字位十六进制数字 特殊

5、的字符常量:特殊的字符常量:以以 开头的字符序列开头的字符序列。转义字符。转义字符的意思是将的意思是将”后面的字符转换成另外的意义。如后面的字符转换成另外的意义。如nn中中的的n n不代表字母不代表字母n n而作为而作为“换行换行”符。符。下表列出了常用的转义字符:下表列出了常用的转义字符:如:如:00表示编码值为表示编码值为0 0的字符,即的字符,即“空操作空操作”,一般用于字符串,一般用于字符串中;中;101101,表示八进制数,表示八进制数101101,即十进制数,即十进制数6565,表示字母,表示字母AA;x41x41,表示十六进制数,表示十六进制数4141,即十进制数,即十进制数65

6、65,表示字母,表示字母AA;(4)字符串常量 字符串常量是一对双撇号括起来的字符序列字符串常量是一对双撇号括起来的字符序列. .合法的字符串常量合法的字符串常量:“CHINA”:“CHINA”, “ “a” a” , $123.45”$123.45”。可以输出一个字符串,如可以输出一个字符串,如printf(“Howprintf(“How do you do.”) do you do.”);注意:注意: 是字符常量,是字符常量,”是字符串常量,二者不同。是字符串常量,二者不同。 规定:在每一个字符串常量的结尾加一个规定:在每一个字符串常量的结尾加一个 “ “字符串结束标字符串结束标志志”,以

7、便系统据此判断字符串是否结束。规定以字符,以便系统据此判断字符串是否结束。规定以字符作为字符串结束标志。作为字符串结束标志。如:如:字符串常量字符串常量”CHINA” CHINA” ,实际上在内存,实际上在内存中是:中是:CHINA0 它占内存单元不是个字符,而是个字符,最后它占内存单元不是个字符,而是个字符,最后一个字符为一个字符为。但在输出时不输出。但在输出时不输出。例:#define PRICE 30 /符号常量习惯用大写符号常量习惯用大写main() int num,total; num=10; total=numPRICE; printf(“total=%dn”,total);def

8、ine命令格式是:命令格式是: #define 标识符标识符 字符串字符串如:如:#define string “ABCD” /注意行末无分号注意行末无分号(5) 符号常量 用一个标识符代表一个常量称为符号常量。符号常量借助用一个标识符代表一个常量称为符号常量。符号常量借助于预处理命令于预处理命令definedefine来实现。来实现。使用符号常量的好处:使用符号常量的好处:(1 1)含义清楚)含义清楚(2 2)“一改全改一改全改”2.变量 在程序运行期间,其值可以改变的量称为变量。在程序运行期间,其值可以改变的量称为变量。变量代表一个有名字、具有特定属性的一个存储单元,变量代表一个有名字、具

9、有特定属性的一个存储单元,它用来存放数据,也就是变量的值。它用来存放数据,也就是变量的值。 变量名实际上是一个以一个名字对应代表一个地址,变量名实际上是一个以一个名字对应代表一个地址,在对程序编译连接时由编译系统给每一个变量名分配对在对程序编译连接时由编译系统给每一个变量名分配对应的内存地址。从变量中取值,实际上是通过变量名找应的内存地址。从变量中取值,实际上是通过变量名找到相应的内存地址,从该存储单元中读取数据。到相应的内存地址,从该存储单元中读取数据。 一个变量有变量名、存储单元、变量值等三个概念。一个变量有变量名、存储单元、变量值等三个概念。2.变量(1)(1)建议变量名的长度最好不要超

10、过建议变量名的长度最好不要超过8 8个字符。个字符。(2)(2)在选择变量名和其它标识符时,应注意做到在选择变量名和其它标识符时,应注意做到“见名见名知意知意”,即选有含意的英文单词,即选有含意的英文单词( (或其缩写或其缩写) )作标识符。作标识符。(3)(3)要求对所有用到的变量作强制定义,也就是要求对所有用到的变量作强制定义,也就是“先定先定义,后使用义,后使用”。3.标识符 标识符:用来对变量、符号常量名、函数、数组、类型等标识符:用来对变量、符号常量名、函数、数组、类型等命名的有效字符序列。命名的有效字符序列。 语言规定语言规定标识符只能由字母、数字和下划线三种字符组标识符只能由字母

11、、数字和下划线三种字符组成,且第一个字符必须为字母或下划线。成,且第一个字符必须为字母或下划线。 以下为合法的标识符:以下为合法的标识符: x1, sum, average, day, month, lotus_1_2_3x1, sum, average, day, month, lotus_1_2_3 以下为不合法的标识符:以下为不合法的标识符: $456, #abc, 1fs, 2nd, M.D.Jhon$456, #abc, 1fs, 2nd, M.D.Jhon注意:注意:标识符不能是关键字。标识符不能是关键字。 编译系统将大写字母和小写字母认为是两个不同的字符。编译系统将大写字母和小写

12、字母认为是两个不同的字符。3.2.2 数据类型程序程序= =数据结构算法程序设计方法语言工具数据结构算法程序设计方法语言工具 所谓数据结构是指数据的组织形式,数据是算法处理的所谓数据结构是指数据的组织形式,数据是算法处理的对象,而是以某种特定的形式存在的。对象,而是以某种特定的形式存在的。C C提供了以下一些数据提供了以下一些数据类型。类型。 在程序中对用到的所有数据都必须指定其数据类型。数据有在程序中对用到的所有数据都必须指定其数据类型。数据有常量与变量之分常量与变量之分 ,它们都属于以上这些类型。,它们都属于以上这些类型。3.2.3 整型数据1.整型常量的表示方法整型常量的表示方法 整型常

13、量即整常数。在语言中,整常数可用以下三整型常量即整常数。在语言中,整常数可用以下三种形式表示:种形式表示:(1)(1)十进制整数。十进制整数。 如:如:123, -456.4123, -456.4。(2)(2)八进制整数。以八进制整数。以0 0头的数是八进制数。头的数是八进制数。 如:如:01230123表示八进制数表示八进制数123123,等于十进制数,等于十进制数83,-01183,-011表示八进制数表示八进制数-11,-11,即十进制数即十进制数-9-9。(3)(3)十六进制整数。以十六进制整数。以0 x0 x开头的数是开头的数是1616进制数。进制数。 如:如:0 x1230 x12

14、3,代表,代表1616进制数进制数123,123,等于十进制数等于十进制数 291291。 -0 x12-0 x12等于十进制数等于十进制数1010。2.整型变量(1)(1)整型数据在内存中的存放形式整型数据在内存中的存放形式 整型数据在内存中是以二进制形式存放的。整型数据在内存中是以二进制形式存放的。 如如: : int int i; / i; /* * 定义为整型变量定义为整型变量 * */ / i=10; / i=10; /* * 给给i i赋以整数赋以整数10 10 * */ / 十进制数十进制数1010的二进制形式为的二进制形式为10101010,Turbo C 2.0Turbo C

15、 2.0和和Turbo Turbo C+ 3.0C+ 3.0为一个整型变量在内存中分配为一个整型变量在内存中分配2 2个字节的存储单元个字节的存储单元( (不不同的编译系统为整型数据分配的字节数是不相同的,同的编译系统为整型数据分配的字节数是不相同的,VC+ VC+ 6.06.0则分配则分配4 4个字节)。个字节)。数值是以补码数值是以补码(complement) (complement) 表示的。表示的。(2)整型变量的分类有符号基本整型有符号短整型有符号长整型无符号基本整型无符号短整型无符号长整型(signed)int (signed)short (int )(signed) long (

16、int)unsigned intunsigned short (int)unsigned long (int)整数类型的有关数据:(3)整型变量的定义: 规定在程序中所有用到的变量都必须在程序中定义,即规定在程序中所有用到的变量都必须在程序中定义,即“强制类型定义强制类型定义”。 例如例如: : int a,bint a,b(指定变量、为整型)(指定变量、为整型) unsigned short c,dunsigned short c,d; ;(指定变量、为无符号短整型)(指定变量、为无符号短整型) long e,flong e,f; ;( (指定变量、为长整型)指定变量、为长整型)例:整型变量

17、的定义与使用#include void 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);); 例: 整型数据的溢出#include void main()int a,b; a=32767; b=a+1; printf(“%d,%dn”,a,b);数值是以补码表示的。一个整型变量只能容纳数值是以补码表示的。一个整型变量只能容纳- -3276832768327673276

18、7范围内的数,无法表示大于范围内的数,无法表示大于3276732767或小于或小于- -3276832768的数。遇此情况就发生的数。遇此情况就发生“溢出溢出”。编程时应注意编程时应注意数值不要超过变量的范围。数值不要超过变量的范围。3.2.4 字符型数据1.1.字符与字符代码字符与字符代码 C C语言程序中的字符只能是系统字符集中的字符,语言程序中的字符只能是系统字符集中的字符,否则计算机不能识别,目前大多数系统采用否则计算机不能识别,目前大多数系统采用ASCIIASCII字符字符集,其有集,其有127127个字符,包括:字母、数字、专用符号、个字符,包括:字母、数字、专用符号、空格符及不能

19、显示的字符。空格符及不能显示的字符。 2.字符变量字符型变量用来存放字符常量,注意只能放一个字符。字符型变量用来存放字符常量,注意只能放一个字符。字符变量的定义形式如下:字符变量的定义形式如下:char c1,c2;在本函数中可以用下面语句对在本函数中可以用下面语句对c1,c2赋值:赋值: c1a;c2 b ;一个字符变量在内存中占一个字节。一个字符变量在内存中占一个字节。3.字符数据的存放形式及使用方法 一个字符常量存放到一个字符变量中,一个字符常量存放到一个字符变量中,实际上并不是把该字符的字型放到内存中实际上并不是把该字符的字型放到内存中去,而是将该字符的相应的去,而是将该字符的相应的A

20、SCIIASCII代码放到代码放到存储单元中。这样使字符型数据和整型数存储单元中。这样使字符型数据和整型数据之间可以通用。据之间可以通用。注意注意: : 一个字符数据既可以以字符形一个字符数据既可以以字符形式输出,也可以以整数形式输出。式输出,也可以以整数形式输出。3.字符数据的存放形式及使用方法#include void main() char c1,c2; c1=97; c2=98; printf(“%c %cn”,c1,c2); printf(“%d %dn”,c1,c2); #include void main() char c1,c2; c1=a; c2=b; c1=c1-32; c

21、2=c2-32; printf(“c c,c1,c2);); 3.2.5 浮点型数据/实型数据1.1.实型数据在内存中的存放形式实型数据在内存中的存放形式一个实型数据一般在内存中占一个实型数据一般在内存中占4 4个字节个字节(32(32位位) )。实型数据是按照实型数据是按照规范化指数形式规范化指数形式存储的,即小数存储的,即小数点前有且只有一个点前有且只有一个0 0,小数点后数字不为,小数点后数字不为0.0. 对每一个变量使用前都应该先定义。实型变量的定义如对每一个变量使用前都应该先定义。实型变量的定义如下:下:float x, y;double z;long double t; /不同的编

22、译系统对该类型处理不一样,用的较少不同的编译系统对该类型处理不一样,用的较少类型 比特数 有效数字 数值范围float 单精度 32 6 -3.410-383.41038double 双精度 64 15 -1.710-3081.710308long double 长双精度 128 19 -1.210-49321.21049322.实型变量的分类例如:例如:1.0/31.0/3* *3 3的结果并不等于的结果并不等于1 1 3.实型数据的舍入误差例例3.4 浮点型数据的舍入误差浮点型数据的舍入误差#include void main()float a,b; a = 123456.789e5; b

23、 = a + 20 ; printf(“%fn”,b); 运行结果:运行结果: 12345678848.00000012345678848.000000将将float a,bfloat a,b; ;改为改为double a,bdouble a,b; ;结结果不一样。果不一样。一个浮点型变量只能保证的有效数字是一个浮点型变量只能保证的有效数字是6 6位有效数字,后面位有效数字,后面的数字是无意义的,并不准确地表示该数。应当避免将一个很大的数字是无意义的,并不准确地表示该数。应当避免将一个很大的数和一个很小的数直接相加或相减,否则就会的数和一个很小的数直接相加或相减,否则就会“丢失丢失”小的数小的

24、数。1.1.基本的算术运算符基本的算术运算符 (加法运算符,或正值运算符。如(加法运算符,或正值运算符。如: :、)、) (减法运算符,或负值运算符。如(减法运算符,或负值运算符。如: :、)、)* * (乘法运算符。如(乘法运算符。如: :* *) (除法运算符。如(除法运算符。如:5/3:5/3) (模运算符,或称求余运算符,两侧均应为整型(模运算符,或称求余运算符,两侧均应为整型数据,如数据,如: :的值为)。的值为)。3.2.7 运算符和表达式2.自增、自减运算符 作用是使变量的值增或减作用是使变量的值增或减,如如: +i, -i(在使用之前,先使的值加(在使用之前,先使的值加,减)减

25、)i+, i-(在使用之后,使的值加(在使用之后,使的值加, 减)减)i+i+与与+i+i的区别:的区别: 是先执行后,再使用的值;是先执行后,再使用的值; 是先使用的值后,再执行。是先使用的值后,再执行。例如:例如: ; i i的值先变成的值先变成4, 4, 再赋给再赋给,j,j的值均为的值均为 ; 先将先将 i i的值的值3 3赋给赋给, ,的值为,然后变为的值为,然后变为2.自增、自减运算符注意:注意: (1)自增运算符(),自减运算符(),只能自增运算符(),自减运算符(),只能用于变量,而不能用于常量或表达式;用于变量,而不能用于常量或表达式; (2)和的结合方向是和的结合方向是“自

26、左至右自左至右”,如,如i+j应理解为应理解为(i+)+j,编程避免这样的语句,编程避免这样的语句; (3) 自增(减)运算符常用于循环语句中使循环变量自自增(减)运算符常用于循环语句中使循环变量自动加。也用于指针变量,使指针指向下一个地址。动加。也用于指针变量,使指针指向下一个地址。3.算术表达式和运算符的优先级与结合性 用算术运算符和括号将运算对象用算术运算符和括号将运算对象( (也称操作数)连接起来的、也称操作数)连接起来的、符合语法规则的式子,称为算术表达式符合语法规则的式子,称为算术表达式。运算对象包括常量、。运算对象包括常量、变量、函数等。变量、函数等。 例如例如: : * */c

27、-1.5+a/c-1.5+a。 是一个合法的表达式是一个合法的表达式 C语言规定在表达式求值时,先按运算符的优先级别高低次序执语言规定在表达式求值时,先按运算符的优先级别高低次序执行,例如先乘除后加减。如表达式行,例如先乘除后加减。如表达式a-b*c相当于相当于a-(b*c)。 还规定了各种运算符的结合方向还规定了各种运算符的结合方向(结合性结合性) ,即在一个运算对象,即在一个运算对象两侧的运算符的优先级别相同时,则按规定的两侧的运算符的优先级别相同时,则按规定的“结合方向结合方向”处理。处理。 算术运算符的结合方向为算术运算符的结合方向为“自左至右自左至右”,即先左后右。如,即先左后右。如

28、a-b+c相当于相当于(a-b)+c。 有些运算符的结合方向为有些运算符的结合方向为“自右至左自右至左”。如。如a=b=c。4. 不同类型数据间的混合运算doublefloatlongunsignedintchar, short高高低低 如果一个运算符的两侧的数据类型不同,则先自动如果一个运算符的两侧的数据类型不同,则先自动转换成同一类型再运算。转换的规则如下:转换成同一类型再运算。转换的规则如下:4. 不同类型数据间的混合运算(1)进行进行10+a的运算,转换的运算,转换a为为97;(2)进行进行 i* f的运算,将的运算,将 i 和和 f 都转成都转成double型;型;(3)整数整数10

29、7与与 i* f的积相加,先将的积相加,先将107转化成双精度数,结果为转化成双精度数,结果为double型;型;(4)将变量将变量 3转化成转化成double型,型,d/3的结果为的结果为double型;型;(5)将将10+a+ i* f的结果与的结果与d/3的商相减,结果为的商相减,结果为double型。型。以上数据类型转换都是由以上数据类型转换都是由C编译系统自动隐含完成的,故称编译系统自动隐含完成的,故称自动自动类型转换类型转换。 分析表达式:分析表达式:10+a+ i*fd/3,其中,其中i为整型变量,值为为整型变量,值为3,f为为float型变量,值为型变量,值为2.5,d为为do

30、uble型变量,值为型变量,值为7.5。可以利用强制类型转换运算符将一个表达式转换成所需类型。可以利用强制类型转换运算符将一个表达式转换成所需类型。 一般形式一般形式: :(类型名)(表达式)(类型名)(表达式)例如:例如:(double)(double) 将转换成将转换成doubledouble类型类型(int)(x+y(int)(x+y) ) 将将x+yx+y的值转换成整型的值转换成整型(float)(float)(5%35%3) 将将5%35%3的值转换成的值转换成floatfloat型型5.强制类型转换运算符例:例:main() float x; int i; x=3.6; i=(in

31、t) x; printf(“x=%f, i=%d”,x, i);6. C运算符除了算术运算符外,除了算术运算符外,C还提供了其他运算符,共还提供了其他运算符,共有以下几类:有以下几类:(1)算术运算符算术运算符 (+ - * / %)(2)关系运算符关系运算符 (、=、=、!=)(3)逻辑运算符逻辑运算符 (!、&、|)(4)位运算符位运算符 ( |)(5)赋值运算符赋值运算符 (及其扩展赋值运算符)(及其扩展赋值运算符)(6)条件运算符条件运算符 (?:)(?:)(7)逗号运算符逗号运算符 (,),)(8)指针运算符指针运算符 (*和)和)(9)求字节数运算符(求字节数运算符(siz

32、eof)(10)强制类型转换运算符(强制类型转换运算符( (类型)类型) )(11)分量运算符(分量运算符(-)(12)下标运算符()下标运算符()(13)其他其他 (如函数调用运算符()(如函数调用运算符()3.3 C语句概述C程序源程序文件1源程序文件2源程序文件n预处理命令函数n函数1数据声明函数首部函数体数据声明执行语句 一个一个c c程序可以有若干个源程序文件组成。程序可以有若干个源程序文件组成。 一个源文件可以有若干个函数和预处理命令以及全局变量声明一个源文件可以有若干个函数和预处理命令以及全局变量声明部分组成。部分组成。 一个函数有函数首部和函数体组成。一个函数有函数首部和函数体

33、组成。 函数体由数据声明和执行语句组成。函数体由数据声明和执行语句组成。3.3.1 C3.3.1 C语句分类语句分类3.3.1 C语句分类1. 控制语句控制语句两个分支语句两个分支语句(if-else、switch)三个循环语句三个循环语句(for、while、do-while)四个转移语句(四个转移语句(continue、break、goto、return)2. 函数调用语句函数调用语句如:如:printf(“Hello, world!”);3. 表达式语句表达式语句x+y; i+; a=2; a=3*5, 40 ; 4. 空语句空语句 ;5. 复合语句复合语句 语句序列语句序列 3.3.2

34、 最基本的语句赋值语句1.1.赋值运算符赋值运算符 赋值符号赋值符号“”就是赋值运算符,它的作用是将一个数据赋给就是赋值运算符,它的作用是将一个数据赋给一个变量。如一个变量。如“a=3”a=3”的作用是执行一次赋值操作的作用是执行一次赋值操作( (或称赋值运算或称赋值运算) )。把常量赋给变量把常量赋给变量a a。也可以将一个表达式的值赋给一个变量。也可以将一个表达式的值赋给一个变量。2.复合的赋值运算符复合的赋值运算符 在在“=”之前加上其他运算符,构成复合运算符。如之前加上其他运算符,构成复合运算符。如: x+=y 等价于等价于 x=x+y a%=b+c/d 等价于等价于 a=a%(b+c

35、/d) C中中10种复合赋值运算符:种复合赋值运算符:+=、-=、*=、/=、 %=、=、&=、=、|=2.复合的赋值运算符为便于记忆,可以这样理解:为便于记忆,可以这样理解: a += b ( a += b (其中其中a a为变量,为变量,b b为表达式为表达式) ) a += b a += b(将有下划线的(将有下划线的“a+”a+”移到移到“=”=”右右侧)侧) |_|_ a = a + b a = a + b (在(在“=”=”左侧补上变量名左侧补上变量名a a)3. 赋值表达式 由由赋值运算符将一个变量和一个表达式连接起来的式子称赋值运算符将一个变量和一个表达式连接起来的式子

36、称为为“赋值表达式赋值表达式”。一般形式为:。一般形式为:变量变量= 表达式表达式 赋值表达式求解的过程是:赋值表达式求解的过程是: 求赋值运算符右侧的求赋值运算符右侧的“表达式表达式”的值的值; 赋给赋值运算符左侧的变量。赋给赋值运算符左侧的变量。例如例如: 赋值表达式赋值表达式“=3*5”的值为的值为15,执行表达式后,变量,执行表达式后,变量a的的值也是值也是15。 又如赋值表达式又如赋值表达式 (a=3*5)=4*3的求解过程为:在对赋值表达的求解过程为:在对赋值表达式式(a=3*5)求解后,变量求解后,变量a得到值得到值15。执行。执行(a=3*5)=4*3时,实际时,实际上是将上是

37、将4*3的积的积12赋给变量赋给变量a,而不是赋给,而不是赋给3*5。嵌套赋值表达式例:当例:当a=12a=12时,时,a+=a-=aa+=a-=a* *a a 求解结果?求解结果?先先“a-=aa-=a* *a”a”的运算,的运算,a=a-aa=a-a* *a=-132;a=-132;再进再进行行“a+=-132”a+=-132”的运算,的运算,a=a+(-132)=-264a=a+(-132)=-264。嵌套赋值表达式:嵌套赋值表达式:e1=e2=e1=e2=en=en,如:如:a=b=c=d=100 a=b=c=d=100 等价于等价于 a=(b=(c=(d=100)a=(b=(c=(d

38、=100)e1e1,e2e2,enen不必具有相同的数据类型不必具有相同的数据类型4.赋值类型转换 规则:规则:把赋值运算符右边表达式的数据类型转换成左把赋值运算符右边表达式的数据类型转换成左边对象的类型。边对象的类型。实型赋给整型变量时,舍去实数的小数部分。实型赋给整型变量时,舍去实数的小数部分。整型赋给实型变量时,数值不变,以浮点形式存储。整型赋给实型变量时,数值不变,以浮点形式存储。 如如:为整型变量,执行为整型变量,执行“i=3.56”的结果是使的值的结果是使的值为,以整数形式存储在整型变量中。为,以整数形式存储在整型变量中。 又如又如: 将将23赋给赋给float变量,即执行变量,即

39、执行23,先将,先将23转换成转换成2300000,再存储在中。,再存储在中。5.赋值语句形式形式: :变量变量= =表达式;表达式;含义含义: :计算计算“=”=”右边表达式的值,将之赋给右边表达式的值,将之赋给“=”=”左边的变左边的变量。量。如:如: b=3; b=3; if(a if(a=b)0) t=a;=b)0) t=a;注意:赋值语句与赋值表达式的区别注意:赋值语句与赋值表达式的区别6 变量赋初值 (1)语言允许在定义变量的同时使变量初始化语言允许在定义变量的同时使变量初始化如如: int a=3; / 指定为整型变量,初值为指定为整型变量,初值为 float f=3.56; /

40、 指定为浮点型变量,初值为指定为浮点型变量,初值为3.56 char c= a; / 指定为字符变量,初值为指定为字符变量,初值为a (2)可以使被定义的变量的一部分赋初值。可以使被定义的变量的一部分赋初值。 如如: int a,b,c=5; 表示指定、为整型变量,但只对表示指定、为整型变量,但只对初始化,初始化,c的初值为的初值为 (3)如果对几个变量赋以同一个初值。如果对几个变量赋以同一个初值。 应写成:应写成:int a=3,b=3,c=3; 表示、的初值都是。表示、的初值都是。 不能写成不能写成 int a=b=c=3; 注意:初始化不是在编译阶段完成的而是在程序运行时执行本函注意:初

41、始化不是在编译阶段完成的而是在程序运行时执行本函数时赋初值的,相当于有一个赋值语句。数时赋初值的,相当于有一个赋值语句。 例3.4 输入三角形的三边长,求三角形面积。程序:程序: #include #include void main() float a,b,c,s,area; sacnf(%f,%f,%f”,&a,&b,&c); s=1.0/2*(a+b+c); /注意注意1.0/2的含义的含义 area=sqrt(s*(s-a)*(s-b)*(s-c); printf(“a=%7.2f,b=%7.2f,c=%7.2f,s=%7.2fn”,a,b,c,s); prin

42、tf(“area=%7.2fn”,area); /注意注意%7.2f的含义的含义 分析:三边为a,b,c,面积area=s(s-a)(s-b)(s-c), 其中s=(a+b+c)/2。3.4 数据的输入输出3.4.1输入输出举例输入输出举例例例3.5 求求ax2+bx+c=0方程的根。方程的根。#include #include void main ( ) float a,b,c,disc,x1,x2,p,q; scanf(a=%f,b=%f,c=%f,&a,&b,&c); disc=b*b-4*a*c; p=-b/(2*a); q=sqrt(disc)/(2*a);

43、x1=p+q;x2=p-q; printf(nnx1=%7.2fnx2=%7.2fn,x1,x2);3.4.2 有关数据输入输出的概念(1) 所谓输入输出是以计算机主机为主体而言的。所谓输入输出是以计算机主机为主体而言的。输出输出:从计算机向外部输出设备从计算机向外部输出设备(显示器显示器,打印机打印机) 输出数据输出数据输入输入:从输入设备从输入设备(键盘键盘,鼠标鼠标,扫描仪扫描仪)向计算机向计算机 输入数据输入数据. .(2)C语言本身不提供输入输出语句语言本身不提供输入输出语句,输入和输出操作是由输入和输出操作是由C函数库函数库中的函数来实现的。中的函数来实现的。例如例如:格式输入函数

44、格式输入函数: scanf 格式输出函数格式输出函数: printf字符串输入函数字符串输入函数:gets 字符串输出函数字符串输出函数:puts字符输入函数字符输入函数: getchar 字符输出函数字符输出函数:putchar(3) 在使用系统库函数时在使用系统库函数时,要用预编译命令要用预编译命令“#include”将有关的将有关的“头文件头文件”包括到用户源文件中包括到用户源文件中.例如:在调用标准输入输出库函数时,文件开头应该有:例如:在调用标准输入输出库函数时,文件开头应该有: #include “stdio.h” 或:或: #include 3.4.3 用printf函数输出数据

45、1.printf1.printf函数的一般形式函数的一般形式一般形式:一般形式:printfprintf ( (格式控制格式控制, , 输出表列输出表列););(1)(1)格式控制:是用双引号括起来的字符串,包含两种信息:格式控制:是用双引号括起来的字符串,包含两种信息:格式说明:由格式说明:由% %和格式控制符组成。如:和格式控制符组成。如:%d, %f%d, %f等;等;普通字符和转义字符(普通字符原样输出,增加可读性)普通字符和转义字符(普通字符原样输出,增加可读性)(2)(2)输出表列:程序需要输出的数据,可以是常量、变量或表输出表列:程序需要输出的数据,可以是常量、变量或表达式。达式

46、。如:如:printf(“a=%d, b=%d”,a,bprintf(“a=%d, b=%d”,a,b);); 若若a a、b b的值分别为的值分别为2 2和和3 3,则输出结果为:,则输出结果为: a=2, b=3a=2, b=32.格式字符几种用法:几种用法: d:按十进制整型数据的实际长度输出。按十进制整型数据的实际长度输出。 md:为指定的输出字段的宽度。如果数据的位数小于,为指定的输出字段的宽度。如果数据的位数小于,则左端补以空格,若大于,则按实际位数输出。则左端补以空格,若大于,则按实际位数输出。 例例: printf(“%4d,%4d”,a,b); 若若a=123,b=12345

47、则输出结果为则输出结果为 123,12345%ld:输出长整型数据。输出长整型数据。 例例: long a=135790;/* 定义定义a为长整型变量为长整型变量*/ printf(“%ld”,a);(1)格式符。格式符。用来输出十进制整数。用来输出十进制整数。(2)格式符用来输出一个字符。用来输出一个字符。如:如:char d=a; printf(“%c”,d); 输出字符输出字符a.一个整数,只要它的值在一个整数,只要它的值在0127范围范围内,可以用内,可以用“%c”使之按字符形式使之按字符形式输出,在输出前,系统会将该整数输出,在输出前,系统会将该整数作为作为ASCII码转换成相应的字

48、符;码转换成相应的字符;一个字符数据也可以用整数形式输一个字符数据也可以用整数形式输出。出。 例例:字符数据的输出。字符数据的输出。#includevoid main()char c=a; int i=97; printf(“%c,%dn”,c,c); printf(“%c,%dn”,i,i);(3) s 格式符输出字符串输出字符串. %s。例如:。例如: printf(“%s”,”CHINA”); 输出字符串输出字符串“CHINA”(不包括双引号)。(不包括双引号)。 %ms,输出的字符串占,输出的字符串占m列,若串长大于列,若串长大于m,则全部输出,若串,则全部输出,若串长长 小于小于m,

49、则左补空格。,则左补空格。 %-ms,若串长小于,若串长小于m,字符串向左靠,右补空格。,字符串向左靠,右补空格。例例:字符串的输出。字符串的输出。#includevoid main()printf(“%s,%7s,%4s,%-5sn”, “CHINA”, “CHINA”, “CHINA”, “CHINA”); (4)f格式符 用来以小数形式输出实数(包括单双精度)用来以小数形式输出实数(包括单双精度)有以下几种用法:有以下几种用法: %f。不指定字段宽度,由系统自动指定字段宽度,使整数部。不指定字段宽度,由系统自动指定字段宽度,使整数部分全部输出,并输出分全部输出,并输出6位小数。应当注意,

50、在输出的数字中并非全位小数。应当注意,在输出的数字中并非全部数字都是有效数字。单精度实数的有效位数一般为部数字都是有效数字。单精度实数的有效位数一般为6位。位。 m.nf。指定输出的数据共占。指定输出的数据共占m列,其中有列,其中有n位小数。如果数位小数。如果数值长度小于值长度小于m,则左端补空格。,则左端补空格。 - m.nf与与 m.nf基本相同,只是使输出的数值向左端靠,右基本相同,只是使输出的数值向左端靠,右端补空格。端补空格。 (4)f格式符例例: 输出实数时指定小数位数。输出实数时指定小数位数。#include void main() float f=123.456; printf

51、(“%f%10f%10.2f%.2f%-10.2fn”,f,f,f,f,f);运行结果:运行结果:123.455994 123.455994 123.46 123.46 123.46例例: 输出实数时的有效位数。输出实数时的有效位数。#include void main() float x,y;x=111111.111;y=222222.222; printf(“%f”,x+y);运行结果:运行结果:333333.328125将将float x,y;改为改为double x,y;结果不同。结果不同。(5) e格式符以指数形式输出实数。以指数形式输出实数。可用以下形式:可用以下形式: e。数字部

52、分前面只有。数字部分前面只有1位非位非0数字,数字的小数部分为数字,数字的小数部分为5位,位,指数部分占指数部分占4位。例位。例: printf(“%e”,123.456);输出:输出:1.23456e+02所输出的实数共占所输出的实数共占11列宽度。列宽度。(注:不同系统的规定略有不同注:不同系统的规定略有不同) m.ne和和-m.ne。输出的指数部分同输出的指数部分同%e,数字部分不连小数字部分不连小数点共数点共n,即小数点前有,即小数点前有1位非位非0整数,后有整数,后有n-1位。位。m和和n+1+4比较。比较。 若若f=123.456,则:,则:printf(“%e n%10en %10.2en %.2en%-10.2en“,f,f,f,f,f); 输出如下:输出如下:1.23456e+02 1.23456e+02 1.2e+02 1.2e+02 1.2e+02 11列列 11列列 10列列 7列列 7列列 3.4.4 用scanf函数输入数据1.scanf函数的一般格式函数的一般格式scanf(格式控制,地址表列格式控制,地址表列);“格式控制格式控制”的含义同的含义同printf函数;函数;“地址表列地址表列”是由若干个地址组成的表列,可以是变量的地址,或是由若干个地址组成的表列,可以是变量的地址,或字符串的首地址。字符串的首地址。函数作用:按照变量在内存的地址

温馨提示

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

评论

0/150

提交评论