C语言程序设计课件第2章

更新时间:2023-04-20 20:26:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

C语言程序设计ppt课件 北京邮电大学出版社 朱立华 王立柱编

C语言程序设计

1

2011-5-12

C语言程序设计ppt课件 北京邮电大学出版社 朱立华 王立柱编

第二章 基本数据类型主讲: 主讲: 计算机学院 朱立华2 2011-5-12

C语言程序设计ppt课件 北京邮电大学出版社 朱立华 王立柱编

内容提要C语言的数据类型 语言的数据类型——存储与处理的整体体现 语言的数据类型 存储与处理的整体体现 常量与变量的概念、 常量与变量的概念、区别 基本类型之整型、字符型、实型: 基本类型之整型、字符型、实型: 常量在源程序中的表示形式及取值范围 常量在内存中的存储格式 变量的定义及值的获取 对该类型提供的基本操作

C 源程序的基本结构及程序中的 种基本符号 源程序的基本结构及程序中的6种基本符号 输入/输出控制 输入 输出控制20112011-5-12 3

C语言程序设计ppt课件 北京邮电大学出版社 朱立华 王立柱编

C语言的数据类型计算机处理存储的数据,存储是为了处理,处理依赖 计算机处理存储的数据,存储是为了处理, 处理存储的数据 于存储 数据存储两要素:存储空间的大小, 存储两要素 数据存储两要素:存储空间的大小,数据的存储格式 数据的处理 处理主要是指对数据可以实施的最基本操作 数据的处理主要是指对数据可以实施的最基本操作 语言通过数据类型 数据类型体现存储与处理的统一 C语言通过数据类型体现存储与处理的统一 因此, 语言的每一种数据类型,掌握以下几方面: 因此,C语言的每一种数据类型,掌握以下几方面: 该类型数据占多少字节 该类型数据占多少字节 该类型数据在内存中的存储格式 该类型数据在内存中的存储格式 对该类型的数据提供哪些基本操作 对该类型的数据提供哪些基本操作

该类型数据的取值范围 该类型数据的取值范围

20112011-5-12

C语言程序设计ppt课件 北京邮电大学出版社 朱立华 王立柱编

C语言的数据类型基本类型 基本整型( ) 基本整型(int) 长类型( 长类型(long) ) 整型 短类型( 短类型(short) ) 无符号整型( 无符号整型(unsigned) ) 单精度实型( 单精度实型(float) ) 实型(浮点型) 实型(浮点型) 双精度实型( 双精度实型(double) ) 字符型( 字符型(char) ) 枚举型 数组类型 结构体类型 共同体类型

数 据 类 型

指针类型 构造类型

空类型( 空类型(void) )20112011-5-12 5

C语言程序设计ppt课件 北京邮电大学出版社 朱立华 王立柱编

常量与变量无论何种类型的数据,在程序运行过程中,其存储空 无论何种类型的数据,在程序运行过程中, 间中的内容有两种状态:可以变化和不可以变化, 间中的内容有两种状态:可以变化和不可以变化,对 应于变量 常量。 变量与 应于变量与常量。 变量:存储空间中的数据可以被修改 可以被修改, 变量:存储空间中的数据可以被修改,这个空间就称 变量空间,简称变量 变量。 为变量空间,简称变量。 常量:存储空间中的数据不能被修改 不能被修改, 常量:存储空间

中的数据不能被修改,这个空间就称 常量空间,简称常量 常量( 字面常量和符号常量两种 两种) 为常量空间,简称常量(有字面常量和符号常量两种) 无论是变量还是常量,都需要一个名称 名称, 无论是变量还是常量,都需要一个名称,在程序中代 表相应的存储空间中的内容 空间中的内容。 表相应的存储空间中的内容。 变量名需要定义,而字面常量名无需定义, 变量名需要定义,而字面常量名无需定义,直接用字 面常量值(有时后面再加特定后缀)表示。 面常量值(有时后面再加特定后缀)表示。20112011-5-12 6

C语言程序设计ppt课件 北京邮电大学出版社 朱立华 王立柱编

变量名必须是用户 自定义标识符

常量与变量

]中的内容为可 [ ]中的内容为可 变量名的定义: 变量名的定义: 选项, 选项,可能没有 数据类型名 变量名1 变量名2 变量名3 变量名1 [ , 变量名2 , 变量名3 , … , 变量名n ] ; 变量名n 同一类型定 例1:int a; 必须以分号结束 义多个变量 定义3个整型变量, 定义3个整型变量, 例2:int x,y,z; 定义一个整型变 时,变量间 变量名为a 量,变量名为a 彼此逗号隔开 以逗号隔开

在变量名定义之后, 在变量名定义之后,系统根据其类型为变量分配了一 随机数, 定大小的内存空间,该内存空间中是随机数 定大小的内存空间,该内存空间中是随机数,要使变 量有确切值,可以通过下列3种方式之一: 量有确切值,可以通过下列3种方式之一: 赋值:先定义变量,再用赋值号“=”进行赋值 赋值:先定义变量,再用赋值号“ 初始化:在定义变量的同时指定初值 初始化: 读入:先定义变量,再从键盘或文件提供数据 读入:先定义变量,20112011-5-12 7

C语言程序设计ppt课件 北京邮电大学出版社 朱立华 王立柱编

int m; m=345;

定义 变量 m

常量与变量345 ? 345 赋值 345 52388L 3.1416 3.1416F ‘A’ A 52388 3.1416 3.1416

52388 n long n=52388L; x double x=3.1416;初始化 3.1416 初始化 y float y=3.1416F; 3.1416 初始化 char ch='A'; A

总结: 总结:

ch 初始化

以上例子中,白字代表变量名,黄字代表常量名,绿框代表 以上例子中,白字代表变量名,黄字代表常量名,

变量空间, 变量空间,红框代表常量空间 在程序中变量以变量名的形式出现,代表的是变量空间中的 在程序中变量以变量名的形式出现,代表的是变量空间中的 变量名的形式出现 定义; 内容,变量名需要定义 字面常量以(字面)常量名的形式 内容,变量名需要定义;字面常量以(字面)常量名的形式 出现,代表的是字面常量空间中的内容 字面常量名无需定 字面常量空间中的内容, 出现,代表的是字面常量空间中的内容,字面常量名无需定 其真正代表的常量是不带后缀等标识的。 义,其真正代表的常

量是不带后缀等标识的。 8 20112011-5-12

C语言程序设计ppt课件 北京邮电大学出版社 朱立华 王立柱编

常量与变量程序2.1 程序2.1 常量空间与变量空间操作示例#include<stdio.h> 通过本程序,介绍下面3方面知识: 通过本程序,介绍下面3方面知识: int main( ) { (1)C语言源程序的结构 int m,n; 语言源程序中的6 (2)C语言源程序中的6种符号 n=125; m=n; 输出函数printf printf的使用 (3)输出函数printf的使用 printf("The result is:\n"); printf("%d,%d,%d\n",n,m,125); printf("%d,%d,%d\n",sizeof(n),sizeof(m),sizeof(125)); printf("%x,%x \n",&n,&m); return 0; } 运行结果> <运行结果> The result is: 125,125,125 4,4,4 9 20112011-5-12 动 演示 过 12ff78,12ff7 态 程

C语言程序设计ppt课件 北京邮电大学出版社 朱立华 王立柱编

C语言源程序的结构C语言的源程序可以由一个或多个文件组成 语言的源程序可以由一个或多个文件组成 文件 每个文件可由一个或多个函数组成,函数是组成 是组成C 每个文件可由一个或多个函数组成,函数是组成C程 序的基本单位 序的基本单位 程序必须有且只有一个main函数 有且只有一个main函数, 程序必须有且只有一个main函数,是系统调用应用 程序的起点 函数由函数头和函数体两部分组成 函数由函数头和函数体两部分组成 函数头 函数头3要素: 函数名(形参表) 函数头3要素:返回类型 函数名(形参表) 函数体: 一对大括号括起 内含0 括起, 函数体:由一对大括号括起,内含0或多条语句 语句必须由分号结束 源程序中可以有注释(不参加编译) /*… //… 源程序中可以有注释(不参加编译):/*… */或//…20112011-5-12 10

C语言程序设计ppt课件 北京邮电大学出版社 朱立华 王立柱编

示 #include<stdio.h> int main( ) 函数头 { //以左大括号表示主函数体开始 以左大括号表示主函数体开始 函数 函数 表 int m,n; n=125; m=n; printf("The result is:\n"); 示 printf("%d,%d,%d\n",n,m,125); printf("%d,%d,%d\n",sizeof(n),sizeof(m),sizeof(125)); printf("%x,%x \n",&n,&m); 大 return 0; 以 数 始 } 以左大括号表示主函数体开始大 数 以 表20112011-5-12 11

printf函数 函数

函 数 体

C语言程序设计ppt课件 北京邮电大学出版社 朱立华 王立柱编

C语言源程序中的6种符号 语言源程序中的6(1)关键字(Keyword): C语言中预先规定的具有固定功能和 (1)关键字(Keyword) 关键字 单词或单词的缩写, 个都有特定意义, 意义的单词或单词的缩写 32个都有特定意义 意义的单词或单词的缩写,32个都有特定意义,用法固定 (2)标识符(identifier):以字母或下划线开头,后面跟字 (2)标识符(identifier) 字母或下划线开头,后面跟字 标识符 开头 的任意序列。 数字、下划线的任意序列 标识符又分为系统预定义标识 母、数字、下划线的任意序列。标识符又分为系统预定义标识 用户自定义标识符两种 标识符中的大小写字母有区别 大小写字母有区别) 符和用户自定义标识符两种。(标识符中的大小写字母有区别) (3)运算符 ope

rator) 运算符( 语言提供了34个运算符,分为15 34个运算符 15个 (3)运算符(operator):C语言提供了34个运算符,分为15个 不可以用关键字, 不可以用关键字,最好也不 不同的优先级, 不同的优先级,完成不同的运算功能 用系统预定义标识符 (4)分隔符 separator) 相邻的关键字 分隔符( 的关键字、 (4)分隔符(separator):相邻的关键字、标识符之间必须使 用分隔符,不同场合选用:空格、回车/换行、逗号、 用分隔符,不同场合选用:空格、回车/换行、逗号、分号 (5)其它符号 有一些有特定含义的其它符号:{}、//、 其它符号: (5)其它符号:有一些有特定含义的其它符号:{}、//、/* */ (6)数据(data) (6)数据(data):各种类型的字面值常量 数据20112011-5-12 12

C语言程序设计ppt课件 北京邮电大学出版社 朱立华 王立柱编

/*程序2.1 常量空间与变量空间操作示例, /*程序2.1 常量空间与变量空间操作示例, 程序 这是一个单文件的程序,文件名: 这是一个单文件的程序,文件名:li2_1.c */空格,用于相邻关键字、 空格,用于相邻关键字、标识 用户自定义标识符 #include<stdio.h> 符之间, 符之间,不可用其他分隔符时

int main( ) 逗号, 逗号,分隔一条语句 { //以左大括号表示主函数体开始 以左大括号表示主函数体开始 分号, 分号,用于语句结束 中的并列成分 关键字 int m,n; 后,分隔相邻语句 n=125; 系统预定义 常 m=n; 标识符 量 printf("The result is:\n"); 运算符 printf("%d,%d,%d\n",n,m,125); printf("%d,%d,%d\n",sizeof(n),sizeof(m),sizeof(125)); printf("%x,%x \n",&n,&m); 其他符号 return 0; } //以左大括号表示主函数体开始 以左大括号表示主函数体开始

20112011-5-12

C语言程序设计ppt课件 北京邮电大学出版社 朱立华 王立柱编

输出函数printf的使用 输出函数printf的使用C程序通过格式输出函数 程序通过格式输出函数printf输出任何类型的数据 程序通过格式输出函数 输出任何类型的数据 printf函数的调用形式: 函数的调用形式 函数的调用形式: printf(格式控制字符串 [,输出参数 ,输出参数 格式控制字符串 ,输出参数1, 该函数原型在stdio.h头文件中, 头文件中, 该函数原型在 头文件中 因此要用#include<stdio.h>文件 因此要用 文件 2,……,输出参数 ) ; , ,输出参数n] 没有格式转换说明符, 没有格式转换说明符,原

包含命令 输出结果: 输出结果: The result is: 样输出所有字符 有3个格式转换说明符依次 用双引号括起来的字符串 ,其中 printf("The result is:\n"); 输出参数可以是常量 3个参数, 常量、 输出参数可以是常量、个参数,按十 控制后面的3变量、 控制后面的 变量、表达 普通字符原样输出 原样输出, 的普通字符原样输出,格式转换说 输出结果: 输出结果: 125,125,125 取决于格式控制串中格式 进制整数

格式输出, 进制整数格式输出, printf("%d,%d,%d\n",n,m,125); ,个数取决于格式控制串中格式 输出结果: 输出结果: 4,4,4 明符以 开头后跟一个字母, 后跟一个字母 明符以%开头后跟一个字母,控制式 个数取决于格式控制串中 3个普 转换说明符的个数, 通字符原样输出 不同类型数据特定的输出格式 转换说明符的个数,按从左到右的 printf("%d,%d,%d\n",sizeof(n),sizeof(m),sizeof(125)); 顺序一一对应格式 输出结果: 输出结果: 12ff78,12ff7c printf("%x,%x\n",&n,&m); 有两个格式转换说明符依次 printf(“%x,%x,%x\n”,&n,&m,&125); X 控制后面的2个参数, 控制后面的2个参数,按十六 进制整数格式输出, 进制整数格式输出,两个普 小结: 小结:每一种类型的数据都有特定的格式转换说明符控制其输 获取变量的起始地址值 对常量不 通字符原样输出 出格式,具体请参考附录I, 出格式,具体请参考附录 ,在以后的使用中逐步熟悉 能取地址14

20112011-5-12

C语言程序设计ppt课件 北京邮电大学出版社 朱立华 王立柱编

整型的种类2字节 字节

2或4字节 或 字节

整型: 语言中最常用最基本的类型。 整型:C语言中最常用最基本的类型。 根据整型数据所占内存空间大小分为: 内存空间大小分为 根据整型数据所占内存空间大小分为: short 、 int 、long 根据二进制数最高位的意义分为:signed、unsigned 根据二进制数最高位的意义分为:signed、 二进制数最高位的意义分为 综合考虑两方面因素,共有6种整型,如下表所示: 综合考虑两方面因素,共有6种整型,如下表所示:数据类型名称 最高位0表示正数, 表示负数 最高位 表示正数,1表示负数 表示正数 类型简称 最高位0或 表示数值本身 表示数值本身, 占字 取值范围 类型全称 最高位 或1表示数值本身,不表示正负号 节数 int short long unsigned unsigned long15

4字节 字节

有符号基本整型 signed int 有符号短整型 有符号长整型 无符号短整型 无符号长整型20112011-5-12

2或 ?取决于编译器 2或4 ?取决于编译器 2 41616-216-1~216-1-1 3232-232-1~232-1-1

signed short int signed long int

无符号基本整型 unsigned int unsigned long int

2或4 ?取决于编译器 或 取决于编译器 0~216-1 0~232-1 4

unsigned short int unsigned short 2

C语言程序设计ppt课件 北京邮电大学出版社 朱立华 王立柱编

整型字面值常量的表示在C语言源程序中,可以用十进制、八进制、十六进制 语言源程序中,可以用十进制、八进制、 十进制 这三种制式的数来表示各种类型的整型字面值常量 这三种制式的数来表示各种类型的整型字面值常量 形式: 形式: 该进制数字(字母) 符号位 制式前缀 该进制数字(字母)序列 后缀 十进制整数:12、 91、 12L 93U 123Lu 902LU Lu、 例:十进制整数:12、-91、-12L、93U、123Lu、902LU正号+可以缺省 十进制数无前缀

: 长整型后缀L(或l) 正号 可以缺省,71 十进制数字: 016LU、 72lu 八进制整数: 012、-071、 十进制数字、 长整型后缀 lu、 : 12、 16LU 八进制整数可以缺省,负 、-016L、072U、 0~9 LU、072lu、 16L、072U 或 号-必须要有八进制数有前缀 :0x1A 必须要有八进制数有前缀0 无符号数后缀U(或 八进制数字: 1AU 0X2f 八进制数字 0~7 十六进制整数: 0XA2 A2、 0X9C3 9C3、 0X16 无符号数后缀 16L 2fLu 十六进制整数: 0XA2、-0X9C3、-0X16L、0x1AU、0X2fLu 或u) 十六进制数字加字母: 十六进制数字加字母: 十六进制数有前缀0x(0X) 十六进制数有前缀 进制数转为十进制数的方法: N进制数转为十进制数的方法:每一位的位值乘以位权再求和 0~9、A~F(或a~f) 、 或 十进制数转为N进制数的方法:除以N取余, 十进制数转为N进制数的方法:除以N取余,本次商作为下一次被 除数,再除以N取余,直到被除数为0 除数,再除以N取余,直到被除数为0,所求余数按相反顺序输出 8 58 例:072=7*8+2=58 2 所以: 所以:58=072 7 8 7 020112011-5-12 16

C语言程序设计ppt课件 北京邮电大学出版社 朱立华 王立柱编

整型数据在内存中的存储格式刚才讲到的三种进制表示整型值是在C源程序中的, 刚才讲到的三种进制表示整型值是在C源程序中的,无论何种制 三种进制表示整型值是在 中的 式经编译后都以二进制数的形式存在于内存中 整数的二进制数有3种编码方式:原码、反码、补码, 整数的二进制数有3种编码方式:原码、反码、补码,为了将减 法统一到加法运算中,一般用补码形式。 补码形式 法统一到加法运算中,一般用补码形式。 正数:原码、反码、补码形式统一,最高位为0表示是正数, 正数:原码、反码、补码形式统一,最高位为0表示是正数,余 下的二进制码是其等效二进制表示 0的原码有两种形式: 的原码有两种形式: 的原码有两种形式 short型常量97转换为二进制数为 1100001,则其原码 型常量97转换为二进制数为: 原码、 例:short型常量97转换为二进制数为:1100001,则其原码、反 0的反码有两种形式: 的反码有两种形式: 的反码有两种形式 00000000 00000000 补码为10000000 00000000 码、补码为: 00000000 01100001 00000000 0000000011111111 11111111 0的补码只有一种形式: 的补码只有一种形式: 的补码只有一种形式 负数的原码:最高位为1 其余位与其相反数相同 负数的原码:最高位为1,其余位与其相反数相同 00000000 00000000

负数的反码:最高位为1 其余位是其原码各位取反 负数的反码:最高位为1,其余位是其原码各位取反 负数的补码:最高位为1 其余位是其反码最低位加 反码最低位加1 负数的补码:最高位为1,其余位是其反码最低位加1 -97的原码 97的补码 97的反码 的补码

的反码 97的原码20112011-5-12

11111111 01100001 10000000 10011110117

C语言程序设计ppt课件 北京邮电大学出版社 朱立华 王立柱编

整型数据在内存中的存储格式同一个二进制序列,当表示的整数是有符号数时,最高位代表正 同一个二进制序列,当表示的整数是有符号数时,最高位代表正 有符号数时 负性质,而不作为值计算;当表示的整数是无符号数 无符号数时 负性质,而不作为值计算;当表示的整数是无符号数时,最高位 就是数值本身 这时没有负数。 数值本身, 就是数值本身,这时没有负数。 例:10000000 00000000 当表示无符号数时,此位代表数值本身, 无符号数时 当表示无符号数时,此位代表数值本身,即215=32768 当表示有符号数时,此位代表负数。 绝对值为后面 当表示有符号数时,此位代表负数。其绝对值为后面 有符号数时 负数 各位取反再加1 得到: 各位取反再加1,得到:10000000 00000000,即 , 215=32768,因此该数的值为:-32768 ,因此该数的值为: 不同整数类型的数据范围由数据所占的字节数以及是否为有符号 不同整数类型的数据范围由数据所占的字节数以及是否为有符号 数据范围 以及 来决定。 数来决定。 的范围: 例:short 的范围:-215~215-1, , 1000000000000000~0111111111111111 unsigned short 的范围:0~216-1, 的范围: , 0000000000000000~111111111111111120112011-5-12 18

C语言程序设计ppt课件 北京邮电大学出版社 朱立华 王立柱编

整型变量的定义及值的获取变量定义实质上是为数据创建变量空间, 变量定义实质上是为数据创建变量空间,需要指明类型和空间的 实质上是为数据创建变量空间 名称即变量名。 语言通过定义语句来完成这项工作。 定义语句来完成这项工作 名称即变量名。C语言通过定义语句来完成这项工作。 例:int a,b; short c; unsigned long x,y; 变量值的获取仍是通过三种方式之一:初始化、赋值、读入。 使用空白符 :初始化、 变量值的获取仍是通过三种方式之一空白符(空格、Tab、回车分隔 前 使用空白符(空格、Tab、回车分隔 该函数原型定义在头文件 赋值、读入。 数据,输入: 回车>, 回车 两种已介绍过, 两种已介绍过,读入方式可以使变量在运行时根据用户的需要获 stdio.h中,因此要作文件包 34<回车 ,则a 中 数据,输入:12 的值分别为12和 建议使用 和b的值分别为 的值分别为 得相应的值,比较灵活。 得相应的值,比较灵活。 含:#include<stdio.h> 和34,建议使用

这种形式输入 按指定宽度输入数据,输入: 指定宽度输入数据,输入: 输入数据 scanf的调用:scanf(格式控制字符串,地址1[回车 ,则a、);c的 的调用: 地址2, 的调用 (格式控制字符串,地址1 回车>, …] b、 的 ,地址2,… 123456789<回车 2, 、 、 指定分隔符输入数据 输入: 输入数据, 按指定分

隔符输入数据,输入: 值分别为12、345、6789 值分别为 例:scanf(“%d%d”,&a,&b); 12,3456,78<回车 、 则a、b、c的 回车>, 、 、 的 回车 , 、 究竟有几个地址取决于格式控制 格式控制字符串包含格式转换说明符和 值分别为 、3456、78 格式控制字符串包含格式转换说明符和 值分别为12、 格式转换说明符 、 scanf("%2d%3d%4d",&a,&b,&c); 几个格式转换说明符,依 串中有几个格式转换说明符 串中有几个格式转换说明符, 输入分隔符 ,格式转换说明符的意思和 用法与printf函数中基本一致,输入分 函数中基本一致, 用法与 函数中基本一致 从左到右顺序一 一对应控制 scanf("%d,%d,%d",&a,&b,&c); 空白 隔符需要原样输入,建议用默认的空白 隔符需要原样输入,建议用默认的 原样输入 来分隔, 符来分隔,减少差错 需熟悉的格式转换说明符:%d(%i)、%c、%f(%e)、%lf、 需熟悉的格式转换说明符:%d(%i)、%c、%f(%e)、%lf、%s20112011-5-12 19

本文来源:https://www.bwwdw.com/article/giiq.html

Top