版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第2章 基本数据类型 2.1 求平均分 2.2 求三角形面积 2.3 整数逆序输出2.4 四舍五入运算2.5 综合应用实例 安庆师范学院计算机学院2.1 求平均分 2.1.1 程序解析 例 2-1 输入某学生两门课的成绩,求平均分 分析:1、百分制的学生成绩表达式一般不含小数,故两门课的分 数一般是整数。2、平均分一般含小数,故在C中定义为单精度的实型数据。3、输入成绩要用scanf()函数,整型数据的输入格式为%d。4、输出平均分要用printf()函数,实型数据的格式符为%f。5、算法:定义相关变量;输入两门课的成绩;求平均分; 输出平均分。安庆师范学院计算机学院2.1 求平均分 2.1.
2、1 程序解析 程序代码#include void main() int score1,score2; / 定义相关变量 float average; printf(“请输入两门课的分数(百分制):”); /输入提示 scanf(“%d%d”,&score1,&score2); /输入成绩 average=(score1+score2)/2.0; /求平均分 printf(“average=%4.1fn”, average); /输出平均分安庆师范学院计算机学院2.1 求平均分int整数,在目前绝大多数机器上占4个字节所占字节数取决于机器字长float单精度浮点数,一般是4个字节长double双
3、精度浮点数,一般是8个字节长char字符,一般是1个字节长用来表示256个ASCII字符2.1.2 数据类型 安庆师范学院计算机学院数据类型修饰符shortshort int,短整数,一般2个字节长。通常简写为shortlonglong int,长整数,一般是4个字节长。通常简写为longlong double,高精度浮点数,一般是10个字节长。signed用来修饰char、int、short和long,说明他们是有符号的整数(正整数、0和负整数)。一般缺省都是有符号的,所以这个修饰符通常省略unsigned用来修饰char、int、short和long,说明他们是无符号的整数(正整数和0)安
4、庆师范学院计算机学院short int型 补码为16位二进制数,它表示一个有符号整数,其特点是:当首位为0时表示一个正数,当首位为1时表示一个负数。正数的补码与其原码相同,而负数的补码为其对应正数的原码各位取反加1。如: +4补= 0000 0000 0000 0100 -4补= 1111 1111 1111 1100整型数据的存储整型的存储安庆师范学院计算机学院2.1 求平均分整数类型字节数及取值范围类 型字节数取值范围int4-21474836482147483647 即 -231 (231 -1)unsigned int 404294967295 即 0 (232 -1)short2-3
5、2768 32767 即 -215 (215 -1)unsigned short20 65535 即 0 (216 -1)long4-21474836482147483647 即 -231 (231 -1)unsigned long404294967295 即 0 (232 -1)安庆师范学院计算机学院超出取值范围会怎样?short的范围是-3276832767如果我们给它一个小于-32768或者大于32767的数会如何呢?现场编程测验小蛇能吞下大象吗?安庆师范学院计算机学院溢出(Overflow)造成的危害一台安装了Windows 95/98的机器,如果连续运行49.7天没有重新启动,可能死
6、机 原因:Windows自启动时刻起,有一个计数器,记录系统已经运行了多少毫秒。这个计数器是个unsigned long 类型的变量unsigned long的最大值是:4294967295一天有 24*60*60*1000 = 86400000毫秒4294967295 / 86400000 = 49.71026961805当49.7天的时候,此计数器会溢出,引起死机安庆师范学院计算机学院2.1 求平均分2.1.3 实型实型数据又称浮点型数据,有三种类型 单精度浮点数类型,简称浮点类型 float 双精度浮点数类型,简称双精度类型 double 长双精度类型 long double实型的相关规
7、定类 型字节数有效数字数值范围float47-3.410-38 3.41038double816-1.710-308 1.710308long double1019-3.410-4932 3.4104932安庆师范学院计算机学院实型数据按指数形式存储。例如,实数-32.28E-20的存储情况如图:实型数据存在舍入误差,提供的有效数字是有限的,只有7(double是16)位,尾数在有效位以外的部分将被舍去。18 -0.322800-实型数据的存储阶码j尾数S安庆师范学院计算机学院浮点数的陷阱#include main()float f;f = 123.456;if (f = 123.456)pr
8、intf(f is equal to 123.456 indeed.);elseprintf(In fact, f is equal to %fn, f);运行结果会是什么?float.c安庆师范学院计算机学院浮点数的陷阱float的精度低,较易发生精度带来的相等性判断问题double精度高,这个问题发生的概率小一些,但也存在解决办法:if (fabs(f 123.456) 1E-5)根据精度要求设定安庆师范学院计算机学院2.1 求平均分2.1.4 字符型 ASCII字符:大小写英文字母、数字、各种标点符号,控制字符,一共128个。扩展ASCII字符:256个。 字符类型的数据在内存中存储的是
9、ASCII码值,一个字符占一个字节的内存空间。类 型字节数取值范围char(有符号)1-128 127 即 -27 (271)unsigned char(无符号)10 255 即 0 (28 -1)安庆师范学院计算机学院字符型数据可看成是只有一个字节的整数,与整数通用。字符型数据的存储安庆师范学院计算机学院不要对变量所占的内存空间字节数想当然用sizeof获得变量或者数据类型的长度#include main()printf(Data type Number of bytesn);printf(- -n);printf(char %dn, sizeof(char);printf(int %dn,
10、 sizeof(int);printf(short int %dn, sizeof(short);printf(long int %dn, sizeof(long);printf(float %dn, sizeof(float);printf(double %dn, sizeof(double);安庆师范学院计算机学院char型与int型之间的关系 小写字母转换为大写字母 #include main()char ch = b; ch = b - 32; printf(%c, %dn, ch, ch);#include main()char ch = b; ch = b - (a - A) ;
11、printf(%c, %dn, ch, ch);安庆师范学院计算机学院2.2 求三角形 2.2.1 程序解析 例 2-2 已知三角形的三边是4、5、6,现要求计算其面积注:海伦公式为 分析:1、三角形的三边边长a=4、b=5、c=6是常量,不需要键盘输入。2、海伦公式计算时用到开平方根,在C中用数学函数sqrt()实 现,要求包含头文件math.h。3、输出用printf()函数,注意实型数据的格式符为%f。4、计算周长的一半时,要注意除数是2.0.5、算法:变量定义及赋值;根据公式计算l和S;输出S。安庆师范学院计算机学院2.2 求三角形 2.2.1 程序解析 程序代码#include #i
12、nclude void main() int a=4,b=5,c=6; / 变量定义及赋初值 float l,s; l=(a+b+c)/ 2.0; /计算l s=sqrt(l*(l-a)*(l-b)*(l-c); /计算面积s printf(“s=%fn”, s); /输出面积安庆师范学院计算机学院2.2 求三角形(1)十进制整数: 如154、565、-6523, 默认为int型。(2)整型常量默认为int型:(a)长整型,数尾加L(l) (b)无符号型,数尾加U(u)(3)以数字“0”开始的是八进制整数022、-037010和10大小不一样因为八进制并不常用,所以此种表示法比较少见2.2.2
13、 常量 1.整型常量安庆师范学院计算机学院八进制与十六进制常量(4)以“0 x”或者“0X”开始的是十六进制整数0 x12、-0 x1F, -0 x1f十六进制的形式比较常用,尤其在进行位一级的控制的时候例如:-63L、0123LU、0 x4aL等分别表示十进制有符号长整型数、八进制无符号长整型数和十六进制有符号长整型数。 安庆师范学院计算机学院2.2 求三角形2.实型常量实型常量只能用十进制形式表示,没有八进制和十六进制形式表示。 (1) 小数形式:由数字和小数点组成,如-0.12、 3.1415926、 .4、 3. 等都是实数。指数形式:如1.8e5或1.8E5都代表1.8x105。但注
14、意字母e(或E)之前必须有数字,且e后面指数必须为整数,如e3、2.1e3.2、e等都不是合法的指数形式。 实型常量默认为double型: (a) float型:123.45f、 456.78F、1e-2f、4.5e3F (b) long double型: 123.45l、 456.78L、1e-2l、 4.5e3L表示安庆师范学院计算机学院字符型常量是由一对单引号括起来的单个字符构成,例如,a,b,1等都是有效字符型常量 一个字符型常量的存储值是该字符集中对应的ASCII编码值,常用字符的ASCII编码值如下: 字符AZ的码值是6590, 字符az的码值是97122, 字符09的码值是485
15、7, 空格字符 的ASCII码值32。单引号内只能有一个字符,除非用“”开头2.2 求三角形3.字符常量安庆师范学院计算机学院2.2 求三角形C语言中转义字符字符形式功 能n换行,将光标从当前位置移到下一行开头t横向跳格,光标跳到下一个水平制表位b退格r回车,将光标从当前位置移到本行开头f换页,将光标从当前位置移到下一页开头反斜杠字符单引号字符双引号字符ddd1到3位8进制数所代表的字符xhh1到2位16进制数所代表的字符安庆师范学院计算机学院2.2 求三角形字符串常量与字符常量的区别(1) 字符常量由单引号括起来,字符串常量由双引号括起来。(2) 字符常量占一个字节内存空间。字符串常量占的内
16、存字节数等于字符串中字符所占的字节数加1。多余一个字节用于存放字串结束标记0。注意:不要将单个字符组成的字符串常量与字符常量混淆。x和x是不同的4.字符串常量 字符串常量是由一对双引号括起来的字符序列组成的,例如“abc”、“a”等都是字符串常量。转义字符也可以在字符串中使用安庆师范学院计算机学院己知圆的半径,求圆的周长和面积。/* EX1-2.C */#include main() int r; /*说明圆半径r为整型变量*/ float l,s; /*说明周长l、面积s为实型变量*/ r=8; /*给半径r赋初值*/ l=2*3.1416*r; /*计算l的值*/ s=3.1416*r*r
17、; /*计算s的值*/ printf(“r=%d,l=%f,s=%fn”,r,l,s); /*输出圆的半径、周长和面积*/ 安庆师范学院计算机学院己知圆的半径,求圆的周长和面积。/* EX1-2.C */#include #define PI 3.14 main() int r; /*说明圆半径r为整型变量*/ float l,s; /*说明周长l、面积s为实型变量*/ r=8; /*给半径r赋初值*/ l=2*PI*r; /*计算l的值*/ s=PI*r*r; /*计算s的值*/ printf(“r=%d,l=%f,s=%fn”,r,l,s); /*输出圆的半径、周长和面积*/ 安庆师范学院
18、计算机学院2.2 求三角形宏常量就是使用符号代表常量。C语言中允许用标识符定义一个常量,这种常量定义在C语言中被称之为“宏定义” 。其基本格式如下: #define N 10 /*定义符合常量N,其值为10*/注意:宏定义的末尾一般不用分号,定义位置放在函数之外5.宏常量安庆师范学院计算机学院6.CONST常量 宏常量中没有数据类型,编译器对宏常量不进行类型检查,进行简单的字符串转换,有时产生意想不到的错误,此时可以使用const常量。其定义格式如下: const int MAXN=100; /声明一个名为MAXN的整型 const常量,其值为100。 注意:常量只能在定义时赋值,然后不能再改
19、变其值安庆师范学院计算机学院2.2 求三角形什么是变量? 变量是内存中的一块区域,其值在程序运行过程中可以被改变。必须先定义,后使用。在C语言中使用标识符作为变量的名字。2.2.3 变量 标识符是程序中表示数据和程序段的基本手段,是由字母、数字等字符组成的一个字符串。1.标识符安庆师范学院计算机学院标识符命名 由英文字母、数字和下划线组成,大小写敏感不可以是数字开头直观,见名知意,便于记忆和阅读最好使用英文单词或其组合切忌使用汉语拼音 下划线和大小写通常用来增强可读性variablenamevariable_nameVariableName, variableName不允许使用关键字作为标识符
20、的名字 int, float, for, while, if等某些功能的变量采用习惯命名如:for语句所采用的循环变量习惯用i, j, k标识符的长度Windows 风格UNIX 风格安庆师范学院计算机学院2.2 求三角形是指系统预定义的保留标识符,又称保留字。它们有特定含义,不能再作其它用途。ANSI C定义的关键字共32个 autodoubleintstructbreakelselongswitchcaseenumregistertypedefcharexternreturnunionconstfloatshortunsignedcontinueforsignedvoiddefaultgo
21、tosizeofvolatiledoifwhilestatic2.关键字安庆师范学院计算机学院2.2 求三角形类型 变量名=初值,变量名=初值,;例如: char a; float f; double x,y,min; int m,n=3,w=5;3.变量的定义和初始化安庆师范学院计算机学院【注意】:使用变量的基本原则变量必须先定义,后使用不能用关键字做变量名;所有变量必须在第一条可执行语句前定义#include main() int r; r=8; float l,s; l=2*3.1416*r; s=3.1416*r*r; printf(r=%d,l=%f,s=%fn,r,l,s); #i
22、nclude main() int r; float l,s; r=8; l=2*3.1416*r; s=3.1416*r*r; printf(r=%d,l=%f,s=%fn,r,l,s); 安庆师范学院计算机学院在一个函数中,同一个变量不能被定义两次;定义变量,是初始化变量的最好时机不被初始化的变量,其值为危险的随机数char esc = a;int i = 1;int sum = 0;float eps = 1.0e-5;安庆师范学院计算机学院实型数据提供的有效数字位数float型数据提供7位有效数字double型数据提供16位有效数字 使用不当导致舍入误差#include main()f
23、loat a;double b;a = 123456.789e4;b = 123456.789e4;printf(%fn%fn,a,b);安庆师范学院计算机学院2.2 求三角形2.2.4 函数 C语言中提供许多事先编好的函数,供用户使用,如例2-2的求平方根函数sqrt()。 用户调用库函数时,要#include命令将函数所在的头文件包含到程序中。函数名功 能函数名功 能sqrt(x)计算x的平方根,x应大于等于0 exp(x)计算ex的值fabs(x)计算x的绝对值pow(x,y)计算xy的值log(x)计算lnx的值sin(x)计算sinx的值,x为弧度值log10(x)计算lgx的值co
24、s(x)计算cosx的值,x为弧度值安庆师范学院计算机学院例 2-3 计算银行存款的本息,输入存款金额money、存期year和年利率rate,根据公式计算存款到期时的本息合计sum,输出时保留两位小数。注:安庆师范学院计算机学院#include #include void main() int money,year; / 定义相关变量 float rate,sum; printf(“Enter money:”); /提示输入money scanf(“%d”,&money); /调用scanf()函数输入money printf(“Enter year:”); scanf(“%d”,&year
25、); printf(“Enter rate:”); scanf(“%f”,&rate); sum=money*pow(1+rate),year);/调用POW()函数计算sum printf(“sum=%.2fn”, sum); 安庆师范学院计算机学院2.3 整数逆序输出2.3.1 程序解析 例 2-4 输入一个两位整数,要求将该数逆序输出 #include void main() int a,b; / b表示a的逆序 int x,y;/x和y分别表示a的个位数和十位数 printf(“请输入一个两位数:”); scanf(“%2d”,&a); /%2d表示输入两位整数 x=a%10; /求a
26、的个位数 y=a/10; /求a的十位数 b=10*x+y; /组成新数b printf(“a=%d b=%dn”,a,b);安庆师范学院计算机学院2.3 整数逆序输出1.基本算术运算符(+加 减 *乘 /除 %求余) (1)运算符%仅用于整型数据的运算,a%b的结果为a除以b的余数,余数的符号与被除数相同。(2)运算符+、-、*、/的操作对象可以是整数,也可以是实数。当操作对象均是整数时,结果仍是整数;若两个操作对象中有一个是实数,则结果为double型。(3)当两个整数相除时结果为整数。但是如果除数或被除数中有一个为负数,则舍入的方向是不固定的。多数机器采取“向零取整”方法,即-5/3=-
27、1,取整后向零靠拢。2.3.2 算术运算安庆师范学院计算机学院2.3 整数逆序输出表达式是由常量、变量、函数和运算符构成的式子。(1) 算术表达式定义由算术运算符、括号以及操作对象组成的符合C语言语法规则的表达式称为算术表达式。如a+b-c/d*(a-c) 。(2) 优先级和结合性优先级:(*,/,%) (+,-)结合方式:自左向右2.算术表达式及其优先性和结合性安庆师范学院计算机学院先增运算用+V表示,先使V值增1,然后再访问。后增运算用V+表示,先访问V,然后再使V值增1 。先减运算用-V表示,先使V值减1,然后再访问。后减运算用V-表示,先访问V,然后再使V值减1 。增1和减1运算符是单
28、目运算符,且操作对象只能是变量 ,不能是常量或表达式。如5+, +(a+b)2.3 整数逆序输出3.自增+、自减- 运算符安庆师范学院计算机学院i+,i- /* 表示在使用i值之后将i的值加(减)1*/+i,-i /* 表示在使用i值之前将i的值加(减)1*/例如:设i的原值为5j=i+; /*先将i赋给j,i再自增1,i的值为6,j的值为5 */j=+i; /*先将i的值自增1,再赋给j,i的值为6,j的值为6 */安庆师范学院计算机学院2.3 整数逆序输出(1) 自增自减运算符的优先级高,和单目运算符相同。其结合方向自是“自右向左”(右结合性)。考虑表达式-i+,由于“-”和“+”优先级相
29、同,均为右结合性,因此相当于-(i+)。(2)自增自减运算符给程序员带来方便,但同时也带来副作用。例如,“printf(%d,%dn,i,i+);”在不同编译环境下结果有可能不同。若i的值为3,则结果VC是“3,3”,TC是“4,3”。(3) C编译在处理时尽可能多地自左而右将若干个字符组成一个运算符,如i+j,将解释为(i+)+j,而不是i+(+j)。安庆师范学院计算机学院(4)良好的程序设计风格提倡:在一行语句中,一个变量只能出现一次加1或者减1运算过多的加1和减1运算混合,不仅可读性差,而且因为编译器实现的方法不同,导致不同编译器产生不同的运行结果安庆师范学院计算机学院2.3 整数逆序输
30、出1.赋值运算符 =C语言中,赋值被认为是一种运算,由赋值运算符将一个变量和一个表达式连接起来的式子称为赋值表达式。形式是: 变量 = 表达式赋值表达式的值也可以再赋给其它变量,如a=(b=3+5)。2.3.3 赋值运算安庆师范学院计算机学院【注意】赋值运算符“=”不同于数学中使用的符号,它没有“相等”的含义。#include void main() int a,b,t=0; a=2;b=3; if (a=b) t=a ; printf(a=%d,b=%d,t=%dn,a,b,t); 安庆师范学院计算机学院2.3 整数逆序输出2.复合赋值运算符 C语言允许在赋值运算符“=”之前加上其他运算符以
31、构成复合赋值运算符。 +=,-=,*=,/=,%=,=,&=,=,|=例: a+=5; 等价于 a=a+5; a*=b+5; 等价于 a=a*(b+5); a%=5; 等价于 a=a%5;3. 优先级和结合性 赋值运算符和复合赋值运算符优先级相同,只高于逗号运 算符,右结合。安庆师范学院计算机学院2.3 整数逆序输出【例2-5】分析下面程序的运行结果#include main() int a=12; a += a -= a*a; printf(%d n,a); 安庆师范学院计算机学院2.3 整数逆序输出1.逗号运算符 , 其一般形式为: 表达式1,表达式2逗号表达式的求值过程是:先求表达式1的
32、值,再求表达式2的值,表达式2的值就是整个逗号表达式的值。 一个逗号表达式与另一个表达式构成一个新的逗号表达式。 例如: (a=5-3,a*5),a+15逗号表达式的一般形式可以扩展为:(表达式n的值就是整个逗号表达式的值。) 表达式1,表达式2,表达式3,表达式n2.3.4 逗号运算安庆师范学院计算机学院2.3 整数逆序输出2. 优先级和结合性逗号运算符是所有运算符中级别最低的。逗号表达式的结合性为自左向右的。 【注意】并不是任何地方出现的逗号都是作为逗号运算符。 【练习】分析下面程序的运行结果#include main() int a=5,b=6,c=1; printf(%d %dn,(+
33、a, b+) , c+2); 安庆师范学院计算机学院2.4 四舍五入运算2.4.1 程序解析 例 2-6 通过键盘输入一个实数,要求按四舍五入的规则保留两位小数并输出。#include void main() float x,y; printf(“请输入一个小数: ”); scanf(“%f”,&x); y=(int)(x*100+0.5)/100.0; printf(“x=%f,y=%fn”,x,y); 安庆师范学院计算机学院2.4 四舍五入运算2.4.2 数据类型转换 1.类型自动转换转换规则 高 double float long unsigned 低 int char,short 图中
34、横向向左的箭头表示必定的转换,纵向的箭头表示当运算对象为不同类型时转换的方向。安庆师范学院计算机学院2.4 四舍五入运算2.赋值类型转换(1) 当整数赋给浮点型变量,数值不变,但有效位增加。 (2) 当单、双精度型数据赋给整型变量,小数部分将被舍弃。 (3) 将字符型数据赋给整型变量时,由于字符占一个字节,整型变量4个字节,故将字符数据放到整型变量低8位中。 将unsigned char型数据赋给unsigned int或int型变量时,高24位补0。 将char型数据赋给unsigned int或int型变量时,高24位补上符号位。(若字符值最高位为0,则高24位补0;若字符值最高位为1,则
35、高24位全补1)安庆师范学院计算机学院2.4 数据类型转换2.4.2 赋值类型转换(1) 当整数赋给浮点型变量,数值不变,但有效位增加。 (2) 当单、双精度型数据赋给整型变量,小数部分将被舍弃。 (3) 将字符型数据赋给整型变量时,由于字符占一个字节,整型变量4个字节,故将字符数据放到整型变量低8位中。 将unsigned char型数据赋给unsigned int或int型变量时,高24位补0。 将char型数据赋给unsigned int或int型变量时,高24位补上符号位。(若字符值最高位为0,则高24位补0;若字符值最高位为1,则高24位全补1)安庆师范学院计算机学院【例2-7】分析下面程
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 专业选择讲座模板
- 2025年度茶叶产品溯源体系建设合同范本4篇
- 2025年度场化项目服务类采购项目合同附件定制版4篇
- 2025年度电竞主题商铺租赁合作协议4篇
- 2025年度生态环保园区场地委托出租与环保技术服务合同样本4篇
- 专业技能提升课程2024培训协议
- 人教版九年级化学上册第1章开启化学之门《第2节 化学研究什么》公开示范课教学课件
- 二零二四事业单位聘用合同四种类别适用范围与条件3篇
- 2025年度文化演艺中心场地租用协议范本4篇
- 2025年度城市综合体项目场地购置合同示范文本4篇
- 【传媒大学】2024年新营销
- 乳腺癌的综合治疗及进展
- 【大学课件】基于BGP协议的IP黑名单分发系统
- 2025届广东省佛山市高三上学期普通高中教学质量检测(一模)英语试卷(无答案)
- 自身免疫性脑炎课件
- 人力资源管理各岗位工作职责
- 信阳农林学院《新媒体传播学》2023-2024学年第一学期期末试卷
- 2024建筑公司年终工作总结(32篇)
- 信息安全意识培训课件
- 2024年项目投资计划书(三篇)
- 配电安规课件
评论
0/150
提交评论