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

下载本文档

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

文档简介

1、第第 3 章章最简单的最简单的c程序设计程序设计 顺序程序设计顺序程序设计例如例如:1000:1000元元, ,想存一年。分别计算想存一年。分别计算: :活期活期、一年定期一年定期、 存两次半年定期存两次半年定期,所得到的本息和。,所得到的本息和。(p38) (p38) 特点特点: :由上到下由上到下, ,按语句顺序全部执行按语句顺序全部执行, ,无选择和循环无选择和循环3.1 顺序程序设计顺序程序设计end: :#include int main() float r1= =0.0036, r2= =0.0225, r3= =0.0198; float p0= =1000, p1, p2, p

2、3; 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; 一、常量和变量一、常量和变量 1 1、常量、常量 在程序运行中在程序运行中, ,其数值不能被改变的量其数值不能被改变的量(1)(1)整型常量整型常量 在语言中,整常数可用以下在语言中,整常数可用以下三种三种形式表示形式表示: 1)1)十进制十进制 如如: :123, -456123, -456,4 4 2) 2)八进制八进制-数字数字0 0开头,开头,0-70-7之间数字组成

3、之间数字组成 如如: :0 0123123表示八进制数表示八进制数123123, 转换为十进制转换为十进制=1x8=1x82 2+2x8+2x81 1+3x8+3x80 0=83=83 - -0 01010表示八进制数表示八进制数-10,-10, 即十进制数即十进制数-8-8 3) 3)十六进制十六进制- -0 x0 x开头开头, ,0-90-9、a-fa-f之间数字组成之间数字组成 如如: :0 x0 x1a1a表示表示1616进制数进制数1a,1a, 转换为十进制转换为十进制=1x16=1x161 1+ +1010x16x160 0=26=26; - -0 x0 x1010等于十进制数等于

4、十进制数-16-16。end3.2 数据的表现形式及其运算数据的表现形式及其运算end两种表两种表示形式示形式小数小数指数指数0.123 , 23. , .453e(e)-3注意注意: :字母字母e(e(或或e)e)的前后必须有数的前后必须有数, ,且且e e后面的后面的 指数必须为整数指数必须为整数 3x10-3(2)(2)实型常量实型常量其中其中 1.85e-3 称为称为 “标准化的指数形式标准化的指数形式”。标准化的指数形式标准化的指数形式: :在字母在字母e(e(或或e)e)之前的小数部分中,之前的小数部分中,小小数点左边,有且只有一位非零的数字数点左边,有且只有一位非零的数字end(

5、3)(3)字符常量字符常量 普通字符:用单引号包含一个字符普通字符:用单引号包含一个字符a a, , a a, , 4 4abcabc、a a. 字符的字符的asciiascii码码( (美国国家信息交换标准代码美国国家信息交换标准代码) ):每个字符都对应一个每个字符都对应一个asciiascii码码 见见p377p377查字符表可知:字符的查字符表可知:字符的asciiascii码为码为 0 0255255 例例: 字符字符a的的ascii码的码的十进制十进制形式为形式为: :65 字符字符b的的ascii码的码的十进制十进制形式形式为为:66:66字符字符a a的的asciiascii码

6、的码的十进制十进制形式形式为为: 97: 97字符字符b b的的asciiascii码的码的十进制十进制形式形式为为: 98: 98观察大小写字母的观察大小写字母的asciiascii码码相差多少?相差多少?end 转义字符:以转义字符:以 开头的特殊字符序列开头的特殊字符序列 n 换行换行 b 退一格退一格 t 水平制表符水平制表符(横横向跳到下一个制表区向跳到下一个制表区) r 回回车(光标回到该行的开头)车(光标回到该行的开头) ooo ooo表示表示1到到3位八进制数字位八进制数字xhh hh表示表示1到到2位十六进制数字位十六进制数字例例:101-a x41-a 显示屏上的运行结果:

7、显示屏上的运行结果: i 列号列号:1 2 3 4 5 6 7 8 9 例例: :转义字符的使用转义字符的使用 #include #include int int main() main() printf(abtibbjk); return 0; return 0;(4)(4)字符串常量:字符串常量:是一对双撇号括起来的字符序列是一对双撇号括起来的字符序列. .end例:例:合法的字符串常量合法的字符串常量: : how do you do.how do you do. chinachina a a $123.45$123.45a是字符常量是字符常量, a 是字符串常量是字符串常量,二者不同二

8、者不同(5)(5)符号常量符号常量: : 用用#define#define指令指定的,指令指定的,代表代表一个常一个常 量的符号名量的符号名 . .在程序中不能给它赋值在程序中不能给它赋值。 . .: : #define #define 符号名符号名 常量常量 . .作用作用:1)1)可在程序中,用简单、意义直接的符号可在程序中,用简单、意义直接的符号 名代替一个复杂的常量,从而减少程序名代替一个复杂的常量,从而减少程序 中重复书写某些复杂常量的工作量。中重复书写某些复杂常量的工作量。 2)2)能做到能做到“一改全改一改全改”。 例例:#define :#define pipi 3 3.141

9、5926 1415926 在程序预处理时在程序预处理时( (编译前编译前),),凡是出现凡是出现符号名符号名 pipi的地方的地方, ,都将用都将用3.14159263.1415926来替换。来替换。 如如: 2: 2* *2 2.3 3* *pi pi 就等价于就等价于 2 2* *2 2.3 3* *3 3.14159261415926 例例: pi=234;: pi=234;错误错误end(不能给它赋值)(不能给它赋值)例例: :求半径为求半径为5 5的圆的面积和周长的圆的面积和周长 #define #define pi 3 3.14159261415926 / /* *. .后面不能有

10、后面不能有 ; #include stdio#include . .出现在程序开头出现在程序开头* */ / int main() float s, l, r ; r = = 5 ; s = = r*r*pi ; l = = 2*r*pi;/ s=r*r*3.1415926 ; / l=2*r*3.1415926 ; printf(“s=%f , l=%f ”, s, l);return 0;end . . 是用来作为变量名、符号常量名、函数名、类是用来作为变量名、符号常量名、函数名、类 型名、文件名等的型名、文件名等的有效字符序列有效字符序列 .c.c语言规定:语言规定:标识符只能由标识符只

11、能由三种字符组成,且三种字符组成,且必须必须 为为。例如例如: :_22a, ,lea_1, ,avg3, ,day, ,ace4 m.j.yr, $_28, #xy, a*b, 8ta 2 2、 标识符标识符 (p42)(p42)注注意意合法合法不合法不合法在在c c语言中语言中, ,大小写字母不等效大小写字母不等效。因此因此,a,a和和a,ia,i和和i,sumi,sum和和sum,sum,分别是两个不同分别是两个不同的标识符。的标识符。end11(这些标识符这些标识符auto break case char constcontinue default do double elseenum

12、 extern float for gotoif int long register returnshort signed sizeof static structswitch typedef unsigned union voidvolatile while _bool _complex _imaginary c语言中的关键字,见语言中的关键字,见378页页 附录附录c (补充)(补充) 变量是指以变量是指以标识符为名字标识符为名字, ,其值可以改变的量其值可以改变的量 一个一个变量,对应着计算机内存一个存储空间,变量,对应着计算机内存一个存储空间,存储空间存储空间中存放中存放的数据就是变量

13、的值。的数据就是变量的值。 3 3、 变量变量 (p41)(p41)例如例如: :int a,b; int a; int b; float x; char c;自己设定自己设定,满足满足标识符的规定标识符的规定如:如:int,int,float,charfloat,char;不可省;不可省a a2323b bx xc c2 24.84.8a a 定义了变量后定义了变量后, ,系统会为不同类型的变量分配系统会为不同类型的变量分配不同大小的存储空间,当中可存相应类型的数。不同大小的存储空间,当中可存相应类型的数。end 在同一函数中,变量不能被重复定义。在同一函数中,变量不能被重复定义。 使用变量

14、时必须使用变量时必须 “ “先定义,后使用先定义,后使用”例例1 1: int: int a a, ,b b; ; float float a a,y,y; ; char char b b,c,c; ; 例例2 2: : #include stdio.h #include int main() int x, y, z ; x=24; scanf(“%d”,&y); z=x*y; printf(“%d”,z); return 0;return 0; 后使用后使用先定义先定义end说明说明:跳过常变量跳过常变量endc c语言提供了以下几种数据类型语言提供了以下几种数据类型: : 字符字符类类型型

15、浮点浮点类类型型派生类型派生类型数组类型数组类型结构体类型结构体类型共用体类型共用体类型指针类型指针类型空类型空类型基本类型基本类型枚举类型枚举类型数据类型数据类型end二二. 数据类型数据类型函数类型函数类型整数类型整数类型布尔布尔类类型型=整型整型(c99)(c99)二进制二进制三三. 整型数据整型数据1. 整型的分类整型的分类. .整型数据在内存中的存放形式整型数据在内存中的存放形式( (了解了解) ) 以二进制补码形式存放以二进制补码形式存放: : 正数的补码正数的补码: :与该数的二进制形式相同与该数的二进制形式相同 负数的补码负数的补码: :为该数绝对值的二进制形式,为该数绝对值的

16、二进制形式, 按位取反,再加按位取反,再加1 1。如如: : intint x=-5; x=-5;end如如: : int int i=5; i=5; 5 5取反取反加加1 10 0. 0 0 0 0 1 1 0 0 1 10 0. 0 0 0 0 1 1 0 0 1 11 1. 1 1 1 1 0 0 1 1 0 01 1. 1 1 1 1 0 0 1 1 1 1共八种共八种有符号基本整型有符号基本整型 signed int 有符号短整型有符号短整型 signed short int有符号长整型有符号长整型 signed long int有符号双长整型有符号双长整型 signed long

17、long int无符号基本整型无符号基本整型 unsigned int无符号短整型无符号短整型 unsigned short int 无符号长整型无符号长整型 unsigned long int无符号双长整型无符号双长整型 unsigned long long int 注意注意:中括号表示其中的内容是可省的。:中括号表示其中的内容是可省的。类型名标识符类型名标识符. .整型分类整型分类:end双长整型双长整型 long long 8无符号双长整无符号双长整 unsigned long 8型型 long整型变量的空间及值范围:(以整型变量的空间及值范围:(以turbo c turbo c 为例)

18、为例)end 2. 2. 整型变量整型变量 不同类型变量对应的内存空间大小不同不同类型变量对应的内存空间大小不同。0 1 1 11 1 1 11 1 1 1-1的补码的补码(int). .存放有符号整数空间中存放有符号整数空间中,最左边位为符号位最左边位为符号位,正正:0 0,负负:1 1 例例: :#include int main( ) int a=20; unsigned c; /*指定指定c为无符号整型变量为无符号整型变量*/ c=a+10;a=c+a; printf(“a=% %d n c=% %un” , a, c);); return 0; 运行结果运行结果: a=50 c=30

19、 可以看到不同种类的整型数据可以进行可以看到不同种类的整型数据可以进行 算术运算算术运算 . .无符号整型变量中数据的十进制输出用无符号整型变量中数据的十进制输出用%u%uend(1) (1) 一个整常数后面加一个字母一个整常数后面加一个字母u u或或u u, 认为是认为是unsigned intunsigned int型型如:如:12345u12345u:(2) (2) 在一个整常数后面加一个字母在一个整常数后面加一个字母l l或或l l,则认为是则认为是long intlong int型常量。型常量。例如例如123l123l例如例如 unsigned int x; long y; 也可以也

20、可以 x=123; y=123;endend1.1.字符型数据在内存的存放字符型数据在内存的存放: : 一个字符一个字符, ,在内存占一个字节(在内存占一个字节(8 8位)位) 存放的是存放的是字符的字符的 asciiascii码码 的二进制的二进制例例b的的ascii码码 0 1 1 0 0 0 1 0 9898) )字符变量的定义形式字符变量的定义形式 例:例:char c1,c2;char c1,c2; 在函数中可以用下面语句对在函数中可以用下面语句对c1,c2c1,c2赋值:赋值: c1c1aa; c2c2bb;2.2.字符变量字符变量例例:输出字符输出字符 a , b 和其和其 #i

21、nclude #include int int main() main() char c1,c2; char c1,c2; c1=a; c1=a; c2= 98c2= 98; ; printf( printf( % %c c % %c cnn ,c1,c2);,c1,c2); printf( printf( %d%d %dn %dn ,c1,c2);,c1,c2); return 0;运行结果运行结果: 97 9897 98 一个字符数据既可以一个字符数据既可以以字符形式以字符形式输出,也可以输出,也可以 以整数形式以整数形式输出输出end例例2)2)字符型数据的分类、存储空间和值的范围:字符

22、型数据的分类、存储空间和值的范围:1 1 1 1 1 1 1 1 查字符表可知(查字符表可知(p377p377字符表字符表) -) -了解了解 . .首字符的首字符的ascasciiii码为码为 0: 0: 127号号字符字符asciiascii码码127:127: .128 .128号字符号字符asciiascii码码128:128: . .最后一个字符最后一个字符ascascii码为码为255:255:0 0 0 0 0 0 0 00 1 1 1 1 1 1 11 0 0 0 0 0 0 0类型类型字节数字节数 十进制整数形式输出范围十进制整数形式输出范围signed char1-128-

23、127unsigned char10-255 有的系统认为字符类型有正负之分,这时有:有的系统认为字符类型有正负之分,这时有: 若若unsigned char x; ; 则则printf( (%d%d,x););结果在结果在0-255,0-255,与与ascascii码相符码相符 若若char x;char x; 则则printf(printf( %d%d ,x,x) )结果在结果在-128-128127127 ( (128128 - -128, - -128,129129 - -127, - -127, ,255255- -1)- -1)endc c语言允许字符数据与整数直接进行算语言允许字

24、符数据与整数直接进行算 术运算术运算。运行结果运行结果: a ba b end例:给出两个大写字母例:给出两个大写字母,将它们转换为小写字母输将它们转换为小写字母输出出#include int main() char c1,c2; c1=a; c2=b; c1=c1+32; c2=c2+32; printf(%c %c, c1,c2); return 0; ; end(1) (1) 浮点型数据在内存中的存放形式浮点型数据在内存中的存放形式 . .是是按照指数形式存储的按照指数形式存储的。 . .系统把一个浮点型数据分成系统把一个浮点型数据分成小数部分小数部分和和指指 数部分数部分,分别存放。分

25、别存放。符号符号 小数部分小数部分 指数部分指数部分(2) (2) 浮点型的分类浮点型的分类( (float) ) . .( (double) ) . .(long double)(long double)类型名类型名 字节数字节数 数的范围数的范围( (绝对值绝对值) ) 有效数字有效数字float 4 0, 1.2x10-38 3.4x x1038 6位位double 8 0, 2.3x10-3081.7x x10308 15位位long double 16 0, 3.4x10-49321.1x x104932 19位位 (3) (3)浮点型变量的定义浮点型变量的定义 例例: : floa

26、t x; double w; float x; double w; scanf(“ % %f % %lf ”, &x,&w); /*给给x x和和w w输入数据输入数据*/ printfprintf(“ % %f % %f ” , x, w); /*输出输出x和和w的值的值 */endturbo cturbo c中浮点型数据的空间、值的范围:中浮点型数据的空间、值的范围:六六. .运算符和表达式运算符和表达式 1.1. 基本算术运算符基本算术运算符: : + + ( (运算符,或正值运算符。如运算符,或正值运算符。如:3+5:3+5、+3+3) - - ( (运算符,或负值运算符。如运算符,或

27、负值运算符。如:5-2:5-2、-3-3) * * ( (运算符。如运算符。如: :* *) / / ( (运算符。如运算符。如: : 5.05.0/2=2.5 2=2.5 % % ( (模模运算符运算符, ,或称或称运算符,运算符,如如: :% %的值为)的值为)end习题:习题: 输入一个三位正整数,求出其各个位输入一个三位正整数,求出其各个位, ,然后,然后, 将十位作为百位,将个位作为十位将十位作为百位,将个位作为十位, ,将百位将百位 作为个位重组该数,输出。作为个位重组该数,输出。daandaan 2 2、自增、自减运算符自增、自减运算符:+,- - 作用作用:使使变量变量的值的值

28、增或增或 减减 例如例如: +i, i+ 都会使都会使i的值加的值加1 - - i , i - - 都会使都会使i的值减的值减1end注意注意: 自增运算符自增运算符(+(+ +)+),自减运算符,自减运算符(-(- -)-) , ,而不能用于常量或表达式而不能用于常量或表达式 例例 :+5 8-+5 8- - (x+5)+- (x+5)+ i+i+与与+i+i的区别的区别: +i+i是先执行是先执行i=i+1i=i+1后,再使用后,再使用i i的值;的值; i+i+是先使用是先使用i i的值后,再执行的值后,再执行i=i+1i=i+1。 (i-i- - -与与- - -i-i的区别和的区别和

29、+类似)类似) 例如:例如:intint i=3; i=3; j=+i j=+i; i i的值先加的值先加1 1变成变成4, 4, 再赋给再赋给j, jj, j的值为的值为 j=1+(+i); j=?j=1+(+i); j=? j=i+ j=i+; 先将先将i i的值的值3 3赋给赋给j,jj,j的值为的值为3,3,然后然后i i加加1 1变为变为4 4 printf(“%d,%d”,printf(“%d,%d”,i,j,j ); ); 输出为输出为 ? ? 练习:练习:intint i=3; i=3; j=3+(i+)j=3+(i+) j=? i=? j=? i=? j=(- j=(- -i

30、)+3 -i)+3 i=? j=?i=? j=? 4, ,3end 3 3、算术表达式和运算符的优先级与结合性、算术表达式和运算符的优先级与结合性 (1) (1) 算术表达式算术表达式 用用运算符运算符和和括号括号将运算对象将运算对象( (也称操也称操 作数作数) )连接起来的、符合语法规则的式连接起来的、符合语法规则的式 子,称为算术表达式。子,称为算术表达式。 运算运算对象对象可以可以包括包括: :常量常量、变量变量、函数函数等等。 例如例如: : intint a=4,b=7,c=23; a=4,b=7,c=23; a a * * b b / c- c- 1.5 + + a a + +

31、abs(-8) 是合法的是合法的, ,式中含有式中含有变量变量、常数常数、函数函数end练习练习: :写出写出3 3x x5 54 4y yx x7 72 2 x x的的c c语言合法表达式语言合法表达式例:例:2 6 b b先与先与 + + 结合,与结合,与2 2先进行加法运算先进行加法运算 end(2)(2)基本算术运算符的优先级基本算术运算符的优先级 ( (低于低于+, ( ( 在表达式求值时,按运算符的在表达式求值时,按运算符的 优先级优先级 由高到低由高到低 次序计算次序计算。 (3)(3)基本基本( (结合性结合性):): 左结合性左结合性. . 左结合性:左结合性:当一个当一个

32、操作数操作数 两侧的运算符的优先两侧的运算符的优先 级相同时级相同时,该该 操作数操作数 先参加先参加左边左边的的 运算符的运算。运算符的运算。运算符的优先级若相同运算符的优先级若相同,则从左向则从左向 右运算。右运算。 右结合性右结合性:若:若 操作数操作数 先参加先参加右边右边的运算符的运的运算符的运 算算, ,则称为则称为右结合性。右结合性。、进行进行。 在进行运算时在进行运算时, , 若一个运算符的运算对象类型若一个运算符的运算对象类型不同不同,然后进行运算。然后进行运算。类型的级别如下类型的级别如下: :高高 double float long低低 int char, short例例

33、: int x; float y; x+y的结果类型?的结果类型? 先将先将: y double x double 然后运算然后运算: x+y 结果为结果为: double型型 end(必定转换必定转换)(必定转换必定转换)10 + a + i * f - d / e (1)10(int) + 97(int) (int) 5.0(d)*3.0(d)(d)107.0(d)+(d)4.0(d) / 2.0(d) (d)(d)例例: 10 + a + i * f - d / e int i=5; float f=3.0; double d=4.0; long e=2;end 5. 5.强制类型转换运

34、算符强制类型转换运算符 可以利用可以利用将一个表达式的将一个表达式的 值转换成所需类型。值转换成所需类型。 . . . .优优 先先 级级: : 高于高于 基本算术运算符基本算术运算符 例如:例如:intint a=2; a=2; float d; float d; double b; double b; b= b=(doubledouble)a a; d d= =(float)(5% %3);单个量时单个量时括号可省括号可省将中的将中的值值转换成转换成double类型类型后送给后送给b将将5%3的值转换成的值转换成float型型end运行结果运行结果:x=3.600000,i=3end例例

35、#include int main() float x; int i; x=3.6 ; i=(int)x; printf(“ x=%f, i=% d n”,x,i); return 0; /* 实型转换为整型实型转换为整型,舍去小数部分。舍去小数部分。 x 中的值未变中的值未变,仍为仍为3.6 */ 6. 6.运算符简介运算符简介 的运算符有以下几类:的运算符有以下几类: (1) (1) 算术运算符算术运算符: + - : + - * * / % + - / % + - - - (2) (2) 关系运算符关系运算符: : = = = = = = != (3) (3) 逻辑运算符逻辑运算符: :

36、 ! & |& | (4) (4) 位运算符位运算符 : : | | (5) (5) 赋值运算符赋值运算符: = : = (6) (6) 条件运算符条件运算符: : ?: (7) (7) 逗号运算符逗号运算符: : ,(8) (8) 指针运算符指针运算符: : * * 和和 (9) (9) 求字节数运算符求字节数运算符: sizeof: sizeof(10)(10)强制类型转换运算符强制类型转换运算符: : ( (类型类型) )(11)(11)分量运算符分量运算符: .: .和和 -(12)(12)下标运算符下标运算符: :(13)(13)其他其他end 例如例如: :i i的初值为的初值为,

37、 ,如果有下面的函数调用:如果有下面的函数调用: 在有的系统中在有的系统中, ,从从左左至至右右求值输出求值输出, ,输出输出3,53,5 在多数系统中在多数系统中, ,是自是自右右向向左左, ,输出输出4,54,5 最好改写成最好改写成: : ; ;(1)(1)不要写容易不要写容易误解的式子误解的式子 例如例如:(i+)+j(i+)+j 写成了写成了 i+ji+j 的形式的形式 (2)(2)式中式中不要含有不同系统有不同处理方法不要含有不同系统有不同处理方法的内容的内容7.7.有关表达式的几点说明有关表达式的几点说明结果结果: 4 , 5end一一.c.c语句分类:语句分类: 共分共分5类,

38、如下:类,如下:(1)(1)控制语句:控制语句:完成一定的控制功能完成一定的控制功能 if( ) else 条件条件语句语句 for( ) 循环循环语句语句 while( ) 循环循环语句语句 do-while( ) 循环循环语句语句 continue 继续继续语句语句 break 间断语句间断语句 switch( ) 开关语句开关语句 goto 转向语句转向语句 return 返回语句返回语句 (2) (2) 函数调用语句函数调用语句 由一个函数调用加一个分号构成的语句由一个函数调用加一个分号构成的语句。 例:例:printf(“this is a c statement.”) ; (3)

39、(3) 表达式语句表达式语句 由一个表达式加一个分号构成的语句由一个表达式加一个分号构成的语句例:例:a = 3 a = 3 ; (4) (4) 空语句空语句 只有一个分号的语句只有一个分号的语句: ; / 什么也不做什么也不做 (5) (5) 复合语句复合语句 用一对用一对 把一些语句括起来的语句。把一些语句括起来的语句。 例例: z=x+y; t=z/100; printf(%f ,t); 运行情况运行情况: : a=3.670000 b=5.430000 c=6.210000 area=9.903431#include#includeint main() double a=3.67, b

40、=5.34, c=6.21, s, area; s=(a+b+c)/2; area=(s*(s-a)*(s-b)*(s-c); printf(“a= =%ft b= =%f tc=%f n”, a,b,c); printf(“area=%fn”,area); return 0; 二二 . . 赋值语句赋值语句例例: : 输入三角形的三边长输入三角形的三边长, ,求三角形面积。求三角形面积。 已知已知: :面积公式面积公式area=area=s s(s-a)(s-b)(s-c) s=(a+b+c)/2 s=(a+b+c)/2 ( ( 先做先做:1.sqrt():1.sqrt()的头文件的头文件

41、2.2.指出赋值语句指出赋值语句 ) ) 1.1. 赋值运算符赋值运算符: : 作作 用用:将一个数值或表达式的值赋给一个:将一个数值或表达式的值赋给一个 优先级优先级:见:见p p379379 , ,排在倒数第二排在倒数第二 如如: : x = 2 + 5 * 6 是将一个是将一个表达式表达式的值赋给一个变量的值赋给一个变量. .2 + 5 * 6 =x 是否正确?是否正确?思考思考: : 2.2.复合的赋值运算符复合的赋值运算符 复合的赋值运算符复合的赋值运算符:在赋值符在赋值符“”之前之前加上加上其其 他他( (二元二元) )运算符运算符, ,如:如:+, -, +, -, * *, /

42、, % , /, % , ,构成构成 优先级、结合性优先级、结合性:和赋值运算符相同和赋值运算符相同例如例如: 1)1) a+=3 等价于等价于 a=a+3 2) x 2) x * * = y+3 = y+3 x x * * = (y+3) = (y+3) x = x x = x * *(y+3) (y+3) ( (不要错写成不要错写成x=x=x x* *y y+3)+3) 3. 赋值表达式赋值表达式 变量变量 赋值运算符赋值运算符 表达式表达式 例例:x=4+7 (该该表达式的值表达式的值为左边变量为左边变量x的值的值) 左值左值(lvalue): 赋值运算符左侧赋值运算符左侧, ,值可改变

43、的量值可改变的量 右值右值(rvalue):赋值运算符右侧的表达式赋值运算符右侧的表达式 例例:a=3*6a+b=7变量可作为左值变量可作为左值 赋值表达式中,赋值表达式中,右边的右边的 表达式表达式 又又 可以是一个可以是一个赋值赋值表达式表达式. . 赋值运算符的结合顺序赋值运算符的结合顺序: “自右而左自右而左”例:例:a=(a=(b=5b=5) ) 括弧内的括弧内的“b=5”b=5”是一个赋值表达式是一个赋值表达式 它的值等于它的值等于5, 5, 再将再将5 5送给送给a a 括弧可以不要,即写成括弧可以不要,即写成 “ “a=a=b=5b=5”例:例:a=5+(c=6) c=? a=

44、? 整个式子值整个式子值=?例:例:a=b=9 (a=b)=3求解步骤如下求解步骤如下: : 先进行先进行“a a - =- =* *”的运算,的运算, 它相当于它相当于= =-(-(* *) ) a a = = 12-1212-12* *12=12= -132 -132 式子式子 a-=aa-=a* *a a 的值为的值为 -132-132 再进行再进行“a + = a + = -132-132”的运算,的运算, 相当于相当于 a = a+(-132)a = a+(-132) = = -132-132-132-132 = -264 = -264 整个式子值整个式子值 = -264= -264

45、如:如: a=12,a=12,求求 a a +=+= a a -=-= a a* *a a ( (自右向左计算自右向左计算) )4. 赋值过程中的类型转换赋值过程中的类型转换 如果如果赋值运算符两侧的类型不一致赋值运算符两侧的类型不一致, 在赋值在赋值时,系统要自动进行类型转换,时,系统要自动进行类型转换, 转换为变量所转换为变量所需类型。需类型。 浮点型数据浮点型数据(包括单、双精度包括单、双精度) 整型变量整型变量: 舍弃浮点数的小数点以后部分舍弃浮点数的小数点以后部分 如如: i为整型变量,执行为整型变量,执行“i=3.56” 结果是结果是 : i 的值为的值为 3, 以整数形式存储在整

46、型变量以整数形式存储在整型变量i中中. 整型数据整型数据 单、双精度变量单、双精度变量: : . .数值不变,以浮点数形式存储到浮点型变量中数值不变,以浮点数形式存储到浮点型变量中 如如: : float f;float f; f=23; f=23; 先将先将2323转换成转换成floatfloat型型23.0, ,再存储在再存储在 f f 中。中。 如如: : double d;double d; d=23; d=23; 将将2323转换成转换成doubledouble型型23.0, ,存储到变量存储到变量d d中。中。 doubledouble型数据型数据 floatfloat变量:变量:

47、 截取其前面截取其前面6 6位位有效数字有效数字, ,存放到变量的存储单存放到变量的存储单 元中。元中。 .floatfloat型数据型数据 doubledouble变量:变量: 数值不变数值不变, ,有效位数扩展到有效位数扩展到1515位位, ,存放到变量的存放到变量的 存储单元中。存储单元中。 字符型数据字符型数据 整型变量整型变量是将字符的是将字符的ascii码送给整型变量码送给整型变量 占字节多的整数占字节多的整数 占字节少的整型变量或字符变量占字节少的整型变量或字符变量 只将低字节原封不动地送入被赋值变量中只将低字节原封不动地送入被赋值变量中例:例:int i=289; char c

48、; c=i;00000001 00100001i.c 00100001=33( ! )例:例:long a=32767; int b; a=a+1( 32768 ); b=a;00000000 00000000 10000000 00000000a.b10000000-32768=000000005. 赋值表达式和赋值语句区别赋值表达式和赋值语句区别 赋赋 值值 语语 句句:后面有分号,不可出现在表达式中:后面有分号,不可出现在表达式中 赋值表达式赋值表达式:后面无分号,可出现在任何允许表:后面无分号,可出现在任何允许表 达式出现的地方。达式出现的地方。 例例: 已知已知 if 语句的一种合法

49、格式语句的一种合法格式: if(表达式表达式) 语句语句; 判断下列语句的语法是否正确?判断下列语句的语法是否正确? 1) if( a0 ) max=a; 2) if( (a=7)0 ) max=a; 3) if( (a=7; ) 0 ) max=a; 例例: x=2+(x=2+(y=3+5;y=3+5;) )6. 变量的赋初值变量的赋初值 (1)(1)在定义变量的同时在定义变量的同时给给变量初始值变量初始值 例例: : int a=3a=3; float f=3.56; char c= a; 例例: : #include void main() char c= a; c=c+2; print

50、f(“%cn”,c); 结果结果 = =? cint a; float f ; char c;a=3; f=3.56; c= a;相当于相当于(2) (2) 给被定义变量的一部分赋初值给被定义变量的一部分赋初值。 如如: :int a,b b,c c; 表示指定表示指定a a, b b, c c为整型变量为整型变量 其中其中a a初值为初值为 0,c0,c初值为初值为 5 5(3) (3) 几个变量赋同一个初值几个变量赋同一个初值 如如: :int a= =3, b= =3, c= =3;表示表示a a, b b, c c的初值都是的初值都是3 3 不能写成不能写成: : intint a=b

51、=c=3 a=b=c=3;例例: 给给 a, b 赋初值赋初值, 判断判断a是否大于是否大于b, 是输出是输出yes, 否则输出否则输出no。(先做)(先做) #include int main( ) if(a b) else return 0; 运行结果运行结果: : ? printf(yesn);printf(“non”);no 在调用标准输入输出库函数时在调用标准输入输出库函数时, 程序开头应该有:程序开头应该有: #include “stdio.h” 或:或: #include 头文头文件件 到系统规定的存放到系统规定的存放库函数头文件库函数头文件的目录中的目录中去寻找去寻找 一一.

52、. printf输出函数输出函数 1. 1. 一般格式一般格式: :printf( (格式控制格式控制, 输出表列输出表列) ) 函数作用函数作用: :输出输出若干个任若干个任 意类型的数意类型的数 据据(1)(1)普通字符普通字符: : 按原样输出按原样输出(2)(2)格式说明格式说明: : %格式字符格式字符是一些要输是一些要输出的数据项出的数据项(变量、表达变量、表达式、常数式、常数)suanji例:例:int a=2,b=3,c=4; printf(a=%d,b=%d,c=%d n,a, b, c); 结果:结果:a=2,b=3,c=4 2. 格式字符格式字符 ( (1) )格式符格式

53、符: 以带符号以带符号十进制形式输出十进制形式输出整数整数 几种用法几种用法: * %d :按数据的实际长度输出。按数据的实际长度输出。 %md:为指定的输出宽度。为指定的输出宽度。 若数据的位数若数据的位数小于小于,则则左端补空格左端补空格, 若若大于大于, 则按则按实际位数输出。实际位数输出。 %ld:输出长整型数据。输出长整型数据。(%mld) 例例 int a=-13, b=12345; long c=135790; printf(%4d,%4d,%ld, a, b, c ); 输出结果为输出结果为:- 13, 12345, 135790例:例:int x=6,y=-25; 1. 写出

54、输出下列形式的输出函数:写出输出下列形式的输出函数: x=_ _ 6,y=_ -25 2. printf(x=); printf(%2dn,x); printf(y=); printf(%4d,y); 输出:?输出:?printf(“x=%3d,y=%4d,x,y) x=_ 6y=_ -25c c格式符格式符: : 用来输出一个字符用来输出一个字符 用用 法法(以以m位宽度输出字符位宽度输出字符) 如如: : charchard=d=k; 1. 1. printf( (%c c, ,d d) ); 输出输出: k: k 2. 2. printf( (%3c c, ,9999) ); 输出输出:

55、 : ? cs s格式符:用于输出字符串格式符:用于输出字符串 % %s : :按实际长度输出字符串按实际长度输出字符串 %ms%ms : :输出的字符串占输出的字符串占 m m 列列 若串长若串长大于大于m m,则全部输出,则全部输出 若串长若串长小于小于m m,则,则左补空格左补空格 %-ms :%-ms :与与%ms%ms相似相似,只是只是若串长若串长小于小于m m,字符串向字符串向 左靠左靠,右补空格右补空格%m%m.n ns : : 输出占输出占m列列, 只取字符串中只取字符串中左端左端n个字符个字符, 输出在输出在m列的右侧,列的右侧,左补空格左补空格% %-m m.n ns: :

56、与与%m.ns相似相似,只是靠左输出,只是靠左输出,右右补空格补空格 例例: :写出下列字符串的输出写出下列字符串的输出 #include void main() printf(% %3s, % %7.2s, % % .4s, % %-5.3sn , chinachina, chinachina, chinachina, chinachina); 运行运行结果结果: china: china, ch ch, chinchin, chichi f格式符格式符: : 以以小数小数形式输出实数形式输出实数( ( 包括单、双精度包括单、双精度 ) ) 有以下几种用法有以下几种用法: %f :%f :整

57、数部分按实际长度输出整数部分按实际长度输出, 小数部分小数部分输出输出6 6位位%mf:%mf:输出的数据输出的数据共占共占m m列列: : 小数部分小数部分:输出输出6 6位小数位小数. . 整数部分整数部分:按实际长度输出按实际长度输出 若若整数部分长度整数部分长度+6+6+1 1mm, 左补空格左补空格% %- -mf:mf:与与%mf%mf相似相似, ,只是在补空格时只是在补空格时, ,是右补空格是右补空格 例例: float x=23.45; printf(“%11f, %-11f, %2f”, x, x,x); 输出输出: _ _23.450000,23.450000_ _, 23

58、.450000%m%m.nfnf:输出的数据共占列,输出的数据共占列, 小数部分小数部分: 输出输出n n位位. . 整数部分整数部分:按实际长度输出按实际长度输出 若若n+n+1+ +整数部分长度整数部分长度 m,m,左端补空格左端补空格%-m%-m.nfnf:与与%m%m.n n相似相似,只是要补空格时只是要补空格时,是在是在右端补空格右端补空格例例: 写出下列实数的输出形式写出下列实数的输出形式。 #include void main() float f=123.456; printf(“% %10f f,% %10.2f f, % %.2f f,% %-10.2f f”, f, f,

59、f, f ); 运行结果运行结果: :四舍五入四舍五入e格式格式例:例:输出单精度实数时的有效位数输出单精度实数时的有效位数(6位位) #include void main() float x,y; x= =11111.111;y= =22222.222; printf(“%f”,x+y); 例例: 输出双精度数时的有效位数输出双精度数时的有效位数(15(15位)位) #include void main() double x,y; x=1111111111111.111111111; y=2222222222222.222222222; printf(“%f”,x+y); 运行结果:运行结果

60、:3333333333333.3333333333333.33333 3010010( (5) ) e格式符格式符: 以以规范化指数规范化指数形式输出实数形式输出实数 可用以下形式:可用以下形式: %e%e: :输出的正输出的正( (负负) )实数共占实数共占13(14)列列 正正: : x x.xxxxxx.xxxxxxe exxx(13xxx(13列列) ) 负负:-:-x x.xxxxxx.xxxxxxe exxx(14xxx(14列列) ) 例例: :printf(%e%e, 123.456); ; 输出输出:1 1.234560e+002234560e+002 ( (注:不同系统的规

温馨提示

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

评论

0/150

提交评论