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

下载本文档

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

文档简介

1、第第3章章 最简单的最简单的C程序设计程序设计顺序结构程序设计顺序结构程序设计C程序设计必须具备的知识和能力:程序设计必须具备的知识和能力:1.要有正确的解题思路,即学会设计算法。要有正确的解题思路,即学会设计算法。2.掌握掌握C语言的语法规则,使用语言的语法规则,使用C语言提供的各种功能编写出一个完语言提供的各种功能编写出一个完 整的、正确的程序。整的、正确的程序。3.要采用结构化程序设计方法,编写出结构化的程序,程序的通用要采用结构化程序设计方法,编写出结构化的程序,程序的通用 性和可读性要强。性和可读性要强。3.1 顺序结构程序设计举例顺序结构程序设计举例例例3.1 编写一程序将华氏温度

2、转换为摄氏温度。编写一程序将华氏温度转换为摄氏温度。转换公式:转换公式: 程序如下:程序如下:#includeint main( ) float f,c; printf(“请输入华氏温度请输入华氏温度:”); scanf(“%f”,&f); c=(5.0/9)*(f-32); printf(“华氏温度:华氏温度:%f n摄氏温度:摄氏温度:%fn”,f,c); return 0;)32(95 fC运行结果:运行结果:请输入华氏温度:请输入华氏温度:64.0 华氏温度:华氏温度:64.000000 摄氏温度:摄氏温度:17.777778 3.2 数据的表现形式及其运算数据的表现形式及其运

3、算3.2.1 常量和变量常量和变量1.常量常量在程序运行过程中,其值不能被改变的量称为常量。在程序运行过程中,其值不能被改变的量称为常量。(1) 整型常量。如:整型常量。如:1000,12345,0,-345(2) 实型常量。如:实型常量。如:123.456,0.345,-56.78,0.0(十进制小数形式)(十进制小数形式) 12.34e3,-345.67e-25,0.18E25(指数形式)(指数形式) 注:指数部分必须为整数。注:指数部分必须为整数。(3) 字符常量。字符常量。 普通字符。如:普通字符。如:a,Z,?,#,8 注:注:a 和和 A 不同,不能写成不同,不能写成 ab , 1

4、2 或或 中中。 转义字符。转义字符。C语言中允许使用一种以语言中允许使用一种以 开头的特殊形式字符常量。开头的特殊形式字符常量。(4) 字符串常量。如:字符串常量。如:”boy”,”123”,不能写为:,不能写为:boy,123。转义字符及其作用转义字符及其作用字符形式字符形式含义含义ASCII码码n换行,将当前位置移到下一行开头换行,将当前位置移到下一行开头10t水平制表水平制表(跳到下一个跳到下一个Tab位置位置)9h退格,将当前位置移到前一列退格,将当前位置移到前一列8r回车,将当前位置移到本行开头回车,将当前位置移到本行开头13f换页,将当前位置移到下页开头换页,将当前位置移到下页开

5、头12代表一个反斜杠字符代表一个反斜杠字符“”92ooo1到到3位八进制数所代表的字符位八进制数所代表的字符xhh1到到2位十六进制数所代表的字符位十六进制数所代表的字符(5) 符号常量符号常量用一个标识符代表一个常量的,称为符号常量。用一个标识符代表一个常量的,称为符号常量。如:如:#define PRICE 30 #includeint main( ) int num,total; num=10; total=num*PRICE; printf(“total=%d”,total); return 0;说明说明: (1) 含义清楚。含义清楚。 (2) 在需要改变一个常量时能做到在需要改变一个

6、常量时能做到“一改全改一改全改”。 (3) 在程序中不能对符号常量重新赋值。在程序中不能对符号常量重新赋值。 (4) 符号常量一般用大写字母表示。符号常量一般用大写字母表示。2. 变量变量在程序运行过程中,其值可以改变的量称为变量。在程序运行过程中,其值可以改变的量称为变量。说明:说明:(1) C语言规定每个变量必须有一个名字,它表示一个具有特定语言规定每个变量必须有一个名字,它表示一个具有特定 属性的存储单元,用来存放数据,即变量的值。属性的存储单元,用来存放数据,即变量的值。 (2) 定义变量名时应注意定义变量名时应注意“见名知意见名知意”。 (3) 每个变量必须确定一个数据类型,以便系统

7、分配存储单元。每个变量必须确定一个数据类型,以便系统分配存储单元。 (4) 凡未被事先定义的的变量程序中不能使用。凡未被事先定义的的变量程序中不能使用。3a变量值变量值存储单元存储单元变量名变量名3.2.1 常量和变量常量和变量3. 常变量常变量 C99允许使用常变量。如:允许使用常变量。如:const int a=3; (1) 常变量不同于变量,程序运行期间不能改变其值。常变量不同于变量,程序运行期间不能改变其值。 (2) 常变量不同于常量,系统会依据定义类型分配存储空间,常量常变量不同于常量,系统会依据定义类型分配存储空间,常量 无名而常变量有名。无名而常变量有名。 (3) 常变量不同于符

8、号常量,符号常量在编译时已用具体数值取代。常变量不同于符号常量,符号常量在编译时已用具体数值取代。4. 标识符标识符 C语言规定用来对变量、函数、数组、类型等命名的有效字符串称语言规定用来对变量、函数、数组、类型等命名的有效字符串称 为标识符。为标识符。 标识符只能由字母或下划线开头,字母、数字和下划线组成。标识符只能由字母或下划线开头,字母、数字和下划线组成。 大写字母和小写字母被认为是两个不同的字符。大写字母和小写字母被认为是两个不同的字符。 如:如:sum,averge,_total,Studen_name等。等。 M.D.john,¥,¥123,#33,ab 是不合法的标识符。是不合法

9、的标识符。3.2.2 数据类型数据类型数据类型数据类型基本类型基本类型浮点型浮点型单精度单精度(float)双精度双精度(double)枚举类型枚举类型数组类型数组类型( )结构体类型结构体类型(struct)共同体类型共同体类型(union)指针类型指针类型(*)整型整型基本整型基本整型(int)短整型短整型(short int)长整型长整型(long int)*双长整型双长整型(long long int)字符型字符型(char)*布尔型布尔型(bool)*复数型复数型(float_complex等等)空类型空类型派生类型派生类型函数类型函数类型注:图中有注:图中有 * 的是的是C99所增

10、加的。所增加的。3.2.3 整型数据整型数据1. 整型数据的分类整型数据的分类(1) 基本整型基本整型(int型型) 编译系统分配给编译系统分配给int型数据型数据2个或个或4个字节个字节(具体有编译系统自行决定具体有编译系统自行决定) 整型数据在内存中的存放形式:整型数据在内存中的存放形式: 数据在内存中是以二进制形式存放的,如果定义了一个整形变量并数据在内存中是以二进制形式存放的,如果定义了一个整形变量并 赋值为赋值为10,则:,则:数值是以补码表示的,正整数的补码和该数的原码相同,负数的数值是以补码表示的,正整数的补码和该数的原码相同,负数的补码是将该数的绝对值取反加补码是将该数的绝对值

11、取反加1.000000000000101011111111111101011111111111110110i10的原码的原码取反取反加加1得得-10的补码的补码最左面的一位是最左面的一位是符号位,符号位,0表示表示正数;正数;1表示负表示负数。数。2个字节:个字节:-32768327674个字节:个字节:-214748364821474836473.2.3 整型数据整型数据(2) 短整型短整型(short int或或short) TC中短整型和整型系统分配字节数相同,中短整型和整型系统分配字节数相同,C+6.0编译系统分配编译系统分配给短整型给短整型2个字节,整型个字节,整型4个字节,存储方式

12、相同。个字节,存储方式相同。数值范围:数值范围:(-3276832767)(3) 长整型长整型(long int或或long) TC和和C+6.0系统都分配系统都分配4个字节个字节(C+6.0和整型相同和整型相同)。数值范围:数值范围:(-231(231-1), -214748364821474837 )(4) 双长整型双长整型(long long int或或long long) 双长整型是双长整型是C99新增的类型,一般分配新增的类型,一般分配8个字节,但许多个字节,但许多C编译编译系统还未实现。系统还未实现。3.2.3 整型数据整型数据2. 整型变量的符号属性整型变量的符号属性变量值在存储

13、单元中都是以补码形式存储的,存储单元中的最高位变量值在存储单元中都是以补码形式存储的,存储单元中的最高位表示符号,数值范围包括负数和正数。表示符号,数值范围包括负数和正数。C语言中还提供一种语言中还提供一种“无符号整数无符号整数”类型类型(unsigned),用于存放无,用于存放无符号整数。符号整数。无符号基本整型无符号基本整型 (2个字节个字节) (065535) 0 (216 -1) (4个字节个字节) (04294967295) 0 (232-1)无符号短整型无符号短整型 (2个字节个字节) (0 65535) 0 (216-1) 无符号长整型常量无符号长整型常量 (4个字节个字节) (

14、0 4294967395) 0 (232-1)无符号长整型常量无符号长整型常量 (8个字节个字节) 0 (364-1)3.2.3 整型数据整型数据3. 整型变量的定义整型变量的定义凡是在凡是在C程序中用到的变量都必须事先定义,变量的定义可使用程序中用到的变量都必须事先定义,变量的定义可使用(int,short int,long int,unsigned int等等)例:例:int a,b; short c,d; unsigned int e,f; unsigned short g,h; long i,j; unsigned long k,l; long long m,n; unsigned l

15、ong long o,p;4. 整型数据的溢出整型数据的溢出 数据溢出时将自动进位到符号位。数据溢出时将自动进位到符号位。例例3.3 整型数据的溢出整型数据的溢出(TC中中int变量最大允许值为变量最大允许值为32767)#includeint main() int a,b; a=32767;b=a+1; printf(“%d,%dn”,a,b); return 0运行结果为:运行结果为:32767,-327680 1 1 1 1 1 1 1 1 1 1 1 1 1 111 0 0 0 0 0 0 0 0 0 0 0 0 0 00a:b:32767-327683.2.4 字符型数据字符型数据字

16、符是按代码字符是按代码(整数整数)形式存储的,因此形式存储的,因此C99将字符型数据作为整数将字符型数据作为整数的一种。的一种。1. 字符与字符代码字符与字符代码C语言编译系统将字母、数字、专用符号、空格符、控制字符共语言编译系统将字母、数字、专用符号、空格符、控制字符共127个字符以个字符以ASCII形式存储。形式存储。如:如:A6501000001B6601000010a9701100001b98011000100480011000014900110001空格空格32 00100000 %3700100101 n1000001010a 响铃响铃700000111一个一个ASCII码存储一个

17、字节,最高位为码存储一个字节,最高位为0,一个中文字母存储二个字,一个中文字母存储二个字节,最高位为节,最高位为1。 2. 字符变量字符变量字符型变量用来存放字符常量,在字符型变量用来存放字符常量,在C的所有编译系统中都规定一的所有编译系统中都规定一个字节它只能存放一个个字节它只能存放一个ASCII字符。字符。字符变量的定义用类型说明符字符变量的定义用类型说明符char或或character定义。定义。例:例:char c1,c2;它表示它表示c1和和c2为字符型变量,各可以存放一个字符,因此在赋为字符型变量,各可以存放一个字符,因此在赋值时应该表示为:值时应该表示为: c1=a;c2=b;字

18、符数据在内存中的存储形式及使用方法字符数据在内存中的存储形式及使用方法字符型变量中存储的不是该字符的本身,而是该字符对应的字符型变量中存储的不是该字符的本身,而是该字符对应的ASCII码。码。0110000197ac1例例1. #include int main() char c1,c2; c1=97;c2=98; prntf(“%c %cn”,c1,c2); printf(“%d %dn”,c1,c2); return 0 输出结果:输出结果:a b 97 98例例2.#include int main() char c1,c2; c1=a;c2=b; c1=c1-32;c2=c2-32;

19、printf(“%c %cn”,c1,c2); return 0 输出结果:输出结果:A B3.2.5 浮点型数据浮点型数据1. 浮点型常量的表示方法浮点型常量的表示方法十进制小数形式十进制小数形式(123.0)、指数形式、指数形式(1.23e2)一个浮点数可以有多种指数表示形式:一个浮点数可以有多种指数表示形式:如:如:123e0,12.3e1,1.23e2,0.123e3规范的指数输出形式表示为:规范的指数输出形式表示为:0.123e+0032. 浮点型变量浮点型变量(1) 浮点型型数据在内存中的存放形式浮点型型数据在内存中的存放形式(4个字节共个字节共32位位)例如:例如:3.14159

20、+0.3141591数符数符 小数部分小数部分 指数指数+ .314159 x101小数部分和指数部分在小数部分和指数部分在32位中如何位中如何分配分配C标准没有明确规定,一般标准没有明确规定,一般C编编译系统以译系统以24位表示小数部分位表示小数部分(包括符包括符号位号位),以,以8位表示指数部分位表示指数部分(包括指包括指数符号位数符号位)。3.2.5 浮点型数据浮点型数据(2) 浮点型变量的分类浮点型变量的分类(单精度单精度-32、双精度、双精度-64、长双精度、长双精度-128)(3) 浮点型变量的定义浮点型变量的定义 例:例:float x,y; double z; long dou

21、ble t;类型类型位数位数有效数字有效数字数值范围数值范围float326-1.2x10-383.4x1038double6415-2.3x10-3081.7x10308long double64*1281519-2.3x10-3081.7x10308-3.4x10-49321.1x1049323.2.5 浮点型数据浮点型数据(4) 浮点型数据的舍入误差浮点型数据的舍入误差浮点型变量是由有限的存储单元组成的,因此能提供的有效数字浮点型变量是由有限的存储单元组成的,因此能提供的有效数字总是有限的。总是有限的。例:例: #includeint main() float a,b; a=123456

22、.789e5; b=a+20; printf(“%fn”,b); return 0理论值:理论值:12345678920实际值:实际值:12345678848.000000浮点型变量只能保证的有效数浮点型变量只能保证的有效数字是字是7位位3.2.6 变量类型的确定变量类型的确定变量类型的确定应依据常量的数据类型以及数据范围来确定。变量类型的确定应依据常量的数据类型以及数据范围来确定。整型常量:整型常量:(1) 一个整数,如果其值在一个整数,如果其值在-3276832767范围内,认为它是范围内,认为它是int,它,它可以赋值给可以赋值给int型和型和long int 型。型。(2) 一个整数,

23、如果超过上述范围,而在一个整数,如果超过上述范围,而在-21474836482147483647范围内,则认为它是长整形。它可以范围内,则认为它是长整形。它可以赋给赋给long int 型。型。(3) 由于由于C版本中版本中short int 和和int长度相同,系统认为是长度相同,系统认为是int型,可以型,可以赋给赋给 int 型或型或 short int 型。型。(4) 一个常量后面加一个字母一个常量后面加一个字母u或或U(如:如:12345u,12345U),系统认,系统认为是为是 unsigned int 型。型。(5) 在一个整常量后面加一个字母在一个整常量后面加一个字母 l 或或

24、 L ,则认为是,则认为是 long int 型常型常量量(如:如:123l,4567L)。3.2.6 变量类型的确定变量类型的确定浮点型常量浮点型常量:(1)C编译系统将浮点型常量作为双精度来处理。编译系统将浮点型常量作为双精度来处理。例:例:f=2.45678*4523.65先将两个常量作为双精度数,然后进行相乘运算,如果先将两个常量作为双精度数,然后进行相乘运算,如果f为浮点型,为浮点型,则结果截取则结果截取7位有效数字赋给位有效数字赋给f。(2)一个浮点型常量可以赋给一个一个浮点型常量可以赋给一个float型、型、double型或型或long double型。根据变量的类型截取相应的有

25、效数字。型。根据变量的类型截取相应的有效数字。(3)例:例:f=2.45678f*4523.65f(4)如果一个常量要作为长双精度处理应在数字后加如果一个常量要作为长双精度处理应在数字后加l或或L。例:例:long double a=1.23L3.2.7 运算符和表达式运算符和表达式C语言的运算符范围广,把除了控制语句和输入输出语句外的几语言的运算符范围广,把除了控制语句和输入输出语句外的几乎所有的基本操作运算都作为运算符处理。乎所有的基本操作运算都作为运算符处理。1. 基本的算术运算符基本的算术运算符+ (正正)、 (负负)、 + (加加)、-(减减)、*(乘乘)、/(除除)、%(求余求余)

26、例:例:8%322. 自增、自减运算符自增、自减运算符自增、自减运算符作用是使变量的值增自增、自减运算符作用是使变量的值增1或减或减1,如:,如:+ + i,- - i (在使用在使用i前,先使前,先使i的值加的值加(减减)1)i + +,i - - (在使用(在使用i后,使后,使i的值加的值加(减减)1)注意:注意: 自增和自减运算符只能用于变量,而不能用于常量或自增和自减运算符只能用于变量,而不能用于常量或 表达式。表达式。(例如:例如:8+,(a+b)+是不允许的是不允许的) 自增和自减运算符的结合方向是自增和自减运算符的结合方向是“自右至左自右至左”。 例如:例如:-i+ 不能表示为不

27、能表示为 (-i)+ ,相当于,相当于 -(i+)相当于执行相当于执行i=i+1或或i=i-13. 算术表达式和运算符的优先级与结合性算术表达式和运算符的优先级与结合性(1) 用算术运算符和括号将运算对象连接起来的、符合用算术运算符和括号将运算对象连接起来的、符合C语言语言规则式子,称规则式子,称C算术表达式。算术表达式。 如:如:a*b/c-1.5+a(2) 根据运算符的优先级,决定了表达式的运算次序。根据运算符的优先级,决定了表达式的运算次序。(3) 根据运算符的结合方向,一般采用根据运算符的结合方向,一般采用“左结合性左结合性”,有些运,有些运算符采用算符采用“右结合性右结合性”。4.

28、各类数值型数据间的混合运算各类数值型数据间的混合运算整型、实型和字符型数据间可以进行混合运算,如:整型、实型和字符型数据间可以进行混合运算,如:10+a+1.5-8765.1234*b进行运算时,不同类型的数据先转换成同一类型,然后进行运算,进行运算时,不同类型的数据先转换成同一类型,然后进行运算,转换规则如下:转换规则如下:doublefloatlongunsignedintChar,short低低高高5. 强制类型转换运算符强制类型转换运算符根据需要利用强制类型转换运算符可以将一个表达式转换成所需根据需要利用强制类型转换运算符可以将一个表达式转换成所需类型。如:类型。如:(double)a

29、、(int)(x+y)、(float)(5%3)例例: #include int main() float x=3.6; int i; i=(int)x%2; printf(“x=%f,i=%dn”,x,i); return 0; 运行结果:运行结果:x=3.600000,i=16. 运算符的分类运算符的分类(1) 算术运算符算术运算符 ( +、-、 *、 /、 %、 +、 - )(2) 关系运算符关系运算符( 、=、=、!= )(3) 逻辑运算符逻辑运算符( !、&、| )(4) 位运算符位运算符( 、|、& )(5) 赋值运算符赋值运算符( =及其扩展赋值运算符及其扩展赋值

30、运算符 )(6) 条件运算符条件运算符( ?: )(7) 逗号运算符逗号运算符( , )(8) 指针运算符指针运算符( *和和& )(9) 求字节数运算符求字节数运算符( sizeof )(10) 强制类型转换运算符强制类型转换运算符( (类型类型) )(11) 成员运算符成员运算符( . 、- )(12) 下标运算符下标运算符( )(13) 其他运算符其他运算符( 如函数调用运算符如函数调用运算符() )3.3 C语言语言3.3.1 C语句的作用和分类语句的作用和分类lC语言的语句用来向计算机系统发出操作指令。一个语句经编译语言的语句用来向计算机系统发出操作指令。一个语句经编译后产生

31、若干条机器指令。一个实际的程序应当包含若干语句。后产生若干条机器指令。一个实际的程序应当包含若干语句。lC语句都是用来完成一定操作任务的。声明部分的内容不应称为语句都是用来完成一定操作任务的。声明部分的内容不应称为语句。如:语句。如:int a;不是一个不是一个C执行语句,它不产生机器操作,而执行语句,它不产生机器操作,而只是对变量的定义。只是对变量的定义。l一个函数包含声明部分和执行部分,执行部分即由语句一个函数包含声明部分和执行部分,执行部分即由语句(分别进分别进行编译的文件模块行编译的文件模块)组成。组成。l一个一个C程序可以由若干个源程序文件组成,一个源文件可以由若程序可以由若干个源程

32、序文件组成,一个源文件可以由若干个函数和预处理命令以及全局变量声明部分组成。干个函数和预处理命令以及全局变量声明部分组成。(1)一个函数由数据定义部分和执行语句组成。一个函数由数据定义部分和执行语句组成。C程序结构程序结构:C程序程序源程序文件源程序文件1全局变量声明全局变量声明函数函数1预处理命令预处理命令源程序文件源程序文件2源程序文件源程序文件n函数函数n函数首部函数首部函数体函数体局部变量声明局部变量声明执行语句执行语句C语句的分类语句的分类:1. 控制语句控制语句if() else ;(条件语句条件语句) for() ;(循环语句循环语句) while() ; (循环语句循环语句)

33、do while(); (循环语句循环语句) continue;(结束本次循环语句结束本次循环语句) switch;(多分支选择语句多分支选择语句)break;(终止执行终止执行swith或循环语句或循环语句) goto;(转向语句转向语句) return (从函数返回语句从函数返回语句)例:例:if (xy) z=x; else z=y;2. 函数调用语句函数调用语句 (由一个函数调用加一个分号构成由一个函数调用加一个分号构成)printf(“This is C statement.”);3. 表达式语句表达式语句 (由一个表达式加一个分号构成由一个表达式加一个分号构成)a=3 赋值表达式赋

34、值表达式 a=3; 赋值语句赋值语句 C语句的分类:语句的分类:4. 空语句空语句;可作为流程的转向点或循环语句的循环体。可作为流程的转向点或循环语句的循环体。5. 复合语句复合语句 (用用 把一些语句括起来成为复合语句把一些语句括起来成为复合语句) z=z+y; t=z/100; printf(%f”,t);3.3.2最基本的语句最基本的语句赋值语句赋值语句例例3.4 输入三角形的三边长,求三角形面积输入三角形的三边长,求三角形面积#include #include int main()float a,b,c,s,area;scanf(“%f,%f,%f”,&a,&b,&am

35、p;c);s=1.0/2*(a+b+c);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);printf(“area=%7.2fn”,area);return 0运行情况如下:运行情况如下:3,4,6输出:输出:a=3.00,b=4.00,c=6.00,s=6.50 area=5.332/ )()()(acbascsbsassrea 其中其中:求三角形面积的公式为求三角形面积的公式为3.3.2最基本的语句最基本的语句赋值语句赋值语句1. 赋值运算符赋值运算符赋值运算符赋值运算符“=”

36、的作用是将一个数据赋给一个变量。的作用是将一个数据赋给一个变量。如:如:a=3,c=a*b。2. 复合的赋值运算符复合的赋值运算符 在赋值符在赋值符“=”之前加上其他运算符,可以构成复合的运算符,如:之前加上其他运算符,可以构成复合的运算符,如:a+=3等价与等价与 a=a+3x*=y+8等价与等价与 x=x*(y+8)x%=3等价与等价与 x=x%3C语言采用复合运算符,一是为了简化程序,使程序精练,二是为语言采用复合运算符,一是为了简化程序,使程序精练,二是为了提高编译效率,能产生质量较高的目标代码。但对于初学者来了提高编译效率,能产生质量较高的目标代码。但对于初学者来说,不必都用,首要的

37、是保持程序清晰易懂。说,不必都用,首要的是保持程序清晰易懂。3.3.2最基本的语句最基本的语句赋值语句赋值语句3. 赋值表达式赋值表达式一般形式:一般形式:功能:计算右边表达式的值,并赋给左边的变量。功能:计算右边表达式的值,并赋给左边的变量。例:例:a=123(将将123赋给变量赋给变量a) b=a (将将a的值赋给变量的值赋给变量b)表达式中也允许使用赋值运算符。表达式中也允许使用赋值运算符。例:例: a=(b=5)(表达式值为表达式值为5,a,b值均为值均为5) a=b=c=5 (表达式值为表达式值为5,a,b,c值均为值均为5) a=(b=4)+(c=6)(表达式值为表达式值为10,a

38、值为值为11,b等于等于4,c等于等于6) a=(b=10)/(c=2)(表达式值为表达式值为5,a等于等于5,b等于等于10,c等于等于2) a+=a-=a*a (如果如果a初值为初值为12,a=a-a*a,a=12-144=-132 a=a+a=(-132)+(-132)=-264)3.3.2最基本的语句最基本的语句赋值语句赋值语句4. 赋值过程中的类型转换赋值过程中的类型转换如果赋值运算符两侧的类型不一致,赋值时要进行类型转换。如果赋值运算符两侧的类型不一致,赋值时要进行类型转换。(1) 将浮点型数据赋给整型变量时,将浮点型数据赋给整型变量时,舍弃浮点数的小数部分舍弃浮点数的小数部分。例

39、如:例如:i为为int变量变量 i=3.56 i=3 (2) 将整型数据赋给浮点型变量时,数值不变,但以浮点数存储。将整型数据赋给浮点型变量时,数值不变,但以浮点数存储。例如:例如:f为为float变量变量 f=23 f=23.00000(3) 将将double型赋给型赋给float变量时,截取其前面变量时,截取其前面7位有效数字。但应位有效数字。但应注意数据的溢出。注意数据的溢出。(4) 将字符型数据赋给整型变量时,存入整型变量将字符型数据赋给整型变量时,存入整型变量低低8位位中。在中。在C+中高中高8位补位补0。4. 赋值过程中的类型转换赋值过程中的类型转换(5) 将整型数据赋给字符型变量

40、时,将整型数据赋给字符型变量时,只取低只取低8位位数据送入字符数据送入字符型变量。型变量。例如:例如:i为为int,c为为char,i=321;c=i; c=A(6) 将带符号的将带符号的int赋给赋给long时,要进行符号扩展,正补时,要进行符号扩展,正补0,负,负补补1。(7) 将非符号的将非符号的int赋给赋给long时,不存在符号扩展问题,只需高时,不存在符号扩展问题,只需高位补位补0。0 0 0 0 0 0 0 1 0 1 0 0 0 0 015. 赋值表达式和赋值语句赋值表达式和赋值语句赋值语句是由赋值表达式加上一个分号构成。赋值语句是由赋值表达式加上一个分号构成。a=b;赋值语句

41、赋值语句C语言的赋值语句具有其他高级语言的赋值语句的一切特点和功语言的赋值语句具有其他高级语言的赋值语句的一切特点和功能。但也应当注意到它们的不同:能。但也应当注意到它们的不同:(1) C语言中的赋值号语言中的赋值号“=”是一个运算符,在其他大多数语言中是一个运算符,在其他大多数语言中赋赋 值号不是运算符。值号不是运算符。(2) 其他多数高级语言没有其他多数高级语言没有“赋值表达式赋值表达式”一概念。作为赋值表一概念。作为赋值表达达 式可以包括在其他表达式之中,例如:式可以包括在其他表达式之中,例如:if (a=b)0) t=a;其中其中a=b是赋值表达式是赋值表达式等价于等价于a=b;if(

42、a0) t=a;在在if语句中的语句中的“a=b”不是赋值语句更不是条件表达式,而是赋值不是赋值语句更不是条件表达式,而是赋值表达式,但不能表示为:表达式,但不能表示为:if (a=b;)0) t=a;6. 变量赋初值变量赋初值1. C语言允许在定义变量的同时使变量初始化,如:语言允许在定义变量的同时使变量初始化,如:int a=3;float f=3.56;char c=a;2. 也可以对部分变量赋初值,如:也可以对部分变量赋初值,如:int a,b,c=5;3. 如果要对多个变量赋同一个值,应写成:如果要对多个变量赋同一个值,应写成:int a=3;b=3;c=3; /* 不能表示为不能表

43、示为a=b=c=3 */相当于:相当于:int a,b,c;a=3;b=3;c=3;3.4 数据的输入输出数据的输入输出3.4.1 输入输出举例输入输出举例例例12 求一元二次方程的根。求一元二次方程的根。a、b、c由键盘输入,设由键盘输入,设b2-4ac0。#include#includeint man() 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); x1=p+q;x2=p-q; printf(

44、“x1=%5.2fnx2=%5.2fn”,x1,x2); return 0;运行情况如下:运行情况如下:a=1,b=3,c=2x1=-1.00 x2=-2.003.4.2 数据输入输出的概念数据输入输出的概念1. 输入输出是以计算机主机为主体而言的。即通过输入设备向计算机输入输出是以计算机主机为主体而言的。即通过输入设备向计算机提供数据称为数据输入,计算机向外部设备输出数据称为数据输出。提供数据称为数据输入,计算机向外部设备输出数据称为数据输出。2. C语言本身不提供输入输出语句,输入输出是由函数实现。语言本身不提供输入输出语句,输入输出是由函数实现。 如:如:printf(),scanf()

45、,putchar(),getchar(),puts(), gets()等。等。系统不提供输入输出语句就可以避免在编译阶段处理与硬件有关的系统不提供输入输出语句就可以避免在编译阶段处理与硬件有关的问题,使编译系统简化,而且通用性强,可移植性好,对各种型号问题,使编译系统简化,而且通用性强,可移植性好,对各种型号的计算机都适用,便于在各种计算机上实现。的计算机都适用,便于在各种计算机上实现。3. C语言函数库中提供了语言函数库中提供了“标准输入输出函数标准输入输出函数”,但使用,但使用C语言函数语言函数库时,要用预编译命令库时,要用预编译命令“include”将有关将有关”头文件头文件”包含到用户

46、源包含到用户源文件中。文件中。例如:例如:# include 或或 # include “stdio.h”3.4.3 用用printf函数输出数据函数输出数据C语言提供了一组完整的输入和输出格式,可以满足各种不同的输语言提供了一组完整的输入和输出格式,可以满足各种不同的输入输出的需求,实际使用中重点掌握一些常用的规则即可。入输出的需求,实际使用中重点掌握一些常用的规则即可。1. printf函数的一般格式:函数的一般格式:printf(格式控制格式控制,输出表列输出表列)例如:例如:printf(“i=%d c=%cn”,i,c); “格式控制格式控制”由由“格式说明格式说明”和和“普通字符普

47、通字符”两部分组成。两部分组成。 格式说明:由格式说明:由“%”和格式字符组成和格式字符组成 普通字符:需要原样输出的字符普通字符:需要原样输出的字符 “输出表列输出表列”是需要输出的一些数据。是需要输出的一些数据。由于由于printf是函数,因此是函数,因此“格式控制格式控制”字符串和字符串和“输出表列输出表列”实际实际上都是函数的参数,上都是函数的参数,printf函数的一般形式表示为:函数的一般形式表示为:printf (参数参数1,参数,参数2,参数,参数3,参数参数n)3.4.3 用用printf函数输出数据函数输出数据2. 格式字符格式字符 对不同类型的数据应使用不同的格式字符对不

48、同类型的数据应使用不同的格式字符 d格式符,用来输出十进制整数格式符,用来输出十进制整数 %d,按整型数据实际长度输出按整型数据实际长度输出 %md,m为指定输出宽度,如果数据位数小于为指定输出宽度,如果数据位数小于m,左端补空格,左端补空格 %ld,输出长整型数据,输出长整型数据 例:例:printf(“%d,%4d,%ld,%8ld”,a,b,c,d); 若若a=12,b=123,c=123456,d=56789 则输出结果为:则输出结果为: 12,123,123456,56789 o格式符,以八进制数形式输出整数(包含格式符,以八进制数形式输出整数(包含%o,%mo,%lo等)等) 例:

49、例:printf(“%d,%o”,a,a); 输出结果:输出结果:12,14 x格式符,以十六进制数形式输出整数(包含格式符,以十六进制数形式输出整数(包含%x,%mx,%lx等)等) 例:例:printf(“%d,%x”,b,b); 输出结果:输出结果:123,7B3.4.3 用用printf函数输出数据函数输出数据 u格式符,以十进制形式输出无符号整数格式符,以十进制形式输出无符号整数(包含包含%u,%mu,%lu等等) unsigned型数据也可以用型数据也可以用%d,%o,%x格式输出。格式输出。 例例: #include int main() unsigned int a=65535

50、; int b=-2; printf(a=%d,%o,%x,%un,a,a,a,a); printf(b=%d,%o,%x,%un,b,b,b,b); return 0; 运行结果为运行结果为 (65535表示表示16位全部为位全部为“1”) a=-1,177777,ffff,65535 b=-2,177776,fffe,65534 3.4.3 用用printf函数输出数据函数输出数据 c格式符,用来输出一个字符格式符,用来输出一个字符(包含包含%c,%mc) 例例: char c=a; printf(“%c,%dn”,c,c); 运行结果:运行结果:a,97 一个整数,只要它的值在一个整数,

51、只要它的值在0255范围内,也可以用范围内,也可以用“%c”输出,但输出,但输出的是该整数作为输出的是该整数作为ASCII码对应的字符。码对应的字符。 s格式符,用来输出一个字符串格式符,用来输出一个字符串(包含包含%s,%ms,%-ms,%m.ns,%-m.ns) 例例: printf(“%3s,%7.2s,%.4s,%-5.3sn”,”CHINA”,”CHINA”,”CHINA”,”CHINA”); 输出结果:输出结果:CHINA,CH,CHIN,CHI3.4.3 用用printf函数输出数据函数输出数据 f格式符,用来以小数形式输出实数(包含格式符,用来以小数形式输出实数(包含%f,%m

52、.nf,%-m.nf等)等)例:例:printf(“%f%10f%10.2f%.2f%-10.2fn”,f,f,f,f,f);若若f=123.456 则则输出结果:输出结果: 123.456001123.456001123.46123.46123.46 e格式符,用来以指数形式输出实数(包含格式符,用来以指数形式输出实数(包含%e,%m.ne,%-m.ne等)等)例:例:printf(“%e%10e%10.2e%.2e%-10.2en”,f,f,f,f,f);若若f=123.456 则则输出结果:输出结果: 1.234560e+0021.234560e+0021.23e+0021.23e+00

53、21.23e+002 13列列 13列列 10列列 9列列 10列列 g格式符,根据数值大小,自动选格式符,根据数值大小,自动选f格式或格式或e格式输出实数格式输出实数例:例: printf(“%f%e%g”,f,f,f);( f=123.468 )输出结果:输出结果:123.4680001.234680e+002123.468f格式输出格式输出10列,列,e格式输出格式输出13列,列,g格式自动选择两种格式中的短格式。格式自动选择两种格式中的短格式。3.4.3 用用printf函数输出数据函数输出数据printf函数的函数的9种格式符见种格式符见(p74表表3.6)和附加说明符和附加说明符(

54、表表3.7)。使用使用printf函数的有关说明:函数的有关说明:(1) 除了除了X、E、G外,其他格式字符必须用小写。外,其他格式字符必须用小写。(2) 可以在可以在printf函数中的函数中的“格式控制格式控制”字符串内包含字符串内包含“转义字符转义字符”, 如如“n”、“t”、“377”等。等。(3) 格式控制符必须使用格式控制符必须使用“%”开头,以格式字符之一为结束,中间开头,以格式字符之一为结束,中间 可以插入附加格式字符。例如:可以插入附加格式字符。例如:printf (“c=%c f=%f s=%s”,c,f,s);(4) 如果想输出字符如果想输出字符“%”,则应该在,则应该在“格式控制格式控制”字符串中用连续字符串中用连续两两 个个%表示。表示。 例如:例如:printf(“%5.2f%”,1.0/3); 输出:输出:0.

温馨提示

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

评论

0/150

提交评论