第2章 数据处理和交互_第1页
第2章 数据处理和交互_第2页
第2章 数据处理和交互_第3页
第2章 数据处理和交互_第4页
第2章 数据处理和交互_第5页
已阅读5页,还剩67页未读 继续免费阅读

下载本文档

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

文档简介

1、2.1 运算符和表达式2.2 数据类型转换2.3 交互式输入和输出2.1 运算符和表达式2.1.1 语言中的运算符简介语言中的运算符简介 的运算符有以下几类:的运算符有以下几类:(1)算术运算符 (+ - * / % + -)(2)关系运算符 (!)(3)逻辑运算符 (!|)(4)位运算符 ( |)(5)赋值运算符 (及其扩展赋值运算符)(6)条件运算符 (?:)(7)逗号运算符 (,)2.1 运算符和表达式(8)指针运算符 (*和)(9)求字节数运算符(sizeof)(10)强制类型转换运算符( (类型) )(11)分量运算符(-)(12)下标运算符()(13)其他 (如函数调用运算符()2

2、.1 运算符和表达式2.1.2 算术运算符和算术表达式算术运算符和算术表达式 1 1 基本的算术运算符基本的算术运算符: : (加法运算符,或正值运算符。如:、) (减法运算符,或负值运算符。如:、)* * (乘法运算符。如:*) (除法运算符。如:) (模运算符,或称求余运算符,两侧均应为整型数据,如:的值为)。2.1 运算符和表达式说明:v两个整数相除的结果为整数如5/3的结果值为,舍去小数部分如果除数或被除数中有一个为负值,舍入方向不固定。例如,-5/3,有的系统中得到的结果为-1,在有的系统中则得到结果为-2VC+采取“向零取整”的方法 如5/3=1,-5/3=-1,取整后向零靠拢v%

3、 运算符要求参加运算的运算对象(即操作数)为整数,结果也是整数。如8%3,结果为22.1 运算符和表达式2. 2. 自增、自减运算符自增、自减运算符:v作用是使变量的值加或减+i,-i:在使用i之前,先使i的值加(减)1i+,i-:在使用i之后,使i的值加(减)12.1 运算符和表达式i+i+与与+i+i的区别:的区别: 是先执行后,再使用的值; 是先使用的值后,再执行。例如:例如:i= 3i= 3; ; i的值先变成4, 再赋给,j的值均为 ; 先将 i的值3赋给,的值为,然后变为2.1 运算符和表达式void main() int i=8; printf(%dn,+i); printf(%

4、dn,-i); printf(%dn,i+); printf(%dn,i-); 2.1 运算符和表达式注意:注意: (1)自增运算符(),自减运算符(),只能用于变量,而不能用于常量或表达式; +5、8- (2)和的结合方向是“自右至左”。 自增(减)运算符常用于循环语句中使循环变量自动加。 2.1 运算符和表达式3. 算术表达式和运算符的优先级与结合性:v用算术运算符和括号将运算对象(也称操作数)连接起来的、符合语法规则的式子,称为算术表达式v运算对象包括常量、变量、函数等例如例如: : *.5a 是一个合法的表达式2.1 运算符和表达式3. 算术表达式和运算符的优先级与结合性:v语言规定了

5、运算符的优先级和结合性 在表达式求值时,先按运算符的优先级别高低次序执行,例如先乘除后加减。 规定了各种运算符的结合方向(结合性) 算术运算符的结合方向为“自左至右”,即先左后右 。2.1 运算符和表达式n优先级:自上到下由高到低 (1)()、(结构体成员运算符)、(指向结构体成员运算符) (2)单目运算符 !(非)、(自减)、(自加)、(按位取反) 、正号(+)、负号(-)(3)算术运算符+、 -、 *、 %、 / (4)关系运算符、 =、 b)?a:b 中? :为3目运算符 !a 为单目运算符. 单目,三目运算符都为自右向左结合,双目运算符除赋值运算符都为自左向右结合参考教材参考教材252

6、5页页 2.1 运算符和表达式main() int i=8; printf(%dn,-i+); printf(%dn,-i-); printf(%dn,i); 不要写让人费解的程序代码!不要写让人费解的程序代码!2.1 运算符和表达式main() int i=8; printf(%dn,-i); i+; printf(%dn,-i); i- - printf(%dn,i); 2.1 运算符和表达式语言中有的运算符为一个字符,有的运算符由两个字符组成 ,为避免误解,最好采取大家都能理解的写法。 例如:不要写成i+j的形式,而应写成 (i+)+j的形式 2.1 运算符和表达式在调用函数时,实参数的

7、求值顺序,标准并无统一规定。例如:例如:的初值为,如果有下面的函数调用: printf(,i+) 在有的系统中,从左至右求值,输出“,”。在多数系统中对函数参数的求值顺序是自右而左,printf函数输出的是“,”。以上这种写法不宜提倡, 最好改写成 j = i+;j = i+; printf(%d printf(%d, %d%d, j j,i)i)不要写出别人看不懂的也不知道系统会怎样执行程序4. 4. 复合的赋值运算符复合的赋值运算符 在赋值符“”之前加上其他运算符,可以构成复合的运算符。例如例如: 等价于 * 等价于 *() 等价于 以“”为例来说明,它相当于使进行一次自加()的操作。即先

8、使加,再赋给。2.1 运算符和表达式为便于记忆,可以这样理解:为便于记忆,可以这样理解: a += b (其中a为变量,b为表达式) a += b(将有下划线的“a+”移到“=”右侧) a = a + b (在“=”左侧补上变量名a) 2.1 运算符和表达式注意注意: :如果是包含若干项的表达式,则相当于它有如果是包含若干项的表达式,则相当于它有 括号。括号。如:如: x %= y+3 x %= (y+3) x = x %(y+3)(不要错写成x=x%y+3) 凡是二元(二目)运算符,都可以与赋值符一起组合成复合赋值符。 语言规定可以使用种复合赋值运算符:语言规定可以使用种复合赋值运算符:,*

9、 *,| | 2.1 运算符和表达式赋值表达式赋值表达式 由赋值运算符将一个变量和一个表达式连接起来的式子称为“赋值表达式”。一般形式为一般形式为: 例如例如: “5”是一个赋值表达式 2.1 运算符和表达式将赋值表达式作为表达式的一种,使赋值操作不仅将赋值表达式作为表达式的一种,使赋值操作不仅可以出现在赋值语句中,而且可以以表达式形式出可以出现在赋值语句中,而且可以以表达式形式出现在其他语句(如输出语句、循环语句等)中。现在其他语句(如输出语句、循环语句等)中。 如:如:printf(%d,a=b); 分析分析: :如果b的值为3, 则输出a的值(也是表达式a=b的值)为3。在一个语句中完成

10、了赋值和输出双重功能。2.1 运算符和表达式赋值语句赋值语句赋值语句是由赋值表达式加上一个分号构成例:例:a=100 赋值表达式 a=100; 赋值语句条件中不能含有赋值符号,但是赋值表达式可以包含于条件表达式中例:例:if(a=b) t=a; 错误 if(a=b)0) t=a; 正确2.1 运算符和表达式 例 给出三角形的三边长,求三角形面积。n解题思路:假设给定的三个边符合构成三角形的条件n关键是找到求三角形面积的公式n公式为:其中s=(a+b+c)/2)()(csbsassarea#include #include int main ( ) double a,b,c,s,area; a=

11、3.67; b=5.43; c=6.21; s=(a+b+c)/2; area=sqrt(s*(s-a)*(s-b)*(s-c); printf(a=%ftb=%ft%fn,a,b,c); printf(area=%fn,area); return 0; 对边长对边长a、b、c赋值赋值计算计算s计算计算area#include #include int main ( ) double a,b,c,s,area; a=3.67; b=5.43; c=6.21; s=(a+b+c)/2; area=sqrt(s*(s-a)*(s-b)*(s-c); printf(a=%ftb=%ft%fn,a,b

12、,c); printf(area=%fn,area); return 0; 数学函数,数学函数,计算计算平方根平方根调用数学函数调用数学函数加此行加此行#include #include int main ( ) double a,b,c,s,area; a=3.67; b=5.43; c=6.21; s=(a+b+c)/2; area=sqrt(s*(s-a)*(s-b)*(s-c); printf(a=%ftb=%ft%fn,a,b,c); printf(area=%fn,area); return 0; 转义字符转义字符,使输出位置跳使输出位置跳到下一个到下一个tab位置位置调用数学函数

13、调用数学函数加此行加此行2.2 数据类型转换2.2.1 隐式类型转换不同类型数据间的混合运算混合运算:整型(包括int,short,long)、浮点型(包括float,double)可以混合运算。在进行运算时,不同类型的数据要先转换成同一类型,然后进行运算.说明: 这种类型转换是由系统自动进行的。不同类型数据间的混合运算:(1) 若参与运算量的类型不同,则先转换成同一类型,然后进行运算;(2) 转换按数据长度增加的方向进行,以保证精度不降低。如int型和long型运算时,先把int量转成long型后再进行运算。2.2 数据类型转换不同类型数据间的混合运算:(3) 所有的浮点运算都是以双精度进行

14、的,即使仅含float单精度量运算的表达式,也要先转换成double型,再作运算。+、-、*、/ 运算的两个数中有一个数为float或double型,结果是double型。系统将float型数据都先转换为double型,然后进行运算;如果int型与float或double型数据进行运算,先把int型和float型数据转换为double型,然后进行运算,结果是double型 5/2=2; 5/2.0=2.52.2 数据类型转换不同类型数据间的混合运算: (4) 字符型数据与整型数据进行运算,必须先转换成int型,就是把字符的ASCII代码与整型数据进行运算;(5) 在赋值运算中,赋值号两边量的数

15、据类型不同时,赋值号右边量的类型将转换为左边量的类型。如果右边量的数据类型长度左边长时,将丢失一部分数据,这样会降低精度,丢失的部分按四舍五入向前舍入。 2.2 数据类型转换 例 给定一个大写字母,要求用小写字母输出。解题思路:解题思路:u关键是关键是找到大找到大、小写字母间小写字母间的的内在联系内在联系u同一个字母,用小写表示的字符的同一个字母,用小写表示的字符的ASCII代代码比用大写表示的字符的码比用大写表示的字符的ASCII代码大代码大322.2 数据类型转换#include int main ( ) char c1,c2; c1=A; c2=c1+32; printf(%cn,c2)

16、; printf(”%dn”,c2); return 0;将字符将字符A的的ASCII代码代码65放到放到c1中中将将65+32的的结果结果放到放到c2中中用字符形式输出用字符形式输出用十进制形式输出用十进制形式输出2.2 数据类型转换2.2.2 强制类型转换运算符v可以利用强制类型转换运算符将一个表达式转换成所需类型。强制类型转换运算符的一般形式为: (类型名)(表达式)(double)a (将转换成double类型)(int) (x+y) (将x+y的值转换成int型) (float)(5%3)(将5%3的值转换成float型)2.2 数据类型转换main() float f=5.75;

17、printf(int)f=%d,f=%fn,(int)f,f); 本例表明,f虽强制转为int型,但只在运算中起作用,是临时的,而f本身的类型并不改变。因此,(int)f的值为 5(删去了小数)而f的值仍为5.75。 2.2 数据类型转换main() float PI=3.14159; int s,r=5; s=r*r*PI; printf(s=%dn,s); n本例程序中,PI为实型;s,r为整型。在执行s=r*r*PI语句时,r和PI都转换成double型计算,结果也为double型。但由于s为整型,故赋值结果仍为整型,舍去了小数部分。 2.2 数据类型转换n在使用强制转换时应注意以下问题

18、: n1) 类型说明符和表达式都必须加括号(单个变量可以不加括号),如把(int)(x+y)写成(int)x+y则成了把x转换成int型之后再与y相加了。 n2) 无论是强制转换或是自动转换,都只是为了本次运算的需要而对变量的数据长度进行的临时性转换,而不改变数据说明时对该变量定义的类型。不改变数据说明时对该变量定义的类型。 2.2 数据类型转换2.3 运算符和表达式例: 强制类型转换。#include void main() float ; int ; 3.6; (int); printf(x=%f, i=%dn,x,i); 有两种类型转换,一种是在运算时不必用户指定,系统自动进行的类型转换

19、,如3+6.5。第二种是强制类型转换。当自动类型转换不能实现目的时,可以用强制类型转换。 运行结果:运行结果: x3.600000, i=32.3.1 输入输出举例2.3.2 字符数据的输入输出2.3.3 用printf函数输出数据2.3.4 用scanf函数输入数据2.3 交互式输入输出2.3.1 输入输出举例(一).所谓输入输出是以计算机主机为主体而言的输出输出: :从计算机向外部输出设备(显示器,打印机) 输出数据输入输入: :从输入设备(键盘,鼠标,扫描仪)向计算机 输入数据.(二).C语言本身不提供输入输出语句,输入和输出操作是由C函数库中的函数来实现的例如例如: :字符输入函数:

20、getchar 字符输出函数:putchar格式输入函数: scanf 格式输出函数: printf字符串输入函数:gets 字符串输出函数:puts2.3.1 输入输出举例(三).在使用系统库函数时,要用预编译命令“#include”将有关的“头文件”包括到用户源文件中.例如:在调用标准输入输出库函数时,文件开头应该有: #include “stdio.h” 或: #include 系统在查找文件的顺序上不同,用引号先搜索当前目录,用尖括号先搜索系统目录2.3.1 输入输出举例2.3.1 输入输出举例 例 键盘输入三角形的三边长,输出三角形面积。#include #include int m

21、ain ( ) double a, b, c, s, area; scanf(%lf%lf%lf,&a,&b,&c); s=(a+b+c)/2; area=sqrt(s*(s-a)*(s-b)*(s-c); printf(a=%ftb=%ft%fn,a,b,c); printf(area=%fn,area); return 0; 2.3.2 字符数据的输入输出1.用putchar函数输出一个字符v作用:从计算机向显示器输出一个字符 vputchar函数的一般形式为: putchar(c) 例: 先后输出BOY三个字符。 v解题思路:定义3个字符变量,分别赋以初值B、O、

22、Y用putchar函数输出这3个字符变量的值 2.3.2 字符数据的输入输出#include int main ( ) char a=B,b=O,c=Y; putchar(a); putchar(b); putchar(c); putchar (n); return 0; 向显示器输出换行符向显示器输出换行符2.3.2 字符数据的输入输出#include int main ( ) char a=B,b=O,c=Y; putchar(a); putchar(b); putchar(c); putchar (n); return 0; 改为改为int a=66,b=79,c=89;2.3.2 字符

23、数据的输入输出putchar(101) (输出字符)putchar() (输出单撇号字符)2.3.2 字符数据的输入输出2. 用getchar函数输入一个字符v作用:从终端(或系统隐含指定的输入设备)输入一个字符vgetchar函数的一般形式为: getchar( )2.3.2 字符数据的输入输出 例 从键盘输入BOY三个字符,然后把它们输出到屏幕。v解题思路:用3个getchar函数先后从键盘向计算机输入BOY三个字符用putchar函数输出2.3.2 字符数据的输入输出#include int main ( ) char a,b,c; a=getchar(); b=getchar(); c

24、=getchar(); putchar(a); putchar(b); putchar(c); putchar(n); return 0; 输入一个字符,送给输入一个字符,送给变量变量a注意:字符输入时,回车系统也当做一个字符2.3.2 字符数据的输入输出v在C程序中用来实现输出和输入的,主要是printf函数和scanf函数v这两个函数是格式输入输出函数v用这两个函数时,必须指定格式2.3.3 用printf函数输出数据作用:向终端(或系统隐含指定的输出向终端(或系统隐含指定的输出设备)输出设备)输出若干个任意类型若干个任意类型的数据。的数据。1.printf函数的一般格式printf(格式

25、控制,输出表列)例如:printf(”i=%d,c=%cn”,i,c);格式声明格式声明2.3.3 用printf函数输出数据1.printf函数的一般格式printf(格式控制,输出表列)例如:printf(”i=%d,c=%cn”,i,c);普通字符普通字符2.3.3 用printf函数输出数据1.printf函数的一般格式printf(格式控制,输出表列)例如:printf(”i=%d,c=%cn”,i,c);可以是常量、变量或表达式可以是常量、变量或表达式2.3.3 用printf函数输出数据2. 常用格式字符格式符。用来输出一个有符号的十进制整数v可以在格式声明中指定输出数据的域宽

26、printf(”%5d%5dn”,12,-345);v%d输出int型数据v%ld输出long型数据2.3.3 用printf函数输出数据2. 常用格式字符格式符。用来输出一个字符 char ch=a; printf(”%c”,ch); 或 printf(”%5c”,ch);输出字符输出字符:a2.3.3 用printf函数输出数据2. 常用格式字符格式符。用来输出一个字符串 printf(”%s”,”CHINA”); 输出字符串输出字符串:CHINA2.3.3 用printf函数输出数据2. 常用格式字符f格式符。用来输出实数,以小数形式输出不指定数据宽度和小数位数,用%f 例3.6 用%f

27、输出实数,只能得到位小数。 double a=1.0; printf(”%fn”,a/3);2.3.3 用printf函数输出数据2. 常用格式字符f格式符。用来输出实数,以小数形式输出 指定数据宽度和小数位数。用%m.nf printf(%20.15fn,1/3); printf(%.0fn”,10000/3.0);2.3.3 用printf函数输出数据2. 常用格式字符f格式符。用来输出实数,以小数形式输出 指定数据宽度和小数位数。用%m.nf float a; a=10000/3.0; printf(%fn,a);2.3.3 用printf函数输出数据2. 常用格式字符f格式符。用来输出

28、实数,以小数形式输出vfloat型数据只能保证6位有效数字vdouble型数据能保证15位有效数字v计算机输出的数字不都是绝对精确有效的2.3.3 用printf函数输出数据2. 常用格式字符e格式符。指定以指数形式输出实数v%e,VC+给出小数位数为位 指数部分占5列 小数点前必须有而且只有1位非零数字 printf(”%e”,123.456); 输出:1.234560 e+0022.3.3 用printf函数输出数据2. 常用格式字符e格式符。指定以指数形式输出实数v%m.ne printf(”%13.2e”,123.456); 输出: 1.23e+002 (前面有4个空格)2.3.3 用

29、printf函数输出数据2.3.3 用printf函数输出数据%d%d: :以带符号的十进制形式输出整数以带符号的十进制形式输出整数%o%o: :以八进制无符号形式输出整数以八进制无符号形式输出整数%x%x: :以十六进制无符号形式输出整数以十六进制无符号形式输出整数%u%u: :以无符号十进制形式输出整数以无符号十进制形式输出整数%c%c: :以字符形式输出,只输出一个字符以字符形式输出,只输出一个字符%s%s: :输出字符串输出字符串%f%f: :以小数形式输出单,双精度数,隐含输出六位小数以小数形式输出单,双精度数,隐含输出六位小数%e%e: :以指数形式输出实数以指数形式输出实数%g%g: :选用选用%f%f或或%e%e格式中输出宽度较短的一种格式,不输格式中输出宽度较短的一种格式,不输 出无意义的出无意义的0 02.3.3 用printf函数输出数据L:用于长整型整数,可加在格式符d,o,x,u前面M(代表一个正整数):数据最小宽度N(代表一个正整数):对实数,表示输出n位小数; 对字符串,表示截取的字符个数:输出的数字或字符在域内向左靠2.3.3 用printf函

温馨提示

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

评论

0/150

提交评论