第2章 数据的存储与运算
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
编写程序
#include <stdio.h> void main() {double r=3.67,c,s,v; c=2*3.1415926*r; s=3.1415926*r*r; v=4/3*3.1415926*r*r*r; printf("c=%f\ns=%f\nv=%f\n",c,s,v); }
例2.6 大小写字母的转换
运行结果:A B
#include <stdio.h>
void main()
{ char c1,c2;
c1=’a’;
• 说明:程序的作用是将两
c2=’b’;
个小写字母a和b转换成大
c1=c1-32;
写字母A和B。从ASCI
c2=c2-32;
I代码表中可以看到每一
printf(“%c %c″,个c1小,c写2)字;母比它相应的大
说明:标准化指数形式:其数值部分是一个小数,小数点 前的数字是零,小数点后的第一位数字不是零。一个实数可 以有多种指数表示形式,但只有一种属于标准化指数形式
2.1 数据在计算机中是怎样存储的
3. 字符的存储方式
• 字符包括字母(如A,a,X,x)、专用字符(如$, @,%,#)等。 • 计算机并不是将该字符本身存放到存储单元中 (存储单元只能存储二进制信息),而是将字符的 代码存储到相应的存储单元中。 • 附录A是字符与代码的对照表,这是国际通用 的ASCII代码。
说明: 1、第3行是定义字符变量a,b,c,d,e。字符要用单撇号括起来。
一个字符变量放一个字母字符。 2、第4,5行输出5个字母。输出字符所用的格式说明为“%c”。 3、运行结果:
CHINA
ANIHC
2.4 字符型数据的运算
有些以“\”开头的特殊字符称为转义字符
\n 换行 \t 横向跳格 \r 回车 \\ 反斜杠 \ddd ddd表示1到3位八进制数字 \xhh hh表示1到2位十六进制数字
void main()
{ int d,p;
/* 定义d和p为整型变量 */
float r,m;
/* 定义r和m为实型变量 */
d=324500;
/* 给整型变量d赋值 */
p=3245; r=0.008;
/* 给整型变说量明p赋:值 *(/1) #include 是“包含头文件” 的命
/* 给实型变量r赋值令*/,调用系统提供的库函数,见附录E。
printf("c=%f\ns=%f\nv=%f\n",c,s,v);
}
说明:
运行结果:
c=23.059290 s=42.313797 v=155.291633
2.6 算术运算符和算术表达式
2.6.1 算术运算符
(1)基本的算术运算符:
• + (加法运算符,或正值运算符。如:3+5、+3) • - (减法运算符,或负值运算符。如:5-2、-3) • * (乘法运算符。如:3*5) • / (除法运算符。如:5/3) • % (模运算符,或称求余运算符,%两侧均应为整型
十进制整数先转换为二进制形式。例如:整数10以二进制
形式表示是1010,直接把它存放在存储单元中。 2. 实数的存储形式
实数采用指数形式存储,例如:123.456可以写成标准化指
数形式0.123456 10,3 它包括前后两个部分,前面部分
是数值部分,后面部分是指数部分。
0.123456
103
数值部分 指数部分
说明:
运行结果:
c=23.059290 s=42.313797 v=155.291633
2.5 符号常量
编写程序
#define pi 3.14159
#include <stdio.h>
void main()
{double r=3.67,c,s,v;
c=2*pi*r;
s=pi*r*r;
v=4/3*pi*r*r*r;
2.4 字符型数据的运算
编写程序
#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 */ }
ASCII码表
高三位
b6b5b4 ASCII码表(7位)
000 001 010 011 100 101 110 111
低四位 0000 NUL DLE SP
0
@
P
、
p
b3b2b1 0001
SOH DC1
!
1
A
Q
a
q
b0
0010 STX DC2
“
2
B
R
b
r
0011 ETX DC3
#
3
C
S
c
s
0100 EOT DC4
1 23 0 22 1 21 0 20
每一个二进位代表不同的幂,最右边一位代表2的0次 方,最右边第二位代表2的1次方,以此类推。显然一 个很大的整数可能需要几十个“二进制位”来代表
2.1 数据在计算机中是怎样存储的
2.1.2 位、字节和地址
位:又称“比特”(bit)。每一个二极管元件称为一
解题思路
m=log10(p)-log10(p-d*r))/log10(1+r); d—贷款额,p—每月还款数,r—月利率,m— 还清贷款所需月数。 d=324500元,p=3245元,r=0.8%。
2.3 实型数据的运算与分析
编写程序
#include <stdio.h> /* 用输入输出函数时必须用“stdio.h”头文件 */ #include <math.h> /* 用数学函数时必须用“math.h”头文件 */
短整型short 整型int 长整型long 单精度型float
双精度型double
数组
构造类型
结构体struct 共用体union
枚举类型enum
指针类型 空类型void
定义类型typedef
数据类型决定:
1. 数据占内存字节数 2. 数据取值范围 3. 可进行的操作
例2.3 实型数据的舍入误差
第二章
主要内容
2.1 数据在计算机中是怎样存储的 2.2 整型数据的运算与分析 2.3 实型数据的运算与分析 2.4 字符型数据的运算 2.5 符号常量 2.6 算术运算符和算术表达式 2.7 C运算符和C表达式
2.1 数据在计算机中是怎样存储的
2.1.1 数据在计算机中是以二进制形式存储的
•计算机内部的信息都是用二进制来表示的。 •二进制数的特点是“逢二进一”。每一位的值只有0和1两 种可能。 例如:十进制数10,用二进制表示是1010。它的含义是:
m=(log10(p)-log10(p-d*r))/l(og210)(1C+编r);译/*系通统过把公所式有求实m的(f值lo*a/t)型常量(如
printf("month=%f\n",m); printf("total=%f\n",m*p);
/*/*计输算出并m0据 能.输的来 会0出值0处 丧8总)*理 失和/的, 一还l在 些款og数把 精10它 度*函/ 们 ,数赋 在的给编值译f都l时o作a出t为型现双变“精量警度时告数可
有效数字 6~7 位 15~16位 18~19位
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.3 实型数据的运算与分析
2.3.3 实型变量
实型变量的分类
浮点型变量分为单精度(float型)、双精度( double型)和长双精度型(long double)三类形 式。
类型 float Double long double
位数 32 64 128
数的范围 10-37 ~ 1038 10-307~10308 10-4931~104932
$
4
D
T
d
t
0101 ENQ NAK
%
5
E
U
e
u
0110 ACK SYN
&
6
F
V
f
v
0111 BEL ETB
‘
7
Βιβλιοθήκη Baidu
G
W
g
w
1000
BS CAN
(
8
H
X
h
x
1001
HT
EM
)
9
I
Y
i
y
1010
LF SUB
*
:
J
Z
j
z
1011
VT ESC
+
;
K
[
k
{
1100
FF
FS
,
<
L
\
l
|
1101
CR
GS
-
=
M
]
m
}
#include <stdio.h>
void main()
运行结果: 123456.789e5
{float a,b;
a = 123456.789e5;
b = a + 20 ;
printf(“%f\n”,b);
}
说明:一个实型变量只能保证的有效数字是7位有 效数字,后面的数字是无意义的,并不准确地表 示该数。应当避免将一个很大的数和一个很小的 数直接相加或相减,否则就会“丢失”小的数
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); /* 输出鸡的个数和兔的个数 */ }
1110
SO
RS
.
>
N
^
n
~
1111
SI
US
/
?
O
_
o
DEL
2.2 整型数据的运算与分析
2.2.1 整型数据运算程序举例和分析
例题 2.1
鸡兔同笼: 在一个笼子里同时养着一些鸡和兔子
,你想了解有多少只鸡和多少只兔,主人对你说: 我只告诉你鸡和兔的总头数是16,总脚数是40, 你能不能自己计算有多少只鸡和多少只兔?
解题思路 设:x--鸡数量 y--兔数量,
h--总头数 f--总脚数
有方程式: x+y=h (1)
2x+4y=f (2)
求x和y的公式:(2)式-2x (1)式: 2y = f – 2h
f 2h
y=
2
2.2 整型数据的运算与分析
编写程序
#include <stdio.h> void main() { int h,f,x,y; /* 定义整型变量h,f,x,y */
个“二进制位”,是存储信息的最小单位。它的值
是“1”或“0”。
字节:又称“拜特”(byte)。一般将8个“二进制
位”组织成一组,称为“字节”。
地址:计算机的存储器包含许多存储单元,操作
系统把所有存储单元以字节为单位编号 。
2.1 数据在计算机中是怎样存储的
2.1.3 不同类型数据的存储方式
1. 整数的存储方式
}
”,不属于致命性错误,可以将r和m改定
义为double型
(3)可以在定义变量时同时赋初值
int d=32450,p=3250,double r=0.008
(4)运行结果:month=201.983404, total=655436.127930
C 数据类型
基本类型
整型 数值类型
浮点型 字符类型char
2.4 字符型数据的运算
3.字符数据与整型数据在一定条件下可以通用 • 一个字符常量存放到一个字符变量中,实际上并
不是把该字符的字型放到内存中去,而是将该字 符的相应的ASCII代码放到存储单元中。这样使字 符型数据和整型数据之间可以通用。
注意: 一个字符数
据既可以以 字符形式输 出,也可以 以整数形式 输出。
例2.5 向字符变量赋以整数。
• 运行结果:
#include <stdio.h>
ab
void main()
97 98
{char c1,c2;
c1=97;
c2=98;
printf(“%c %c\n”,c1,c2);
printf(“%d %d\n”,c1,c2);
}
• 说明:在第3和第4行中,将整数97和98分别赋 给c1和c2,它的作用相当于以下两个赋值语句: c1=′a′;c2=′b′; 因为’a’和’b’的ASCII码为97和98
}
写字母的ASCII码大32。
C语言允许字符数据与整
数直接进行算术运算。
2.5 符号常量
2.5.1 为什么要用符号常量
例题 2.7
已知圆的半径为r,求圆周长c,圆面积s,圆球体积v。
解题思路
圆周长
圆面积
圆球体积
c=2 r
s= r 2
V= 4 r 3
3
有了以上公式就可以进行计算了。
2.5 符号常量
说明: 1、运行时显示:124
2、程序改进:printf("%d,%d\n",x,y);
3、再改进:printf("cock=%d,rabbit=%d\n",x,y);
2.3 实型数据的运算与分析
2.3.1实型数据的运算举例
例题 2.2
分期付款的计算。张先生为购房,向银行贷款, 贷款额为324500元,每月准备还3245元,月利率 为0.8%,求需要多少个月才能还清。