第2章_数据的存储与运算

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2.2 整型数据的运算与分析 (2) 变量 )
• 变量代表内存中具有特定属性的一个存储单 元,它用来存放数据,这就是变量的值,在 程序运行期间,这些值是可以改变的。 • 变量名实际上是一个以一个名字对应代表一 个地址,在对程序编译连接时由编译系统给 每一个变量名分配对应的内存地址。从变量 中取值,实际上是通过变量名找到相应的内 存地址,从该存储单元中读取数据。
2.2 整型数据的运算与分析 2.2.1 整型数据运算程序举例和分析
例题 2.1
鸡兔同笼: 在一个笼子里同时养着一些鸡和兔子, 你想了解有多少只鸡和多少只兔,主人对你说:我 只告诉你鸡和兔的总头数是16,总脚数是40,你能 不能自己计算有多少只鸡和多少只兔?
解题思路
设:x--鸡数量 y--兔数量, h--总头数 f--总脚数 有方程式: x+y=h (1)
第二章
本章要点
பைடு நூலகம்
数据的描述规则 数据的操作规则
主要内容
2.1 数据在计算机中是怎样存储的 2.2 整型数据的运算与分析 2.3 实型数据的运算与分析 2.4 字符型数据的运算 2.5 符号常量 2.6 算术运算符和算术表达式 C运算符和 运算符和C 2.7 C运算符和C表达式 2.8 提高部分
2.1 数据在计算机中是怎样存储的 2.1.1 数据在计算机中是以二进制形式存储的
2.3 实型数据的运算与分析 2.3.3 实型变量
(1) 实型变量的分类
浮点型变量分为单精度(float型)、双精度 (double型)和长双精度型(long double)三类 形式。
类型 float double型 double型 long double 位数 32 64 128 数的范围 10-37 ~ 1038 10-307~10308 10-4931~104932 有效数字 6~7 位 15~16位 15~16位 18~19位 18~19位
•计算机内部的信息都是用二进制来表示的。 •二进制数的特点是“逢二进一”。每一位的值只有0和1两 种可能。 例如:十进制数10,用二进制表示是1010。它的含义是:
1× 2 + 0 × 2 + 1× 2 + 0 × 2
3 2 1
0
每一个二进位代表不同的幂,最右边一位代表2的0 次方,最右边第二位代表2的1次方,以此类推。显然 一个很大的整数可能需要几十个“二进制位”来代表
2.4 字符型数据的运算
2.4.1 字符数据运算的简单例子
例题 2.4
逐个输出英文字母C,H,I,N,A。然后按反序输 出,即A,N,I,H,C。
解题思路
可以把5个字母分别放在5个变量中,第1次按 正序输出这5个字母,第2次按反序输出这5个 字母。C语言提供字符型变量,用来存放字符 数据。
2.4 字符型数据的运算
2.1 数据在计算机中是怎样存储的 2.1.3 不同类型数据的存储方式
1. 整数的存储方式 十进制整数先转换为二进制形式。例如:整数10以二进制 形式表示是1010,直接把它存放在存储单元中。 2. 实数的存储形式 实数采用指数形式存储,例如:123.456可以写成标准化指 数形式0.123456,它包括前后两个部分,前面部分是数 值部分,后面部分是指数部分。 。
在字母e(或E)之前的小数部分中,小数点左边 应有一位(且只能有一位)非零的数字.
例如: 123.456可以表示为: 例如:
123.456e0, 12.3456e1, 1.23456e2, 0.123456e3, 0.0123456e4, 0.00123456e 其中的1.23456e3 1.23456e3称为“规范化的指数形 1.23456e3 式”。
2.3 实型数据的运算与分析
(3) 把实数按双精度数处理 C编译系统将浮点型常量作为双精度来处理。 例如:f = 2.45678 * 4523.65 例如 系统先把2.45678和4523.65作为双精度数 进行相乘运算,得到的乘也是一个双精度数。 最后取其前7位赋给浮点型变量f。如果在数 的后面加字母f或F(如1.65f, 654.87F), 这样编译系统就会把它们按单精度(32位) 处理。
两种表 示形式
小数 0.123 指数 3e-3
注意:字母e(或E)之前必须有数字,且e后面的 注意: 指数必须为整数 1e3、1.8e1e3、1.8e-3、-123e-6、-.1e-3 123e.1ee3、2.1e3.5、.e3、 e3、2.1e3.5、.e3、e
2.3 实型数据的运算与分析
标准化的指数形式: 标准化的指数形式:
2.2 整型数据的运算与分析 (3)整型常量 )
整型常量即整常数。在C语言中,整常数 可用以下三种形式表示:
• 十进制整数:123, -456.4。 • 八进制整数:以0头的数是八进制数。 如:0123表示八进制数123,等于十进制数 83,-011表示八进制数-11,即十进制数-9。 • 十六进制整数:以0x开头的数是16进制数。 如:0x123,代表16进制数123,等于十进制数 291。 -0x12等于十进制数10。
(3)可以在定义变量时同时赋初值 d=32450,p=3250, int d=32450,p=3250,double r=0.008 运行结果:month=201.983404, (4)运行结果:month=201.983404, total=655436.127930
2.3 实型数据的运算与分析 2.3.2 实型常量的表示形式
2.2 整型数据的运算与分析 2.2.2 整型常量和整型变量 (1) 常量 ) • 在程序运行过程中,其值不能被改变的量称为常量 • 常量区分为不同的类型:
整型 100,125,-100,0 实型 3.14 , 0.125,-3.789 字符型 ‘a’, ‘b’,‘2’ 字符串 “a”, “ab”,”1232”
2.1 数据在计算机中是怎样存储的 2.1.2 位、字节和地址
位:又称“比特”(bit)。每一个二极管元件称为
一个“二进制位”,是存储信息的最小单位。它 的值是“1”或“0”。 字节: 字节:又称“拜特”(byte)。一般将8个“二进制 位”组织成一组,称为“字节”。 地址: 地址:计算机的存储器包含许多存储单元,操作系 统把所有存储单元以字节为单位编号 。
编写程序
#include <stdio.h> void main() { char a='C',b='H',c='I',d='N',e='A'; /* a,b,c,d,e定义为字符变量 */ printf("%c%c%c%c%c\n",a,b,c,d,e); /* 顺序输出CHINA */ printf("%c%c%c%c%c\n",e,d,c,b,a); /* 反序输出CHINA */ }
2.3 实型数据的运算与分析 2.3.1实型数据的运算举例 2.3.1实型数据的运算举例
例题 2.2
分期付款的计算。张先生为购房,向银行贷款, 贷款额为324500元,每月准备还3245元,月利率 为0.8%,求需要多少个月才能还清。
解题思路
m=log10(p)-log10(p-d*r))/log10(1+r); d—贷款额,p—每月还款数,r—月利率,m—还 清贷款所需月数。 d=324500元,p=3245元,r=0.8%。
2.3 实型数据的运算与分析
(2)实型数据在内存中的存放形式 (2)实型数据在内存中的存放形式 一个浮点型数据一般在内存中占4 个字节(32位)。与整型数据的存储方 式不同,浮点型数据是按照指数形式 存储的。系统把一个浮点型数据分成 小数部分和指数部分,分别存放。指 数部分采用规范化的指数形式。
运行结果: 运行结果: 123456.789e5 例2.3实型数据的舍入误差 #include <stdio.h> void main() {float a,b; a = 123456.789e5; b = a + 20 ; printf(“%f\ printf(“%f\n”,b); } 说明: 说明:一个实型变量只能保证的有效数字是7位有 效数字,后面的数字是无意义的,并不准确地表 示该数。应当避免将一个很大的数和一个很小的 数直接相加或相减,否则就会“丢失”小的数
2.3 实型数据的运算与分析
编写程序
#include <stdio.h> /* 用输入输出函数时必须用“stdio.h”头文件 */ #include <math.h> /* 用数学函数时必须用“math.h”头文件 */ void main() { int d,p; /* 定义d和p为整型变量 */ float r,m; /* 定义r和m为实型变量 */ d=324500; /* 给整型变量d赋值 */ 说明: 包含头文件” 说明: (1) #include 是“包含头文件” 的命 p=3245; /* 给整型变量p赋值 */调用系统提供的库函数,见附录E。 令,调用系统提供的库函数,见附录E r=0.008; /* 给实型变量r赋值 */ 编译系统把所有实(float)型常量( (float)型常量 (2)C编译系统把所有实(float)型常量(如0.008) 和 log10函数的值都作为双精度数据来处 m=(log10(p)-log10(p-d*r))/log10(1+r); log10函数的值都作为双精度数据来处 /* 通过公式求m的值 */ 在把它们赋给float float型变量时可能会丧 理,在把它们赋给float型变量时可能会丧 printf("month=%f\n",m); /* 输出m的值 */ 失一些精度,在编译时出现“警告” 失一些精度,在编译时出现“警告”,不 printf("total=%f\n",m*p); /* 计算并输出总的还款数,可以将r和m改定义为 属于致命性错误, 属于致命性错误 */ 可以将r double型 double型 }
2.2 整型数据的运算与分析 (4) 整型变量 )
• 整型数据在内存中的存放形式
数据在内存中是以二进制形式存放的。
如: int i;
i=10;
/* 定义为整型变量 */ /* 给i赋以整数10 */
2.2 整型数据的运算与分析
注意: 注意:
• 十进制数10的二进制形式为1010,Turbo C 2.0和Turbo C++ 3.0为一个整型变量在 内存中分配2个字节的存储单元(不同的编 译系统为整型数据分配的字节数是不相同 的,VC++ 6.0则分配4个字节)。 • 数值是以补码(complement) 表示的。
0.123456 数值部分
×
10 3
指数部分
说明:标准化指数形式:其数值部分是一个小数,小数点 前的数字是零,小数点后的第一位数字不是零。一个实数可 以有多种指数表示形式,但只有一种属于标准化指数形式
2.1 数据在计算机中是怎样存储的 3. 字符的存储方式 • 字符包括字母(如A,a,X,x)、专用字符(如 $,@,%,#)等。 • 计算机并不是将该字符本身存放到存储单元 中(存储单元只能存储二进制信息),而是将字 符的代码存储到相应的存储单元中。 • 附录A是字符与代码的对照表,这是国际通过 的ASCII代码.
2x+4y=f (2)
f − 2h 2
(2)式-2x (1)式: 2y = f – 2h 求x和y的公式:
y=
2.2 整型数据的运算与分析 编写程序 #include <stdio.h> void main() { int h,f,x,y; /* 定义整型变量h,f,x,y */ h=16; /* 对整型变量h赋值,使h的值等于16 */ f=40; /* 对整型变量f赋值,使h的值等于40 */ y=(f-2* h)/2; /* 对表达式(f-2* h)/2进行运算,把结果赋给y */ x=h-y; /* 对表达式h-y进行运算,把结果赋给x */ printf("%d%d\n",x,y); /* 输出鸡的个数和兔的个数 */ } 说明: 说明: 1、运行时显示:124 ?? 2、程序改进:printf("%d,%d\n",x,y); n",x,y); 3、再改进:printf("cock=%d,rabbit=%d\n",x,y);
相关文档
最新文档