清华大学 C语言 谭浩强 第2章
合集下载
C语言(谭浩强)第2章数据描述

定点表示和浮点表示,是C语言基本数据类型 的重要特征。为了说明什么是“定点”,什么是 “浮点”,先看π值的几种表示形式: 日常的表示法 C语言中的表示形式 3.14159×100 3.14159e0 0.314159×101 0. 314159e+1 0.0314159×102 0.0314159e+2 31.4159×10-1 31.4159e-1 3141.59×10-3 3141.59e-3
• • • •
转义字符表
转义字符形式 \n \t \v \b \r \f \a \\ \? \“ \’ \ddd xhh 换行 水平制表 垂直制表 退格 回车 走纸换页 报警(如铃声) 反斜杠 问号 双撇号 单撇号 1~3位八进制常数 1~2位十六进制常数 意 义
例2.5 /* 文件名:ex020501.c */ /*打印人民币符号″¥″*/ #include <stdio.h> int main(void) { printf(″Y\b=\n″); return 0; }
/* 注意格式码 */ /* 注意格式码 */
例2.4 /* 文件名:ex020401.c */ #include <stdio.h> int main(void) { char c; c = 0362; printf (″%d\n″, c); return 0; } 运行结果: -14
2. 字符常量
下面不是合法的整型常量:
09876——(非十进制数,又非八进制数,因为有数 字8和9) 20fa——(非十进制数,又非十六进制数,因为不 是以0x开头) 0x10fg——(出现了非法字符)
2. 整数常量类型的确定
在C语言中整数可以进一步分为short、int、 long和long logn等类型。那么,对于一个常数如 何分辨其类型呢?一般说来,有以下原则: 1)默认原则:在没有任何特别标志的情况下,可 以按照常数所在的范围,决定其类型。例如,在 16位的机器中,当一个常整数的值在十进制32768~32767(八进制数0~0177777、十六制数 0x0~0xFFFF),则被看作一个short int或int型 整数。超出上述范围的整常数,则被看作长整数 (32位)表示。例如,234、32766、0177776、 0xFFFE等被看作是int型,而-32769、32768、 0200000、0x10000等被看作是long型。
• • • •
转义字符表
转义字符形式 \n \t \v \b \r \f \a \\ \? \“ \’ \ddd xhh 换行 水平制表 垂直制表 退格 回车 走纸换页 报警(如铃声) 反斜杠 问号 双撇号 单撇号 1~3位八进制常数 1~2位十六进制常数 意 义
例2.5 /* 文件名:ex020501.c */ /*打印人民币符号″¥″*/ #include <stdio.h> int main(void) { printf(″Y\b=\n″); return 0; }
/* 注意格式码 */ /* 注意格式码 */
例2.4 /* 文件名:ex020401.c */ #include <stdio.h> int main(void) { char c; c = 0362; printf (″%d\n″, c); return 0; } 运行结果: -14
2. 字符常量
下面不是合法的整型常量:
09876——(非十进制数,又非八进制数,因为有数 字8和9) 20fa——(非十进制数,又非十六进制数,因为不 是以0x开头) 0x10fg——(出现了非法字符)
2. 整数常量类型的确定
在C语言中整数可以进一步分为short、int、 long和long logn等类型。那么,对于一个常数如 何分辨其类型呢?一般说来,有以下原则: 1)默认原则:在没有任何特别标志的情况下,可 以按照常数所在的范围,决定其类型。例如,在 16位的机器中,当一个常整数的值在十进制32768~32767(八进制数0~0177777、十六制数 0x0~0xFFFF),则被看作一个short int或int型 整数。超出上述范围的整常数,则被看作长整数 (32位)表示。例如,234、32766、0177776、 0xFFFE等被看作是int型,而-32769、32768、 0200000、0x10000等被看作是long型。
C语言第2章(谭浩强)

§ 2.4
怎样表示一个算法
表示方法: 1、自然语言 2、传统流程图 3、N—S流程图 4、结构化流程图 5、伪代码 、PAD图
10
2.4.1 用自然语言表示算法
用自然语言表示通俗易懂,但容易出现 “歧异性”。
2.4.2 用传统流程图表示算法
直观形象,易于理解。成为世界各国程序 工作者普遍采用。 下面给出传统流程图的说明:
2
§2.1
算法的概念
做任何事情都有一定的步骤,这些步骤都 是有一定的顺序。如:起床上学,用电脑画画, 弹奏乐曲。不要以为只有“计算”的问题才有 算法的。
什么叫做算法?广义:为解决一个问题而采 用的方法和步骤就称为“算法”。
例如:求 1+2+3+4+……+100 可先算1+2、再加3、再加4……直到加上100; 也可采用 100+(1+99)+(2+98)+……+ (49+51)+50 3 本书所关心的算法只限于计算机算法。
5
例2.2 有50个学生,将成绩在80分以上的学 号和成绩打印出来。 说明:n:学号,ni:第i个学生学号,g:成绩, gi:第i个学生成绩 步骤如下: S1:1=>i S2:若gi>80,则输出ni和 gi ,否则不输出。 S3:i+1=>i S4:若i小于等于50,则返回 S2继续执行; 否则算法结束。
著名计算机科学家沃思提出一个公式: 数据结构+算法=程序 实际上,一个程序还应当采用结构化程序设计 方法进行程序设计,并且用某一种计算机语言表示。 因此,可以这样表示。 程序=算法+数据结构+程序设计方法+语言 以上四个方面是一名程序设计员所应具备的知 识。在这四个方面中,算法是灵魂,是解决“做什 么”和“怎么做”的问题。数据结构是加工对象, 语言是工具,编程需要采用合适的方法。
C语言程序设计(谭浩强版)第二章

奇妙的输出结果。并且,处理出错的方法
不应是中断程序的执行,而应是返回一个
表示错误或错误性质的值,以便在更高的
抽象层次上进行处理。
算法设计的原则
4.高效率与低存储量需求
通常,效率指的是算法执行时间; 存储量指的是算法执行过程中所需 的最大存储空间, 两者都与问题的规模有关。
算法设计的原则
算法的时间复杂度
第二章 程序的灵魂——算法
2.1 算法的概念 2.2 算法的简单举例
2.3 算法的特性 2.4 怎样表示一个算法 2.5 结构化程序设计方法
算法的概念
计算机应用: 提取数学模型—设计算法— 编程—测试—应用
程序设计=数据结构+算法
数据结构:对数据的描述 算法:对操作的描述 除此之外程序设计还包括:程序设计方法, 和程序设计语言
怎样表示一个算法
例4的伪代码表示法如下 开始 读入整数n 置sum的初值为0 置k的初值为1 执行下面的操作: 如果k为奇数,置item=1/k 如果k为偶数,置item=-1/k sum=sum+item 直到k>n 打印sum的值 结束
算法设计的原则
算法设计的原则
设计算法时,通常应考虑达到以下目标: 1.正确性 2.可读性 3.健壮性 4.高效率与低存储量需求
从算法中选取一种对于所研究的问题 来说是 基本操作 的原操作,以该基 本操作 在算法中重复执行的次数 作 为算法运行时间的衡量准则。
结构化程序设计方法
采用结构化算法写成的计算机程序是结构 化程序。要编写出结构化程序,经常采用 的方法是结构化程序设计方法。这种方法 的基本思路是: 把给定的问题按层次(纵方向)、分阶段 (横方向)分解为一系列易于编程解决的 小问题,然后对应着这些分解的小问题, 设计结构化的算法,最后采用语言将算法 描述出来。这样一种程序设计方法就是结 构化程序设计方法。
不应是中断程序的执行,而应是返回一个
表示错误或错误性质的值,以便在更高的
抽象层次上进行处理。
算法设计的原则
4.高效率与低存储量需求
通常,效率指的是算法执行时间; 存储量指的是算法执行过程中所需 的最大存储空间, 两者都与问题的规模有关。
算法设计的原则
算法的时间复杂度
第二章 程序的灵魂——算法
2.1 算法的概念 2.2 算法的简单举例
2.3 算法的特性 2.4 怎样表示一个算法 2.5 结构化程序设计方法
算法的概念
计算机应用: 提取数学模型—设计算法— 编程—测试—应用
程序设计=数据结构+算法
数据结构:对数据的描述 算法:对操作的描述 除此之外程序设计还包括:程序设计方法, 和程序设计语言
怎样表示一个算法
例4的伪代码表示法如下 开始 读入整数n 置sum的初值为0 置k的初值为1 执行下面的操作: 如果k为奇数,置item=1/k 如果k为偶数,置item=-1/k sum=sum+item 直到k>n 打印sum的值 结束
算法设计的原则
算法设计的原则
设计算法时,通常应考虑达到以下目标: 1.正确性 2.可读性 3.健壮性 4.高效率与低存储量需求
从算法中选取一种对于所研究的问题 来说是 基本操作 的原操作,以该基 本操作 在算法中重复执行的次数 作 为算法运行时间的衡量准则。
结构化程序设计方法
采用结构化算法写成的计算机程序是结构 化程序。要编写出结构化程序,经常采用 的方法是结构化程序设计方法。这种方法 的基本思路是: 把给定的问题按层次(纵方向)、分阶段 (横方向)分解为一系列易于编程解决的 小问题,然后对应着这些分解的小问题, 设计结构化的算法,最后采用语言将算法 描述出来。这样一种程序设计方法就是结 构化程序设计方法。
C 程序设计(谭浩强完整版)第二章解析

一般变量都是用匈牙利命名法命名的。 int nCount; char chChoice;
整型数据
整型常量:
常量是根据其表面形式来判定,整型量即是没有小数点的 整数,范围:-231~(231-1) ,有三种形式: 1)十进制(默认方式)
2)八进制 以0开头
43 1345 87654
043, 056, 011
1
0
0
0
0
0
1
非打印字符
有些ASCII的字符代表某些操作,不能打印出来, 如回车、退格等,可用两种方式表示这些字符。 1)用ASCII码的形式 2)用转义字符 char re=13; char re=‘\n’;(p15)
转义字符 \a \n \t \b \r \f \v
含 响铃
义
ASCII代码 7 10 9 8 13 12 8
不同类型的整型数据间 { unsigned short a;的赋值归根到底就是一 short int b= -1; 条:按存储单元中的存 储形式直接传送。
void main() a=b; cout<<"a="<<a<<endl; unsigned short a;
}
结果:65535
a 1111111111111111
3)十六进制 以0x开头 0xdf(举例说明)
0x12
0xa3
0x34
#include<iostream.h>
void main(void)
{ int int10,int8,int16; //定义3个整型变量 int10=10; int8=010; int16=0x10; //默认为十进制 //八进制 //十六进制 输出 int10=10 int8=8 int16=16
教材原教案(谭浩强C)第2章

执行时输出 66 i和j被指定为整型变量。但在第5和第6行中,将字符′A′和′B′分别赋给i和j,它的作用相当于以下两个赋值语句: i=65;j=66; 因为′A′和′B′的ASCII码为65和66。在程序的第5和第6行是把65和66直接存放到i和j的内存单元中。因此输出65和66。 可以看到:在一定条件下,字符型数据和整型数据是可以通用的。但是应注意字符数据只占一个字节,它只能存放0~255范围内的整数。
说明: (1) 整型数据分为长整型(long int)、一般整型(int)和短整型(short int)。在int前面加long和short分别表示长整型和短整型。 (2) 整型数据的存储方式为按二进制数形式存储,例如十进制整数85的二进制形式为1010101,则在内存中的存储形式如图2.1所示。 图2.1
一个整型常量可以用3种不同的方式表示:
十进制整数。如1357,-432,0等。在一个整型常量后面加一个字母l或L,则认为是long int型常量。例如123L,421L,0L等,这往往用于函数调用中。如果函数的形参为long int,则要求实参也为long int型,此时用123作实参不行,而要用123L作实参。
第2章 数据类型与表达式
C++的数据类型 常量 变量 C++的运算符 算术运算符与算术表达式 赋值运算符与赋值表达式 逗号运算符与逗号表达式
C++的数据类型
计算机处理的对象是数据,而数据是以某种特定的形式存在的(例如整数、浮点数、字符等形式)。不同的数据之间往往还存在某些联系(例如由若干个整数组成一个整数数组)。数据结构指的是数据的组织形式。例如,数组就是一种数据结构。不同的计算机语言所允许使用的数据结构是不同的。处理同一类问题,如果数据结构不同,算法也会不同。例如,对10个整数排序和对包含10个元素的整型数组排序的算法是不同的。 C++可以使用的数据类型如下:
C程序设计第五版谭浩强课后答案 第二章答案

首先在网上购票、然后按时坐车到北京,坐车到演唱会会场。
3. 把大象放进冰箱
先打开冰箱门,然后将大象放进冰箱,关冰箱。
2. 什么叫结构化的算法?为什么要提倡结构化的算法?
结构化算法:由一些顺序、选择、循环等基本结构按照顺序组成,流程的转移只 存在于一个基本的范围之内。 结构化算法便于编写,可读性高,修改和维护起来简单,可以减少程序出错的机 会,提高了程序的可靠性,保证了程序的质量,因此提倡结构化的算法。
1. 依次将 10 个数输入,要求输出其中最大的数。
解析: 先输入 10 个整数,将第一个整数给 max,然后依次取剩余整数与 max 进行比 较,如果某个整数大于 max,将该整数交给 max,直到所有剩余整数全部比较 完,max 中保存的即为最大整数,将 max 值输出。
3. 有 3 个数 a,b,c, 要求按大小顺序把他们输出。
108.
2. 有两个相等的实根;
begin
109.
input a
110.
input b
111.
input c
112.
113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130.
b*b - 4*a*c => p if p < 0 {
有实根。
5. 用 N-S 图表示第 4 题中各题的算法
1. 有两个瓶子 A 和 B,分别盛放醋和酱油,要求将他们互换(即 A 瓶原来盛醋,现在盛酱油,B 瓶则相反)。
2. 依次将 10 个数输入,要求输出其中最大的数。 3. 有 3 个数 a,b,c, 要求按大小顺序把他们输出。
3. 把大象放进冰箱
先打开冰箱门,然后将大象放进冰箱,关冰箱。
2. 什么叫结构化的算法?为什么要提倡结构化的算法?
结构化算法:由一些顺序、选择、循环等基本结构按照顺序组成,流程的转移只 存在于一个基本的范围之内。 结构化算法便于编写,可读性高,修改和维护起来简单,可以减少程序出错的机 会,提高了程序的可靠性,保证了程序的质量,因此提倡结构化的算法。
1. 依次将 10 个数输入,要求输出其中最大的数。
解析: 先输入 10 个整数,将第一个整数给 max,然后依次取剩余整数与 max 进行比 较,如果某个整数大于 max,将该整数交给 max,直到所有剩余整数全部比较 完,max 中保存的即为最大整数,将 max 值输出。
3. 有 3 个数 a,b,c, 要求按大小顺序把他们输出。
108.
2. 有两个相等的实根;
begin
109.
input a
110.
input b
111.
input c
112.
113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130.
b*b - 4*a*c => p if p < 0 {
有实根。
5. 用 N-S 图表示第 4 题中各题的算法
1. 有两个瓶子 A 和 B,分别盛放醋和酱油,要求将他们互换(即 A 瓶原来盛醋,现在盛酱油,B 瓶则相反)。
2. 依次将 10 个数输入,要求输出其中最大的数。 3. 有 3 个数 a,b,c, 要求按大小顺序把他们输出。
谭浩强 c++第2章

Racing Bike
Mountain Bike
2.1.1 什么是面向对象的程序设计
3. 继承与重用(inheritance & reusability)
C++提供了继承机制,采用继承的方法可以用一个已有的类建立一 个新的类
被继承的类叫父类(parent class),或称为基类(base class) 派生出来的新类叫子类(child class),或称为派生类(derived class)。 子类继承基类的全部属性(数据)和行为(函数) 子类在父类的基础上,增加新的属性和行为,是父类的特别版本
One window
Two bugs Slow bug Fast bug
One mouse Game control
Slow bug
Fast bug
The “Bug Hunt” game
2. The properties and actions of the bugs
Properties: A display image.
Position in the window. Current moving direction.
Ot her possible direct ions
Current moving speed.
Strength. Draw. Move. Change the direction. Hit (i.e. tell the bug it was swatted).
Yes or No Response
Game controller
IsPointedAt?
MouseClick
2.2 类的声明和对象的定义
C语言第二章谭浩强第四版

第二章 程序的灵魂
信息技术教研室
什么是算法
计算机算法可分为两大类别:
数值运算算法 非数值运算算法 数值运算的目的是求数值解 非数值运算包括的面十分广泛,最常见的是用 于事务管理领域
第二章 程序的灵魂
信息技术教研室
简单的算法举例
求1×2×3×4×5× 例2.1 求1×2×3×4×5 …×1000
第二章 程序的灵魂
信息技术教研室
简单的算法举例
例2.3 判定2000—2500年中的每一年是否闰年,并 将结果输出。 闰年的条件: (1)能被4整除,但不能被100整除的年份都是闰 年,如2008、2012、2048年 (2)能被400整除的年份是闰年,如2000年 不符合这两个条件的年份不是闰年 例如2009、2100年
1t
2i t*it i+1i N i>5 Y 输出t
结束
第二章 程序的灵魂
信息技术教研室
例2.7: 例2.2的算法用流程图表示。有50个学生,
要求将成绩在80分以上的学生的学号和成
绩输出。
如果包括输入数据部分
开始 1i Y gi≧80 N
开始 1i 输入ni、gi
输出ni、gi i+1i N i>50 Y 结束
①
③
③
① 起止框 位置不够 判断框
防止交叉 输入输出框
处理框
② 连接点 注释框
流程线
开始
例2.6 将例2.1的算法用流 程图表示。 求1×2×3×4×5 如果需要将最后结果输出:
1t
2i t*it i+1i N
i>5
Y
结束
开始
例2.6 将例2.1的算法用流 程图表示。 求1×2×3×4×5 如果需要将最后结果输出:
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(3)C语言的ANSI C标准指出:各种变量的取值范 围应在标题文件limits.h和float.h中作出定义。
2.2 常量及其类型
2.2.1 整型常量 2.2.2 实型常量 2.2.3 字符型常量 2.2.4 字符串常量 2.2.5 符号常量
2.2.1 整型常量
1. 十进制整数 2. 八进制整数 3. 十六进制整数
十进制是整数的通常写法,十进制整数没有前缀, 其数码为0~9。
➢ 例如:437
八进制整数必须以数字0开头,即以0作为八进制 数的前缀。数码取值范围为0~7。
➢ 例如:0123
十六进制整常数的前缀为0X或0x。其数码为0~9, A~F或a~f。
➢ 例如:0x123
2.2.2 实型常量
1. 小数形式 2. 指数形式
第2章基本数据类型和运算
第2章 C语言的基本知识
2.1 C语言的数据类型 2.2 常量及其类型 2.3 变量及其类型 2.4 运算符与表达式 2.5 不同数据类型的输入 2.6 不同数据类型的输出
2.1 C语言的数据类型
2.1.1 C语言具有的数据类型 2.1.2 C 语言的基本数据类型 2.1.3 基本数据类型的修饰
2.2.4 字符串常量
例2.1以实数的形式输出三个数。
main()
{
printf("%f\n ",365.);
printf("%f\n ",365);
printf("%f\n ",365f);
}
该程序000
365.000000
从输出结果可以看出第二行输出的0.000000不是期望
1. 小数形式
由正负号、整数部分、十进制小数点和小数部分 组成。整数部分和小数部分是由数字0~9和小数 点组成,其中小数点是不能缺少的。
2. 指数形式
在 小 数 的 基 础 上 , 后 面 加 阶 码 标 志 ( “ e” 或 “E”)以及阶码组成。其一般形式为: a E n或 a e n
其中的a为十进制数,E或e为阶码标志,n为十进 制整数。需要注意的是,字母“e”或“E”之前 必须有数字,且e后面的指数必须为整数,如e5、 3.24e3.2、e等都是不合法的指数形式。
❖ 说明:C语言字符集中的任何一个字符均可用转义字 符来表示。表中的\ddd和\xhh正是为此而提出的。 ddd和hh分别为八进制和十六进制的ASCII代码。 如\101表示字母“A” ,\102表示字母“B”,\X0A 表示换行等。
❖ 字符常量的特点:
(1)字符常量只能用单引号括起来,不能用双引号 或其他符号。
(2)字符常量只能是单个字符,不能是字符串。
(3)字符常量可以是字符集中任意字符。
(4)C语言对字符型和整型是不加区分的,字符型常 量被视为1字节的整数,其值就是该字符的ASCII码, 可以像整数一样参加数值运算。例如,'C'的ASCII 码为67,'C'-2的值为65,即字符'A'的ASCII码。
2.1.1 C语言具有的数据类型
数据类型是指数据的内在表现形式。不同的数据类型 在内存中的存储方式不同,在内存中所占的字节数也 不相同。
通俗地说,数据在加工计算中的特征就是数据类型。 例如,职工的年龄和工资都可以进行加减等算术运算,
具有一般数值的特点,在C语言中称为数值型。其中 年龄是整数,所以称为整型;工资一般为实数,所以 称为实型。
2. 转义字符表示法
对于不能显示的字符(主要指控制字符,如回 车符、换行符、制表符等)和一些在C语言中有 特殊含义和用途的字符(如单引号、双引号、 反斜杠线等),只能用转义字符表示。
转义字符是一种特殊的字符常量。转义字符以 反斜线“\”开头,后面跟一个或几个字符。转义 字符具有特定的含义,它不同于字符原有的意 义,所以称“转义”字符。常用的转义字符及 其含义如表2-3所示。
C语言的数据类型有以下几种,如图2-1所示。
图2-1 C语言的数据类型
2.1.2 C 语言的基本数据类型
基本数据类型是不可再分的
最基本的数据类型,是构造
其他数据类型的基础。
表2-1 C语言基本的数据类型及其对应的关键字
C语言提供的五种基本的数 据类型及其对应的关键字如 表2-1所示。
数据类型 字符型
关键字 char
字符型用来描述单个的字符; 整型用来描述整数;浮点型 和双精度型用来描述实数, 其中双精度型比浮点型表示 的精度高;无值类型用来描 述无形式参数的C函数、无 返回值的C函数或无定向指 针等。
整型
int
浮点(单精度)型 float
双精度型
double
无值型
void
(2)int 型数据可以用signed、unsigned、short、 long加以修饰,即可以有int、signed int、 unsigned int、short int、long int、signed long int 、unsigned long int等形式。对于int 而言,当使用类型修饰后,关键字int可省略不写, 例如signed long int可以写成long,unsigned long int可以写成unsigned long。
表2-3 常用的转义字符及其含义
转义字符 \n \r \f \t \v \b \\ \’ \”
\ddd \xhh
含义 换行 回车 换页 水平制表(Tab) 垂直制表 退格符(backspace) 反斜杠符"\" 单引号符 双引号符 1~3位八进制数所代表的字符 1~2位十六进制数所代表的字符
ASCII代码 10 13 12 9 11 8 92 39 34
的数值。原因是实数不仅要有数字部分,而且还要有 小数点,否则,C程序运行结果将不是期望值。
2.2.3 字符型常量
1. 单引号表示法 2. 转义字符表示法
1. 单引号表示法
对于可显示的字符常量,可直接用单引号将该字 符括起来,如' a ' 、 ' 9 ' 、 ' Z ' 、 ' = ' 、 ' + ' 、 '? '等。也可用字符的ASCII码值表示字符,如十 进制的85表示大写字母' U ' ,八进制数0102表示 大写字母' B ' 。
2.2 常量及其类型
2.2.1 整型常量 2.2.2 实型常量 2.2.3 字符型常量 2.2.4 字符串常量 2.2.5 符号常量
2.2.1 整型常量
1. 十进制整数 2. 八进制整数 3. 十六进制整数
十进制是整数的通常写法,十进制整数没有前缀, 其数码为0~9。
➢ 例如:437
八进制整数必须以数字0开头,即以0作为八进制 数的前缀。数码取值范围为0~7。
➢ 例如:0123
十六进制整常数的前缀为0X或0x。其数码为0~9, A~F或a~f。
➢ 例如:0x123
2.2.2 实型常量
1. 小数形式 2. 指数形式
第2章基本数据类型和运算
第2章 C语言的基本知识
2.1 C语言的数据类型 2.2 常量及其类型 2.3 变量及其类型 2.4 运算符与表达式 2.5 不同数据类型的输入 2.6 不同数据类型的输出
2.1 C语言的数据类型
2.1.1 C语言具有的数据类型 2.1.2 C 语言的基本数据类型 2.1.3 基本数据类型的修饰
2.2.4 字符串常量
例2.1以实数的形式输出三个数。
main()
{
printf("%f\n ",365.);
printf("%f\n ",365);
printf("%f\n ",365f);
}
该程序000
365.000000
从输出结果可以看出第二行输出的0.000000不是期望
1. 小数形式
由正负号、整数部分、十进制小数点和小数部分 组成。整数部分和小数部分是由数字0~9和小数 点组成,其中小数点是不能缺少的。
2. 指数形式
在 小 数 的 基 础 上 , 后 面 加 阶 码 标 志 ( “ e” 或 “E”)以及阶码组成。其一般形式为: a E n或 a e n
其中的a为十进制数,E或e为阶码标志,n为十进 制整数。需要注意的是,字母“e”或“E”之前 必须有数字,且e后面的指数必须为整数,如e5、 3.24e3.2、e等都是不合法的指数形式。
❖ 说明:C语言字符集中的任何一个字符均可用转义字 符来表示。表中的\ddd和\xhh正是为此而提出的。 ddd和hh分别为八进制和十六进制的ASCII代码。 如\101表示字母“A” ,\102表示字母“B”,\X0A 表示换行等。
❖ 字符常量的特点:
(1)字符常量只能用单引号括起来,不能用双引号 或其他符号。
(2)字符常量只能是单个字符,不能是字符串。
(3)字符常量可以是字符集中任意字符。
(4)C语言对字符型和整型是不加区分的,字符型常 量被视为1字节的整数,其值就是该字符的ASCII码, 可以像整数一样参加数值运算。例如,'C'的ASCII 码为67,'C'-2的值为65,即字符'A'的ASCII码。
2.1.1 C语言具有的数据类型
数据类型是指数据的内在表现形式。不同的数据类型 在内存中的存储方式不同,在内存中所占的字节数也 不相同。
通俗地说,数据在加工计算中的特征就是数据类型。 例如,职工的年龄和工资都可以进行加减等算术运算,
具有一般数值的特点,在C语言中称为数值型。其中 年龄是整数,所以称为整型;工资一般为实数,所以 称为实型。
2. 转义字符表示法
对于不能显示的字符(主要指控制字符,如回 车符、换行符、制表符等)和一些在C语言中有 特殊含义和用途的字符(如单引号、双引号、 反斜杠线等),只能用转义字符表示。
转义字符是一种特殊的字符常量。转义字符以 反斜线“\”开头,后面跟一个或几个字符。转义 字符具有特定的含义,它不同于字符原有的意 义,所以称“转义”字符。常用的转义字符及 其含义如表2-3所示。
C语言的数据类型有以下几种,如图2-1所示。
图2-1 C语言的数据类型
2.1.2 C 语言的基本数据类型
基本数据类型是不可再分的
最基本的数据类型,是构造
其他数据类型的基础。
表2-1 C语言基本的数据类型及其对应的关键字
C语言提供的五种基本的数 据类型及其对应的关键字如 表2-1所示。
数据类型 字符型
关键字 char
字符型用来描述单个的字符; 整型用来描述整数;浮点型 和双精度型用来描述实数, 其中双精度型比浮点型表示 的精度高;无值类型用来描 述无形式参数的C函数、无 返回值的C函数或无定向指 针等。
整型
int
浮点(单精度)型 float
双精度型
double
无值型
void
(2)int 型数据可以用signed、unsigned、short、 long加以修饰,即可以有int、signed int、 unsigned int、short int、long int、signed long int 、unsigned long int等形式。对于int 而言,当使用类型修饰后,关键字int可省略不写, 例如signed long int可以写成long,unsigned long int可以写成unsigned long。
表2-3 常用的转义字符及其含义
转义字符 \n \r \f \t \v \b \\ \’ \”
\ddd \xhh
含义 换行 回车 换页 水平制表(Tab) 垂直制表 退格符(backspace) 反斜杠符"\" 单引号符 双引号符 1~3位八进制数所代表的字符 1~2位十六进制数所代表的字符
ASCII代码 10 13 12 9 11 8 92 39 34
的数值。原因是实数不仅要有数字部分,而且还要有 小数点,否则,C程序运行结果将不是期望值。
2.2.3 字符型常量
1. 单引号表示法 2. 转义字符表示法
1. 单引号表示法
对于可显示的字符常量,可直接用单引号将该字 符括起来,如' a ' 、 ' 9 ' 、 ' Z ' 、 ' = ' 、 ' + ' 、 '? '等。也可用字符的ASCII码值表示字符,如十 进制的85表示大写字母' U ' ,八进制数0102表示 大写字母' B ' 。