数据描述与基本操作
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第二章 数据描述与基本操作
教学目的:程序设计是对数据进行不同的操作来解决实际问题的,通过该章的学习,使学生
掌握程序中所用的数据类型有哪些?对这些数据的操作有哪些?各种操作对不同的数据类
型运算后的结果是什么?为编程序中用到常量、变量、函数、表达式时打下一个好的基础,
能用表达式表示要解决的问题。
重点与难点:变量定义,各种运算符的操作结果,输入与输出语句的合理使用,各种表达式
值的判断,用表达式处理具体问题。
数据与操作是构成程序的两个要素。程序中所用的数据和对数据的操作是编程序的主要
内容,掌握了数据和对数据的基本操作,是编程序的基础,特别是求表达式的值,对程序执
行结果和程序流程起着决定的作用。
2.1数据类型
数据是程序的必要组成部分,也是程序处理的对象。程序中使用“数据类型”的概念,
主要是数据的存储形式和数据所参加的运算不同,程序中所用到的数据和变量都要归属于某
一类型。
C 语言中数据类型介绍:
⒈基本类型(整型、实型、字符型)
⒉构造类型(数组、结构体、共用体、文件)
⒊指针类型
⒋空类型
2.1.1数值的定点表示与浮点表示形式
浮点数:
看π的不同形式
3.14159×100 3.14159e0
0.314159×101 0.314159e+1
31.4159×10-1 31.4159e-1
同一个 π可用不同的形式表示,主要是小数点的位置在变化,
即一个实数可分“尾数和阶码”两部分来表示,称为浮点数。即 是实数在内存中的存储形式。
12、 –20,10 称为定点数,在计算机中的存储形式按字节用二进制形式存储。
左图为10的16位存储形式
2.1.2字符型数据的表示和存储形式
如: 'A','9' 为字符型数据,在内存中以ASCII 码代码存放(字符的ASCII 代码可查阅
附录I ),例'a'的ASCII 码为97,则存储形式为: 与存放整数97一样,即字符型的数据在ASCII 码
允许在范围内与整型数相同。以下程序运行结果可说明问题:
main()
{char ch;
ch=’a’;
printf(“%d ,%c”,ch,ch);
}
输出结果为:97,a
即字符型数据和整型数在一定范围内是通用的。
2.1.3数据的存储空间长度与取值范围
C语言中不同的数据类型分配不同的长度(以字节为单位1字节存8位二进制)的存储空间。分配如下:
1字节字符型 (char) 2字节整型 (int)
4字节长整型 (long) 单精度型(float )
8字节双精度型(double)
由于存储字节不同,所以取值范围就不同:
int –32768~32767
long –2147483648~2147483647
float和double取值范围更大。
2.1.4带符号的数据类型与无符号的数据类型
计算机内存中的正负数在存储时是通过最高位来表示的,如:(以8 位为例 )
01101011 表示正数 107
10100111 表示负数(补码)-89
即负数在内存中以负数的补码形式存放。正数的补码就是该数本身化为二进制数。
如何求负数的补码:
先求该数的绝对值,化为二进制数;按位取反(1变0,0变1);再加1;如|-89|=89 89=( 01011001 )2取反后等于10100110加1 后变为10100111为补码。
有符号整型数的取值范围:
两字节十六位二进制数
最大数:0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1=32767
最小数:1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0= -32768(为负数的存储形式)大家计算一下为什么是-32768?
无符号整型数的取值范围:
对于无符号数来说,高位不再来表示整数的符号位,16位的二进制数全部用来存放整数,因此无符号数不会是负数。这时:
最大数:1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1=65535(不再代表-1,而是65535)
最小数:0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0=0
程序举例:
main() main()
{char ch; {int a=-1;
ch=0362;/*八进制数*/ printf("%d,%u\n",a,a) ;
printf("%d \n",ch);} }
输出结果为:-14 -1,65535
2.2常量和变量
不同的数据类型既可以以常量形式出现,也可以以变量形式出现。常量在程序执行期间不发生变化、具有固定值。变量则其值可发生变化,其实变量对应的是内存中的某一存储单元。
2.2.1直接常量和符号常量
直接常量就是程序中直接书写的常数:
12 整型常量 12.0,13.56 实型常量 's','D','A' 字符型常量
符号常量在程序中用名字代表的常量,需要由编译预处理和说明语句定义。例:
#define PI 3.1415926
#define M 100
PI与M就是符号常量。
const float N 356 ;说明语句 N是符号常量。
在程序的其它语句中用到PI ,M, N它的值就是对应的常数
2.2.2直接常量的书写格式
㈠整型常数(十进制、八进制、十六进制)
0开头八进制 0x 0X 开头十六进制
0254 089 0x1FF 20af
12 与12L 加L为长整型,大小相同,但存储所占空间不同
㈡实型常量 (小数形式和指数形式)
34.5 .345 1e2 1.5e-3 e-3 1e-0.5
㈢字符常量(用单引号括起来的字符)
'A' , 'W' , '\\'代表字符\ , '\'不正确
㈣转义字符(以\开头后跟一个字符代表控制字符)
'\n' 表示回车换行 '\t' 表示跳格
'\b' 表示退格 '\ddd' 表示3位8进制数所对应的字符
'\xhh'表示2位16进制数所对应的字符
㈤字符串常量(用双引号括起来的多个字符)
"hello","12345","A"与'A'值相同,存储形式不同,前者2字节,后1字节。
2.2.3变量和对变量的赋值
数据被存储在一定的存储空间中,数据的加工就是在它们所在的存储区与运算器之间传送过程中实现的。在高级语言程序中,数据连同存储空间被抽象为变量。变量有名字标识,即变量名,用字母等来表示,它代表某个存储空和所存储的数据,存储空间的数据就是变量的值。
赋值运算就是从运算器向变量所对应的存储单元传送数据。用“=”表示赋值操作。
C语言中的“=”符号称为赋值运算,由赋值运算符组成的表达式称为赋值表达式,形式如下:
变量名=赋值表达式
赋值号的左边必须是变量名,即代表一个存储单元或是代表某个存储单元的表达式;赋值号右边必须是C语言中合法的表达式。它的作用是把右边表达式的值计算出来后赋给左边的变量,即放入存储单元。
若定义了int a,b则a=10 b=a都是合法的赋值表达式。若一个变量经过了多次赋值,则最后一次才是它的值。
赋值语句的注意事项:
1.和数学中的“等于号”不是等同关系。
2.赋值运算的执行方向同右向左,执行为先计算再赋值。
3.赋值号连接的式子称为赋值表达式,如:a=3+5,赋值表达式的值等于赋值后左边变量中的
值。可写成连续赋值表达式:
b=a=3=5 d=c=b=a=3+5
4.n=n+1数学式子无意义,但在程序中则有用的,是把 n的值增加1再放到n中,程序中可用
来计数。
2.2.4变量的声明