《数据描述与基本操作-汕头大学.ppt》由会员分享,可在线阅读,更多相关《数据描述与基本操作-汕头大学.ppt(31页珍藏版)》请在三一办公上搜索。
1、2023/10/14,许创制作,1,CH2REVER:输入一个三位整数,然后构成其反向三位数,并将其输出。例如:输入123,输出321。(提示:要用/和%运算符进行运算)CH2SORT:任意输入三个整数分别送给变量a,b,c,然后对它们作比较交换,使abc,再输出a,b,c。(提示:要用若干个 if)第二章 练习P52 2.13 2.15 2.22 2.25 2.26,第二章 上机,2023/10/14,许创制作,2,第二章 数据描述与基本操作,C语言的数据类型,2023/10/14,许创制作,3,2023/10/14,许创制作,4,2023/10/14,许创制作,5,2023/10/14,许
2、创制作,6,数据取值范围,short(int)-3276832767unsigned short 065535long-21474836482147483647unsigned long 04294967295float(3.4e-383.4e38)double(1.7e-3081.7e+308)char-128127unsigned char 0255,2023/10/14,许创制作,7,整型常量,表示形式十进制:123、0、-32768八进制:00、01234、-0765十六进制:0 xA3、-0 x98F非法表示:096、20FA、0X10FG长整型 1234L、-100000L、034
3、56L、0 xAD345L,2023/10/14,许创制作,8,带符号整数的内存存放,带符号整数在内存以其补码形式存放正数的补码是该数的二进制数本身负数的补码是:先取该数的绝对值以二进制形式表示再对其取反(1变0,0变1)然后加1,2023/10/14,许创制作,9,例.-1在内存中的存放(补码)+1的二进制数为 00000000 00000001 取反得 11111111 11111110 加1得 11111111 11111111Turbo C将char隐含指定为signed char 故扩充ASCII码为242的字符若按十进制数形式输出,其结果为-14。其理由见下:因242的八进制形式为
4、0362 二进制形式为11 110 010 11110010正好是-14的补码。,2023/10/14,许创制作,10,实型常量,一般形式:0.123、0.、3.14指数形式(科学记数法):日常表示 浮点表示3.14159100 3.14159E00.0314159 102 0.0314159E+23141.59 10-3 3141.59E-3 尾数 阶码(3字节)(1字节),2023/10/14,许创制作,11,字符常量,以单引号为定界符 a(ASCII码为97)A(ASCII码为65)0(ASCII码为48)转义字符 n、101、x41、(例2.7)ASCII码值(整数)65、0101、0
5、 x41例2.1、例2.2、例2.3,2023/10/14,许创制作,12,字符串常量,“hello”该字符串长度为5,存储时系统自动加上串结束标志“0”,故实际占用6个字节空间:h e l l o 0 104 101 108 108 111 0 如要处理字符串“I say:Goodbye!”应写成:“I say:Goodbye”要特别注意A与“A”的不同!(1字节与2字节),2023/10/14,许创制作,13,符号常量,例2.5 求圆面积和周长#define PI 3.14 double area(double r)return(PI*r*r);double circumference(d
6、ouble r)return(2*PI*r);main()printf(area=%lf,area(2.0);printf(circumference=%lfn,circumference(2.0);,2023/10/14,许创制作,14,标识符,标识符命名规则以字母或下划线开头,后面可有其他字母、数字或下划线。如sum、number_of_class。非法标识符:number-of-class、5-6-90、$a。禁止用P351的32个关键字禁止用与系统内部同名的标识符,如_mode标识符有效长度依不同系统而异。标识符区分大小写。如PI与pi不同。变量、常量、函数、数组、结构、文件的名字是标
7、识符。,2023/10/14,许创制作,15,变量的赋值,一般形式(赋值表达式):变量=表达式(=叫赋值运算符)例:a=1.0;x=x+3;ch=#;b=(a=3+5);a=b=c=d=3+5;变量在使用之前必需先声明,然后才能使用可以在声明变量时对变量赋初值 例:int a=3,b=4;,2023/10/14,许创制作,16,运算符(C共有13类),1。算术运算符:+、-、*、/、%、+、-2。关系运算符:、=、|、&5。赋值运算符:=6。条件运算符:?:,2023/10/14,许创制作,17,7。逗号运算符:,8。指针运算符:*、&9。求字节数运算符:sizeof10。强制类型转换运算符:
8、(类型名)11。分量运算符:.、-12。下标运算符:13。其他运算符:如函数调用、()等,2023/10/14,许创制作,18,运算符sizeof(不是函数而是运算符)用于测定一种类型数据所占字节数 如:sizeof(类型名)或 sizeof(表达式)例2.4:运算符sizeof的使用 printf(“char:%d bytesn”,sizeof(char);1printf(“int:%d bytesn”,sizeof(int);2printf(“long:%d bytesn”,sizeof(long);4printf(“double:%d bytesn”,sizeof(double);8 若
9、有声明 int x;则可有以下表达式sizeof(int)、sizeof(x)、sizeof x,但sizeof int,2023/10/14,许创制作,19,使用运算符应注意:,各运算符的功能运算符与运算量的关系 如单目或双目、运算量的类型!a-12 3+9 5%3 运算符的优先级(见P351)结合方向 如a=b=c=5是右结合的结果类型 如x=3+2.5结果应是实型的,2023/10/14,许创制作,20,算术运算,双目算术运算符:+-*/%表达式:a op b自反算术赋值运算符 a=a+b 可写为 a+=b b=b*(a+2);c=b;可写为 c=b*=a+2;自加和自减 i=i+1 即
10、 i+=1 可写为 i+或+i i=i-1 即 i-=1 可写为 i-或-i,2023/10/14,许创制作,21,i+与+i的差异 先引用后增值 先增值后引用 例:int i=1;int i=1;x=i+;x=+i;y=i;y=i;结果:结果:x为1,y为2 x为2,y为2 正负号运算符(单目运算)例:-5+6.5-a,2023/10/14,许创制作,22,赋值类运算符的副作用 例 1)c=b*=a+2;容易误解为b*=a;c=b+2;2)x=i+j;应是x=(i+)+j而非x=i+(+j)3)j=3;i=(k=j+1)+(j=5);i在不同机器上可得到不同结果9或11。解决办法:将费解处分
11、解。如将1)改为 c=a+2;c=b*c;将3)改为 j=3;k=j+1;j=5;i=k+j;加上一些括号。如将1)改为c=b*=(a+2);将2)改为x=(i+)+j;,2023/10/14,许创制作,23,关系运算,运算符=!=关系运算符优先级较低(低于算术类但高于赋值类)a+bc+d 意即(a+b)(c+d)关系表达式的值只有“真”、“假”,即“1”和“0”若已知 x=2;y=3;则 x=y的值为0 表达式 z=10=x=y+2 z的值为1 注意以上表达式与数学不等式含义不同!,2023/10/14,许创制作,24,数学表达式11 a的值为2字符可按其ASCII码值大小进行比较 如 a
12、A 的值为1(真)浮点数由于存储产生的误差,作相等或不等比较时要特别小心(见P34),2023/10/14,许创制作,25,逻辑运算,运算符:真值表见P35,2023/10/14,许创制作,26,P35例2.8、写出描述点A(x,y)落在图2.4阴影部分(不压线)的C表达式-21逻辑运算的一些基本公式:0|a=a 1&a=a 1|a=1 0&a=0 a|!a=1 0&!a=0 a|a=a a&a=a!(a|b)=!a&!b!(a&b)=!a|!b!(!a)=a,2023/10/14,许创制作,27,条件运算,条件表达式 e1?e2:e3 是三目运算 其含义为:若e1为真,则值为e2,否则值为e
13、3。当e2与e3类型不同时,取其类型高者,例如,若e2为整型,e3为实型,则表达式的值应为实型。例2.9 计算a+|b|例2.10 输入两数,输出大者(见P37),2023/10/14,许创制作,28,不同类型数据间的转换,不同类型数据的运算结果取其高级者 char int long float double赋值时等号右边表达式转成左边类型(例2.11)char int取字符的ASCII码;int char去掉多余的高位;float int 去掉小数部分;double float 采用舍入编译时,实型数按双精度参加运算可以强制表达式类型转换(显式转换)x=(float)100;i=(int)3
14、.14;k=(int)(x+i);,2023/10/14,许创制作,29,不同类型数据的隐式转换,运算转换 例:float x;x=2.5+2;赋值转换 例:float x;x=2;输出转换 例:int x=65;printf(“%cn”,x);例2.12 有符号整型转换为无符号整型例2.13 长类型转换为短类型,2023/10/14,许创制作,30,输出函数printf,格式:printf(格式控制参数,输出项表)格式控制参数:%-0 m.n l或h 格式字符格式字符详见P44表2.7修正符 l:对整型指long型,对实型指 double型。修正符 h:将整型的格式字符修正为short型。域宽与精度说明见表2.8,2023/10/14,许创制作,31,输入函数scanf,格式:scanf(格式控制参数,地址列表)格式控制参数:%*m l或h 格式字符*为赋值抑制符,可实现“虚读”m指定输入数据的宽度格式字符的使用与printf函数类似(但没有小数宽度)例2.14例2.17 scanf函数的各种使用scanf的执行结束可以是 正常结束;格式项与输入域不匹配的非正常结束。例2.18 scanf有返回值例2.19 scanf与输入缓冲区的关系例2.20 getchar与putchar函数(必须#include“stdio.h”),