C之数据的输入输出

上传人:ji****72 文档编号:54125834 上传时间:2018-09-08 格式:PPT 页数:65 大小:590KB
返回 下载 相关 举报
C之数据的输入输出_第1页
第1页 / 共65页
C之数据的输入输出_第2页
第2页 / 共65页
C之数据的输入输出_第3页
第3页 / 共65页
C之数据的输入输出_第4页
第4页 / 共65页
C之数据的输入输出_第5页
第5页 / 共65页
点击查看更多>>
资源描述

《C之数据的输入输出》由会员分享,可在线阅读,更多相关《C之数据的输入输出(65页珍藏版)》请在金锄头文库上搜索。

1、第二章 基本数据类型及 数据的输入输出,2.0预备知识 2.1标识符、常量与变量 2.2数据类型 2.3运算符和表达式 练习与实践,2.0 预备知识 计算机中数的表示及进制转换 数码、基与权 数码:表示数的符号 基:数码的个数 权:每一位所具有的值 数制,十进制:4956= 410+910 +510+610,二进制:1011=12+02 +12+12,十六进制:81AE=816+116 +1016+1416,八进制:4275=48+28 +78+58,各种进制之间的转换 二进制、八进制、十六进制转换成十进制 方法:按权相加,各种进制之间的转换(整数) 二进制、八进制、十六进制转换成十进制 方法

2、:按权相加,十进制转换成二进制、八进制、十六进制 原理:,方法:连续除以基,从低到高记录余数,直至商为0,二进制与八进制之间的转换 二进制转换成八进制:从右向左,每3位一组(不足3位左补0),转换成八进制 八进制转换成二进制:用3位二进制数代替每一位八进制数,例 (1101001)2=(001,101,001)2=(151)8,例 (246)8=(010,100,110)2=(10100110)2,000 0 001 1 010 2 011 3 100 4 101 5 110 6 111 7,二进制与十六进制之间的转换 二进制转换成十六进制:从右向左,每4位一组(不足4位左补0),转换成十六进

3、制 十六进制转换成二进制:用4位二进制数代替每一位十六进制数,例 (11010101111101)2=(0011,0101,0111,1101)2=(357D)16,例 (4B9E)16=(0100,1011,1001,1110)2=(100101110011110)2,0000 0 0001 1 0010 2 0011 3 0100 4 0101 5 0110 6 0111 7 1000 8 1001 9 1010 A 1011 B 1100 C 1101 D 1110 E 1111 F,字节和位 内存以字节为单元组成 每个字节有一个地址 一个字节一般由8个二进制位组成 每个二进位的值是0或

4、1,数值的表示方法原码、反码和补码 原码:最高位为符号位,其余各位为数值本身的绝对值 反码: 正数:反码与原码相同 负数:符号位为1,其余位对原码取反 补码: 正数:原码、反码、补码相同 负数:最高位为1,其余位为原码取反,再对整个数加1,9-5=4 9+7=16=(14)12,为什么用补码表示?,25-19=25+(-19) (25)10=(00011001)2 (-19) 10 =(11101101) 200011001 + 11101101 - 100000110,为什么用补码表示?,19 - 25 = 19 +(- 25) (19)10=(00010011)2 (-25) 10 =(1

5、1100111) 200010011 + 11100111 - 11111010 -(-6)?引入补码之后符号位也进入了运算,不用再单独处理符号位,负数补码转换成十进制数:最高位不动,其余位取反加1,例 补码:11111001取反:10000110加1: 10000111=-7,2.1 常量与变量 标识符 定义:用来标识变量、常量、函数等的字符序列 组成: 只能由字母、数字、下划线组成,且第一个字母必须是字母或下划线 大小写敏感 不能使用关键字 长度:最长32个字符(不同的c语言编译器规定长度不同) 命名原则: 见名知意 不宜混淆 如l与I, o与0,例:判断下列标识符号合法性 sum Sum

6、 M.D.John day Date 3days student_name #33 lotus_1_2_3 char ab _above $123 14) (2005.4)以下不能定义为用户标识符是A)Main B)_0 C)_int D)sizeof,M.D.John,3days,#33,char,$123,ab,32个关键字:(由系统定义,不能重作其它定义) auto break case char const continue default do double else enum extern float for goto if int long register return sho

7、rt signed sizeof static struct switch typedef unsigned union void volatile while,一般用大写字母 是宏定义预处理命令,不是C语句 直接常量: 整型常量 实型常量 字符常量 字符串常量,如 #define PRICE 30,常量 定义:程序运行时其值不能改变的量(即常数) 分类: 符号常量:用标识符代表常量 定义格式: #define 符号常量 常量,例 符号常量举例#define PRICE 30 main() int num,total;num=10;total=num*PRICE;printf(“total=%

8、d“,total); ,运行结果:total=300,变量-其值可以改变的量概念: 每个变量有一个名字:用标识符表示。 每个变量有一个存储空间(存储单元),该单元中的状态所表示的数为此时变量的值。,变量初始化:定义时可以赋初值,合法标识符,变量的使用:必须先定义,后使用。定义可以放在函数体的前部,也可以放在函数的外部或复合语句的开头。,变量定义的一般格式:数据类型 变量1,变量2,变量n;,如:int a,b,c;float x,y;,例:int a=2,b,c=4;float data=3.67;char ch=A;int x=1,y=1,z=1;int x=y=z=1;,例2 float

9、a,b,c;c=a%b; /Illegal use of floating point in function main,变量定义位置:一般放在函数开头,例1 int student;stadent=19; /Undefined symbol statent in function main,每一个变量都有一个类型,表明了为它的存储属性:分配空间的大小;表示的数的范围;所能进行的运算。,例2.1 main() float length,area,radius; /*length为周长,area为面积,radius半径*/printf(“nEnter a radius: “);scanf(“%f

10、“, 程序的运行情况为:Enter a radius: 2.8 length is : 17.584000area is : 24.617599,2.2 数据类型 数据类型总表,数据类型决定: 1. 数据占内存字节数 2. 数据取值范围 3. 其上可进行的操作,2.2.1整数类型整数类型的标识符是int。整型数据根据其占用的内存字节数不同,可加限定词:short(短整型),int ,long(长整型),shortintlong 可用sizeof(类型标识符)测量unsigned short (无符号短整型),unsigned int (无符号整型),unsigned long (无符号长整型)

11、,其中short和long的引入是为满足实际要求的不同长度的整数,而经unsigned限定词限定的整数总是正的。,整型常量(整常数) 三种形式: 十进制整数:由数字09和正负号表示.如 123,-456,0 八进制整数:由数字0开头,后跟数字07表示.如0123,011 十六进制整数:由0x开头,后跟09,af,AF表示. 如0x123,0Xff 注意:只有十进制数可以是负数,而八进制,十六进制只能是正数。,例 12 与 12L,例 30000 为int型65536 为long int 型,问题: 0123 = ( )10 0x123 = ( )10 0Xff = ( )10,整型常量的类型

12、根据其值所在范围确定其数据类型:一个整数若值在-3276832767内,则默认为它是int型;一个整数若值在-21474836482147483647之间,可使用长整型常量表示。 在整常量后加字母l或L,认为它是long int 型常量 无符号数也可用后缀表示,整型常数的无符号数的后缀为“U”或“u”。例如: 358u,0x38Au,235Lu 均为无符号数;0XA5Lu表示十六进制无符号长整数A5,其十进制为165。一个非负的整数,只要它的值不超过相应变量的取值范围,就可以赋给unsigned型变量。例如,可以将6000赋给一个 unsigned int型变量,但却不可以将66000赋给一个

13、unsigned int型变量(将会出现溢出错误),整型变量定义方法:int a1,a2;unsigned int b1,b2;一个整型常量只可以赋给能容纳下其值的整型变量。 如a1,a2的取值范围为-32768-32767b1,b2的取值范围为 0-65535 如果:a1=65535; 或者: b1=-1; 在内存中数值将不是所赋的数值。,2.2.2 实数类型实数类型分为单精度(float)和双精度(double)类型,二者的区别在于所占存储位的多少,从而决定了其取值范围。通常以32位(bits)来存储单精度实数型数据,以64位来存储双精度实型数据。,实型常量(实数或浮点数) 表示形式: 小

14、数形式:由数字和小数点组成,小数点的左右至少一边要有数字。小数形式表示的实型常量必须要有小数点 (必须有小数点) 如0.123, .123, 123.0, 0.0, 123. 指数形式:由尾数、e或E和指数部分组成,E的两边都至少要有一位数且E的右边只允许是整数形式(e或E之前必须有数字;指数必须为整数)如12.3e3 ,123E2, 1.23e4 , e-5 , 1.2E-3.5 , -1.6e-2 ,-.5e3 1.234e04 (表示指数8进制)1.234e+4,实型常量的类型 默认double型 在实型常量后加字母f或F,认为它是float 型,实型变量实型变量的说明形式如下:floa

15、t 变量名1,变量名2, 变量名n;double 变量名1,变量名2, 变量名n; float:占4字节,提供7位有效数字 double:占8字节,提供1516位有效数字,例 float a; a=111111.111; /* a=111111.1*/ double b; b=111111.111; /* b=111111.111*/,float a,b,c; double x,y;,【例2.2】实型变量的有效数字。main( ) double a;a=6.152367864359046178294901;printf(“n%25.20f“,a); 输出结果为:6.15236786435904648000在这个例子中,a被赋值了一个有效位数为25位的数字。但由于a是double类型的,所以a只能接收1516位有效数字。在printf语句中,我们使用了%20.18f这样的格式符号,这指示printf语句在输出a时总长度应为25位,小数点位数占20位。输出的结果显然显示了25位数,但只有6.152367864359046共16位有效数字被正确显示出来,后面的数字是一些无效的数值。这就表明double型的数据只接收1516位有效数字。,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号