第2章 语言与字符串
C语言基础知识第二章概述
2019/3/14
C语言程序设计教程
第2章 C语言的基本数据类型与表达式
12
例如:字符A的ASCII码为: 65D(十进制)=41H(十六进制)=101Q(八 进制) ∴字符A可以表示为‘A’、’\x41’、’\101’。 2、分类: char 和 unsigned char; 3、值域: 每个字符型数据在内存中占一个字节;包括 ASCII字符表中的所有字符(可显示字符和非显 示字符)。
– 例如: 某计算机允许表示具有七位有效数字的十进制数,计算 333.3333+0.0002222222,若计算时没有位数的限制,则结果应当 是3.3335222222。 计算机由于字长位数的限制,只能表示七位有 效数字,于是只得将小数点后的七个数字全部删掉,而仅保留其 整数部分,得到和值333.3335。 (4)根据实际要求选择单精度或双精度。
2019/3/14
C语言程序设计教程
13
• 注意: • • • • (1)字符常量只能用单引号括起来,不能用双引号 或其他括号。 (2)字符常量只能是单个字符, 不能是字符串。 ‘ab’ 不是字符常量 (3)字符可以是字符集中任意字符,但数字被定义为 字符型之后就以ASCII码值参与数值运算。 如,‘6’和6是不同的,‘6’是字符常量,而6是整型 常量。
注意
‘a’与“a”的区别。
2019/3/14
C语言程序设计教程
15
• 字符常量与字符串常量的区别:
– ⑴ 定界符不同。 – 字符常量使用单引号,而字符串常量使用双引号。 – ⑵ 长度不同。 – 字符常量的长度固定为1,而字符串常量的长度可以是0,也可以 是某个整数。 – ⑶ 存储要求不同。 – 字符常量存储的是字符的ASCII码值,而字符串常量除了要存储 字符串常量的有效字符外,还要存储一个字符串结束标志‘\0’。
C语言教程课件第二章 数据类型、运算符和表达式
例 整型变量的定义与使用
#include <stdio.h> void main() { int a,b,c,d; /*指定a、b、c、d为整型变量*/ unsigned u; /*指定u为无符号整型变量*/ a=12;b=-24;u=10; c=a+u;d=b+u; printf("a+u=%d,b+u=%d\n",c,d); }
例 向字符变量赋以整数。 • 运行结果: #include <stdio.h> a b void main() 97 98 { char c1,c2; c1=97; c2=98; printf("%c %c\n",c1,c2); printf("%d %d\n",c1,c2); }
• 说明:在第4和第5行中,将整数97和98分别赋给c1和c2,它 的作用相当于以下两个赋值语句: c1='a';c2='b'; 因为'a'和'b'的ASCII码为97和98
• 字符型变量用来存放字符常量,注意只能放一个字符。 • 字符变量的定义形式如下:char c1,c2; • 在本函数中可以用下面语句对c1,c2赋值: c1='a';c2='b'; • 一个字符变量在内存中占一个字节; • 将一个字符常量放到一个字符变量中,是将该字符的 相应的ASCII代码放到存储单元中,这样使字符型数据 和整型数据之间可以通用。一个字符数据既可以以字 符形式输出,也可以以整数形式输出。
运行结果: total=300 例2.1 符号常量的使用 #define PRICE 30 #include <stdio.h> void main ( ) 说明:如再用赋值语句给PRICE赋值是错的 { PRICE=40;/*错误,不能给符号常量赋值*/ int num, total; num=10; total=num * PRICE; printf(″total=%d\n ″,total); } 说明: 程序中用#define命令行定义PRICE代表常量30,此后凡在 本文件中出现的PRICE都代表30,可以和常量一样进行运算
第2章 Python语言基础
常量
字符型常量:
➢转义字符:以“\”(反斜杠)开头的特殊的表示方法
(1)转义字符常量'\n'、'\101'、'\x41'等只能表示一个字符; (2)’\101’和 ‘\0x41’ 均表示字符’A’
1.标识符、常量与变量
布尔型常量: 只有两个:真(True)和假(False),
书写时注意区分大写。这两常量一般用于描 述逻辑判断的结果,如关系表达式或逻辑表 达式。
常量
复数型常量: 和数学上表示含义一样,Python中的复
数也由实部和虚部组成,形式为:a + bj或 complex(a , b)。如:3+5j。从z=a + bj中提 取实部和虚部,可用z.real和z.imag方式。
变量
变量结构:
对于Python而言,一切变量都是对象,变量的 存储,采用了引用语义的方式,变量存储的只是一 个变量的内存地址,而不是这个变量的值本身。 Python解释器会为每个变量分配大小一致的内存, 用于保存变量引用对象的地址。
D
身份运算符
Python的身份运算符用于测试两个变量是否引用同一个对 象,分别是is和is not,运算规则如表所示。
运 算 符 优 先 级 和 结 合 性
3.基本输入与输出方法
一、数据输出 (1)print()函数 基本格式如下: print([obj1,…][,sep=' '][,end='\n '][,file=sys.stdout]) 例: >>> print(123,'abc',456,'def',sep='#' ) 123#abc#456#def print(格式控制字符串%(输出项1,输出项2,…,输出项n)) 例: print("a=%d,b=%d"%(a,b)) (2)format()函数 基本语法是通过 {} 和 : 来代替以前的 % 。 print("{1} {0} {1}".format("hello", "world")) # 设置指定位置 world hello world
C语言程序设计 第2章 数据类型
2.2常量和变量 变量名与变量值的关系:
2.2常量和变量
变量的使用:先定义后使用
变量定义的一般形式:
数据类型 变量名1,变量名2,…,变量名n;
2.2常量和变量
➢ 凡未被事先定义的,系统不把它认作变量名,这就 能保证程序中变量名使用的正确
例:varname,在使用的时候误写成vaname
➢ 在定义变量时要指定变量的类型,在编译时就能为 变量分配相应的存储单元
5
2.2常量和变量
甘草 三七 干姜 葛根
枸杞 人参 陈皮 地黄
山药 当归 谷芽 黄连
贴上标签 加以区分
用标识符给变量起名字
2.2常量和变量 变量命名规则
➢ 只能由字母(a~z,A~Z)、数字(0~9)和下划线(_)构 成
➢ 第一个字符不能为数字 ➢ 不能与关键字同名
例:a9,_a, A_num √ 9a, a*num,int ×
控制语句:控制语句用于控制程序的流程。 C语言提供三类控制语句: ➢ 选择语句 ➢ 循环语句 ➢ 转移语句。 控制语句会在第三章和第四章详细介绍。
2.7 表达式与语句
复合语句: 复合语句由一对大括号括起来的一 条或多条语句组成。 例:{
turnOn(0,3); turnOn(0,4); turnOn(0,5); turnOn(1,4); }
2.7 表达式与语句
表达式语句:表达式末尾加上“;”就构成一条 表达式语句。 例:
s = 3.14 * r * r; 就是一条赋值表达式语句。表达式语句最后的 分号是语句中必不可少的一部分。
2.7 表达式与语句
函数调用语句:函数调用语句由函数调用加分 号构成。 例:
turnOn(1,1);
C语言教材 第2章
第2章 C 语言的基本数据类型本章要点了解C 语言的数据类型,掌握基本数据类型的应用及其相互转换规则,理解变量和常量的概念,并掌握其定义及引用方法。
本章的难点是数据在内存中的存储形式。
第一节 C 语言的数据类型由于信息的表现形式多种多样,处理的方法也不相同,所以,我们必须考虑用不同形式的数据来表示不同的信息。
例如:一个班级的人数要用整数来表示;班级学生的平均成绩要用小数表示;学生的姓名、性别要用字符来表示;一个班级学生某一门课程的成绩要用一组不同的数值来表示等。
计算机语言中的数据类型就是为了能够高效处理各种不同的数据而引进的一个概念,是指数据的内在表现形式。
不同的数据类型具有不同的取值范围和不同的操作。
C 语言提供的数据类型如图2-1所示。
在程序中使用的所有数据都必须指定它的数据类型,C 语言的数据类型由基本类型和非基本类型组成。
其中,基本数据类型是其他数据类型的基础。
C 语言中的基本数据类型包括整型、实型(浮点型)、字符型,其中实型又包括单精度和双精度两种类型。
本章主要讨论这4种基本类型。
整型、单精度型、双精度型和字符型数据定义的关键字分别为:int 、float 、double 和char 。
除了这四个关键字外,C 语言中还提供了一些数据类型的修饰符,如:long 、short 、signed 和unsigned 。
它们的作用是与基本类型的定义关键字结合起来使用,以对基本类型进行扩充,使得在程序编写的过程中可以灵活调整数值的范围以及所占用的存储空间。
结合修饰符的应用,基本数据类型可进一步划分,如表2-1所示。
表2-1 各种数据类型及其说明语言的数据类型图)空类型(指针类型)共用体类型()结构体类型(数组类型构造类型)枚举类型()字符型()双精度型()单精度型(实型(浮点型))整型(基本类型C 12void union structenum char double float int -⎪⎪⎪⎪⎪⎪⎪⎪⎩⎪⎪⎪⎪⎪⎪⎪⎪⎨⎧⎪⎩⎪⎨⎧⎪⎪⎩⎪⎪⎨⎧⎩⎨⎧说明:(1)表中方括号内的部分是可以省略不写的。
第二章 Visual Basic语言基础
2.3 Visual Basic中的运算符与表达式
算术运算符
算术运算符用于数 学计算,VB有8个算术 运算符(其中减号运 算符和取负运算符形 式相同)。
运算符 名称 ^ * / \ Mod + - 乘方 负号 乘 除 整除 取模 加 减 优先级 1 2 3 3 4 5 6 6 示例 3^2 -2 2*5 4/5 4\5 5 Mod 4 2+3 4.5-2.4 结果 9 -2 10 .8 0 1 5 2.1
货币型 日期型 字符型 对象型 变体型
Currency Date(time) String Objiect Variant
@ 无 $ 无 无
cur dtm str obj vnt 4
8 8 与字符串长度有关
根据分配确定
2.1 Visual Basic的基本数据类型
数值型数据(Numeric)
数值型数据一般分为整型数和浮点数两类。 整型数分为整数(Integer)和长整数(Long) 浮点数分为单精度浮点数(Single)和双精度浮点 数(Double)。 有时也把货币型数据(Currency)和字节型数据 (Byte)划归数值型数据。
2.1 Visual Basic的基本数据类型
数据类型 字节型 逻辑型 整型 长整型 单精度型 关键字 Byte Boolean Integer Long Single 类型 符 无 无 % & ! 前缀 byt bln int lng sng 所占字节数 1 2 2 4 4 0~255 True与False -32768~32767 -2147483648~2147483647 负数:-3.402823E38~-1.401298E-45 正数:1.401298E-45~3.402823E38 范 围
浙大版《c语言程序设计(第4版)》讲解
浙大版《c语言程序设计(第4版)》讲解《C语言程序设计》是国内C语言教材的重要书籍,高校中的计算机专业等都有教授。
浙大版《C语言程序设计(第4版)》是由著名计算机科学家袁春风编写的C语言教材,该书主要介绍了C语言基础、字符串、数组、指针、结构体、文件操作等内容。
本文将对该书内容做简要概括。
第一部分:C语言基础第一章:概述该章主要介绍了计算机语言的发展与演化,C语言的历史和主要特点,以及C语言的应用领域和发展前景。
第二章:初识C语言该章节主要介绍了C语言的基本概念,例如标识符、关键字、注释等。
并且结合一些简单的例子介绍了C语言的语法格式和执行规则。
第三章:数据类型该章节主要介绍了C语言的数据类型,包括整型、实型、字符型、布尔型等。
并且介绍了类型转换及其规则。
第四章:运算符与表达式该章节主要介绍了C语言的基本运算符及其优先级、结合性和作用。
并且通过实例来介绍了使用运算符和表达式的方法及注意事项。
第五章:分支结构该章节主要介绍了C语言中的分支结构,包括if、if-else、switch等,以及运用分支结构解决问题的方法和技巧。
第二部分:数组、字符串和指针第七章:数组该章节主要介绍了C语言中的数组,包括一维数组、二维数组等,并结合例子介绍了数组的定义、初始化、遍历、赋值等操作。
第八章:字符串该章节主要介绍了C语言中的字符串,包括字符串的定义、初始化、输入、输出等。
并且介绍了使用字符串解决问题的方法和技巧。
第九章:指针第三部分:函数与结构体该章节主要介绍了C语言中的结构体,包括结构体的定义、初始化、访问、结构体数组、结构体指针等。
并且介绍了结构体在程序中的应用。
第四部分:文件操作与其他第十二章:文件操作第十三章:其他语言特性与扩展该章节主要介绍了C语言扩展的特性,包括宏定义、预处理指令、变长参数等。
并且介绍了C语言与其他语言的异同点。
总结:《C语言程序设计(第4版)》是一本权威的C语言教材,该书系统全面地介绍了C语言的基本概念、语法格式、运算符、控制语句、数组、指针、函数、结构体、文件操作等方面的内容,让读者对C语言的掌握更加深入。
《Python数据分析》 课件 第二章 Python语言基础(55页)
1 . 3 基本数据类型2 .字符串字符串是 Python 中最常用的数据类型 。可以使用引号(单引号 , 双引号 , 三引号)作为界定符来创建字符串。
Str1 = "单引号字符串"
# 使用单引号创建字符串
Str2 = "双引号字符串"
# 使用双引号创建字符串
Str3 = """三引号字符串"""
1 .4 变量与常量2. 常量常量就是程序运行过程中一直不变的量 , 常量一般使用全大写英文来表示。例如数学中的圆周率PI就是一个常量。import mathmath.pi
1 . 5 标识符与关键字1. 标识符标识符就是程序中用来表示变量 、 函数 、类和其他对象的名称 。Python 的标识符由字母 、数字 、下划线“_ ”组成 , 但不能以数字开头。
and
一
24 non local25 not
序号
关键字
23
lambda
关键字elifelseexcept
这就是所谓26的关键字。or
序号12 13 14
序号 关键字
2 None
转义字符
意义
转义字符
意义
\a
响铃
\\
反斜杠符号
\b
退格(Backspace)
\"
单引号
\f
换页
\"
双引号
\n
换行
\(在行尾时)
续行符
\r
回车
\0
空字符
\t
横向制表符
\ddd
1到3位八进制数代表的字符
\v
纵向制表符
\xhh
十六进制数代表的字符
计算机二级第2章 语法基础
16
字符串常量和字符常量的区别
字符常量'A'与字符串常量 是两回事: 字符常量 与字符串常量"A"是两回事: 与字符串常量 是两回事
1. 定界符不同:字符常量使用单引号,而字符串常量使 定界符不同:字符常量使用单引号,
用双引号; 用双引号;
2. 长度不同:字符常量的长度固定为 ,而字符串常量 长度不同:字符常量的长度固定为1,
2.
3.
13
程序举例
main( ) { char ch1,ch2; ch1='a'; ch2='b'; printf("ch1=%c,ch2=%c\ printf("ch1=%c,ch2=%c\n",ch1,ch2); printf("ch1=%d,ch2=%d\ printf("ch1=%d,ch2=%d\n",ch1,ch2); } 程序运行结果: 程序运行结果: ch1=A,ch2=b ch1+200=297 ch1+200=) ch1+256=353 ch1+256=a
程序运行结果: 程序运行结果: ch1=a,ch2=b ch1=97,ch2=98
main( ) { char ch1,ch2; ch1='a'; ch2='B'; /*字母的大小 写转换*/ printf("ch1=%c,ch2=%c\n",ch132,ch2+32); /*用字符形式输出一个大于256的数值*/ printf("ch1+200=%d\n", ch1+200); printf("ch1+200=%c\n", ch1+200); printf("ch1+256=%d\n", ch1+256); 14 printf("ch1+256=%c\n", ch1+256);}
C语言程序设计第2章-1数据类型、运算符和表达式
2、 C 语言的运算符的优先级与结合性
3、表达式:由操作数和运算符组成的序列。
5
精品文档
⒉ 真值: 带符号位的机器数对应的数值称为机器数的真值。 (10100011)2= -35
⒊ 无符号数:当计算机字长的所有二进位都用来表示(biǎoshì)数值时,称 为无符号数。
2.2.2 原码、反码和补码
⒈ 原码
整数 X 的原码指:其数符位 0 表示正,1 表示负,其数值部分
就是 X 的绝对值的二进制表示。
2.1 常用 的进位制 (chánɡ yònɡ)
2.1.1 二进制、八进制和十六进制(shíliùjìn zhì)数
3
精品文档
2.1.2十、二进制、八进制和十六进制数之间的换算
⒈ 二、八、十六进制数 → 十进制数的换算采用按权展开法。
(2AB.F)16 = 2χ162+10χ161+11χ160+15χ16-1 = 683.93 ⒉ 十进制数 → 二进制数的换算整数部分(bù fen)采用除以二取余直到商
19
精品文档
2.5.1 算术运算符与算术表达式
⒈ 基本的算术运算符:
14
精品文档
3.字符常量
字符常量是用单撇号括起来的单个字符或转义字符,
如: ‘a’, ‘9’, ‘&’, ‘\n’, ‘\’’, ‘\101’。
字符常量的值为该字符的ASCII码值,如 ‘a’值为97, ‘\n’
C语言复习资料 第二章重点内容
11
2。 对上述已经定义的实型常量指数形式的说明:
(1)在此的digits是一位或多位十进制数字(0—9)组成。 (2)小数点之前是整数部分,之后是小数部分。 (3)小数点在没有小数时可以省略。如:3E+6 (4)指数部分用E或者e开头,幂指数可以为负,当没有符号时,视为正 指数,且其基数都为10。 (5)在不加说明的情况下,实型常量为正值,如果要表示负值,必须在 常量前使用负号。如:-2.5E-5 (6)字母E或e之前必须有数字,且E或e之后指数必须为整数。 如:e3,2.3e9.5,.e3等都是不合法的。
上述各类型整型变量占用的内存字节数随系统而异。在16位操作系 统中,一般用2字节表示一个int型变量,且long型(4字节)≥int型 (2字节)≥short型(2字节)。
2.占用内存字节数与值域
8
显然,不同类型的整型变量,其值域不同。占用内存字 节数为n的(有符号)整型变量,其值域为:-2n*8-1~(2n*8-11);无符号整型变量的值域为:0~(2n*8-1)。(同样适合于 各种不同的类型 ) 例如,PC机中的一个int型变量,其值域为-22*8-1~(22*8-11),即-32768~32767;一个unsigned型变量的值域为:0~ (22*8-1),即0~65535。 2.4.2 整型常量 1.三种表示形式 整型常量即整常数,在C语言中可用三种形式表示: (1)十进制。例如10、36。 (2)八进制(以数字0开头)。例如012。 (3)十六进制(以数字0+小写字母x开头)。例如0x36。
9
2.分类 (1)基本整型。在16位机中,用2字节存储,其数据范 围与int型变量一样。 (2)长整型(在数值后面加“L(l)”)。对超出基 本整型值域的整型常量,可使用长整型常量表示,其取值 范围可达-231-(231-1)。例如,123l、315L等。 3.类型匹配规则 类型匹配规则为:一个整型常量,可以赋给能容纳下其 值的整型变量。 例如,其值在-215--(215-1)的整型常量,可以赋 给int型变量和long int型变量;其值在-231--(231-1)的整 型常量,就只能赋给long int型变量。 注意:常量无unsigned型。但一个非负整型常量,只要 它的值不超过相应变量的值域(即取值范围),也可以赋 给unsigned型变量。
python二级电子教案 第2章 Python语言基本语法元素
保留字
保留字,也称为关键字,指被编程语言内部定义 并保留使用的标识符。
程序员编写程序不能定义与保留字相同的标识符。 每种程序设计语言都有一套保留字,保留字一般
用来构成程序整体框架、表达关键值和具有结构 性的复杂语义等。 掌握一门编程语言首先要熟记其所对应的保留字。
保留字
Python 3.x保留字列表 (33个)
表达式一般由数据和操作符等构成,这是构成 Python语句的重要部分。
赋值语句
Python语言中,= 表示“赋值”,即将等号右侧 的值计算后将结果值赋给左侧变量,包含等号(=) 的语句称为“赋值语句” <变量> = <表达式>
同步赋值语句:同时给多个变量赋值 <变量1>, …, <变量N> = <表达式1>, …, <表达式N>
引用
引用功能库之后,采用<功能库名称>.<函数名称>() 方式调用具体功能。
其他语句
除了赋值语句外,Python程序还包括一些其他的 语句类型,例如,分支语句和循环语句等。更多的 分支和循环内容将在第4章介绍。这里仅简要介绍 这两类语句的基本使用。
分支语句
分支语句是控制程序运行的一种语句,它的作用是根据判断 条件选择程序执行路径。分支语句包括:单分支、二分支和 多分支。
一个整数值可以表示为十进制、十六进制、八进制 和二进制等不同进制形式。
十进制: 1010 十六进制: 0x3F2 八进制: 0o1762 二进制: 0b001111110010
数字类型
一个浮点数可以表示为带有小数点的一般形式,也
可以采用科学计数法表示。例如:浮点数123.456,
两种表示方式如下:
C语言程序设计-第2讲 字符集
static auto
<2>程序结构语句定义符 〔10个〕
判断: If 循环: for do while 转移:goto 跳出: break continue 返回:return 开关:switch case
3、其它关键字
sizof 大小 typedef 类型定义
default volatile 可变的 变量
和字符串常量中起作用.在其它地方出现时,只起间隔作用,编译程序对
它们忽略不计.因此在程序中使用空白符与否,对程序的编译不发生影
响,但在程序中适当的地方使用空白符将增加程序的清晰性和可读性.
4.标点和特殊字符
一、C语言词汇
在C语言中使用的词汇分为六类:标识符,关键字,运算 符,分隔符,常量,注释符等.
short int,短整型,2个字节.通常简写为short long int,长整型,4个字节.通常简写为long
single 单精度浮点数 4个字节 double 双精度浮点数 8个字节 long double ?
signed 用来修饰char、int、short和long,说明他们是有符号的整
/*定义 ch 为字符型变量*/
《新概念C语言能力教程》第2章基本数据类型
• 其中的l(long)和h(short)称为长度修饰符,是附加的格式说明符。
格式字符串与数据类型
• unsigned short a = -1u; • 语句printf("%hu", a);中格式字符串hu(无符号短整型)准确地匹配了变量a
printf函数的输出结果不会是22亿。这条语句有逻辑错误。
分析下面语句的输出结果。
• printf("%lu", 2200000000); • printf("%ld", -1); • printf("%lu", -1u); • printf("%hd", -1); • printf("%hu", -1u); • printf("%hu", -2);
编码和解码
• 现实世界中的数据转换成由0和1组成的二进制串,计算机才能存储和处理。 由数据得到01串称为编码;由01串得到数据称为解码。
• 每类数据都各有特点,只用一种编码规则统一编码是不现实的。不同类型的 数据如整数和小数,采用了不同的编码规则。
• 多种编码规则导致不同数据的编码结果可能相同,因此,只有确定了编码规 则,才能正确解码。
功的识别的16。 • 当用户输入32789↙时,全部识别成功,但短整型变量m的实际值不会是
的类型,printf函数正确地输出变量a的实际值65535。 • 语句printf("%hd", a);中格式字符串hd(短整型)与变量a的类型不匹配,
C语言程序设计第二章
2.2常量和变量
变量的类型
2.3 整型数据
2.3.1整型常量 整型常量即整常数。在C语言中,整型常量可以用十进制、八 进制、十六进制3种形式表示。 1.十进制整数 由0~9共10个数码组成。如5234,-78,0等。注意:5234不能 写成5,234。 2.八进制整数 八进制整数必须以数字o开头,组成八进制的数码为0~7。如 o123,o101,o645,o763等。 3.十六进制整数 十六进制整数以0x或0X开头(0为数字),组成十六进制的数码为 0~9,A~F(a~f)。如0x99A,0X97C,0x59ff等。
基本类型 实型 字符类型 (char) 枚举类型 (enum) 数组类型([]) 结构体类型 (struct) 共用体类型 (union) 文件类型 (FILE)
单精度型 (float) 双单精度型 (double)
符号长整型 (unsigned long)
构造类型
C语言提供的数据类型如右所 示:
2.3 整型数据
3.整型变量的定义 整型变量的定义的格式如下: 类型标识 变量名1,变量名2,变量名3…… 类型标识符可以是int、short、long、unsigned,或是它们的组合,例 如: int x,y; //指定变量x、y为整型变量 long c,d; //指定变量c、d为长整型变量 unsigned age,hight; //指定变量age,hight为无符号整型变量 变量的定义,一般放在一个函数开头的声明部分。 4.整型变量的赋值 可以将一个整型常量或整型变量赋值给整型变量,例如: int x=456;
2.4 实型数据
2.4.1实型常量 在C语言中,实型表示实数的集合,实型常量又称为实数。实 型常量只能用十进制形式表示,不能用八进制或十六进制形式表示。 实型常量有两种表示形式 1.十进制小数形式 十进制小数形式由数码0~ 9和小数点组成。如0.123,.123, 0.0,0.1,-267.8230,0.,.0等。 2.十进制指数形式 由十进制数码,“e”或“E”(代表×10)组成。如1e5, 139.5E2,-1.99e-3(代表1×105,139.5×102,-1.99×10-3)等。 格式如下: 小数或整数e(或E)+(或-)整数
C语言第2章基本数据类型与表达式
整型数据有:十进制整数、八进制整数和十六进制三种形式。 整型数据有:十进制整数、八进制整数和十六进制三种形式。
(1)十进制整数的表示与数学上的表示相同,如: 十进制整数的表示与数学上的表示相同, 十进制整数的表示与数学上的表示相同 256,-321,0 , , (2)八进制整数的表示以数字 开头,如: 八进制整数的表示以数字0开头 八进制整数的表示以数字 开头, 0234表示八进制整数 表示八进制整数(234)8,所对应的十进制数 表示八进制整数 , 2×82+3×81+4×80=156。 为 × × × 。 (3)十六进制整数的表示以 开头,如: 十六进制整数的表示以0x开头 十六进制整数的表示以 开头, 0x234表示十六进制整数 表示十六进制整数(234)16 表示十六进制整数 (注意:十六进制数前导字符 ,x前面是数字 注意: 前面是数字0) 注意 十六进制数前导字符0x, 前面是数字 在一个整型数据后面加一个字母l或 , 在一个整型数据后面加一个字母 或L,则认 为是long int型量 长整型 。如342L、0L、78L等。 型量(长整型 为是 型量 长整型)。 、 、 等
2.2.3 实数类型
• 实数类型的数据即实型数据,又称之为浮点型数据。 实数类型的数据即实型数据,又称之为浮点型数据。 Turbo C的实型数据又分为单精度型 的实型数据又分为单精度型(float)和双精 的实型数据又分为单精度型 和双精 度型(double)两种,它们所占内存字节数及取值范 两种, 度型 两种 围见表2.1。 围见表 。 • 在C语言程序设计中,实型数据有两种表达形式: 语言程序设计中, 语言程序设计中 实型数据有两种表达形式: (1)十进制数形式。如: 十进制数形式。 十进制数形式 5.734、0.273、8、224等。 、 、 、 等 (2)指数形式。如: 指数形式。 指数形式 546E+3或546E3都代表 都代表546×103。 或 都代表 × 。 • 在一般系统中,一个 在一般系统中,一个float型数据在内存中占 个字 型数据在内存中占4个字 型数据在内存中占 一个double型数据占 个字节。单精度实数提 型数据占8个字节 节,一个 型数据占 个字节。 供了7位有效数字 双精度实数提供15位有效数字 位有效数字, 位有效数字。 供了 位有效数字,双精度实数提供 位有效数字。
第2章C语言基础知识
第二章C语言基础知识2.1 常量和变量【学习目标】(1)掌握常用标识符的命名规则(2)掌握常量和变量的定义与引用方法实例5 常量和变量——输出常量与变量的值【实例任务】定义不同类型的几个变量,然后对应输出相应的常量值和变量值。
程序的运行结果如图2-1所示。
图2-1 程序运行结果【相关知识】1.标识符标识符是用来标识变量名、符号常量名、函数名、数组名、文件名、类名、对象名等,其基本构成元素源自字符集。
C语言的字符集包括英文字母、数字字符和一些特殊字符。
用这些基本元素单位命名标识符时,一定要遵循以下四个原则:(1)必须由字母(a~z,A~Z)或下画线(_)开头;(2)由字母、数字或下画线组成的长度不超过32个字符;(3)标识符中的大小写字母有区别;(4)不能与关键字同名。
下面是不合法的标识符和变量名:M.d.,John,y 123,#33,3d642.常量常量是数据在内存中一种表示形式,在程序运行过程中值永远保持不变,常用的类型有5种,包括整型常量、实型常量、字符型常量、字符串常量、符号常量。
整型常量就是整型,常用的表示形式有十进制,如10、30等。
八进制常量表示形式要以0开头,如013、012等。
十六进制常量表示形式要以0x或0X开头,如0x13、0X12等。
实型常量就是指的是一些带小数点的数,包括指数。
如3.14、-1.2、1.2e6、10.5E8等。
其中,1.2e6表示数学上1.2×106,10.5E8表示数学上10.5×108。
字符型常量是单引号引起来的单个字符,这些字符为ASCII字符,对应各有其ASCII 码值。
字符常量包括一些转义字符,字符形式和输出结果对照如表2-1所示。
表2-1 转义字符字符串常量是用双引号引起来的0个或多个字符。
字符串常量形式给出的是字符串在存储空间中的起始地址。
如“Hello World!”就是一个字符串常量。
符号常量,是指以标识符来代替一个值,这个标识符的值在程序运行过程中不能再改变。
C语言程序设计第二章
2.2 理论知识
运行结果:
2.2 理论知识
常量和变量 直接常量
字符串常量 字符串常量是用一对双引号括起来的零个或多个字符
如"","Hello,world!","123"等
双引号仅起定界作用,本身并不是字符串中的内容
2.2 理论知识
常量和变量 直接常量
字符串常量 字符串的长度 指一个字符串中所包含的字符个数 C语言规定在存储字符串常量时,由系统在字符串的末 尾自动加一个'\0'作为结8.539815
2.2 理论知识
符号常量的两个好处
1. 修改程序方便 2. 见名知意,便于理解程序
符号常量的使用
1. 其值在它的作用域内不能改变,也不能再被赋值 2. 符号常量名用大写,变量名用小写,以示区别
2.2 理论知识
举例:
#define PI 3.1415
void main() { int PI; PI=3.1415; PI=3.14159; }
指针类型 构造类型 空类型
数组类型
结构体类型
共用体类型
2.2 理论知识
C语言的基本数据类型 整数类型
数据类型 有符号整型
短整型 长整型
int a,b,sum; a=32768;
数据类型符 int
short long [int] [int]
占用字节数 2
2 4
取
值
范
围
-215~(215-1) 即-32768~32767
2.2 理论知识
常量和变量 变量的赋值
在定义变量时赋值 float data1=1.5,data2=2.6;
“先定义后赋值
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第2章 语言与字符串这个理论中,我们要把问题交为更具体的问题,“给定字符串s 和语言L ,s 是否在L 中?”进行形式化之前,要先定义几个术语。
字母表(alphabet )记为∑,是个有限集。
∑的成员称为符号(symbols )或字符(characters )。
2.1 字符串字符串(string )是某个字母表∑中符号的有限序列。
给定字母表∑,可以从∑构造的最短字符串是空串,记为ε。
字母表∑中的所有字符串集合记为∑*。
这里采用Kleene 星号运算符,定义如例2.1所示。
例2.1 字母表字母表名称字母表符号 例子字符串 英语字母表{a, b, c, …, z} ε, aabbcg, aaaaa 二进制字母表{0, 1} ε, 0, 001100 星号字母表音乐字母表 {}教材中直接数符号和字符串写成like this 。
2.1.1 字符串函数字符串s 的长度(length )记为|s |,是s 中的字符个数。
例如:|ε| = 0|1001101| = 7对任意符号c 和字符串s ,函数#c (s )定义为s 中符号c 出现的次数,例如#a (abbaaa)=4。
接合(concatenation )字符串s 与t 写成s ||t 或st ,就是在s 后面添加t 。
例如,如果x = good ,y = bye ,则xy = goodbye 。
因此|xy | = |x | + |y |。
空串ε在接合字符串时,字符串不变,因此∀x (x ε = εx = x )。
接合作为字符串函数是结合性的,因此∀s ,t ,w ((st )w = s (tw ))。
下面定义字符串复制(replication )。
对每个字符串w 和自然数i ,w i 定义为w 0 = εw i +1 = w i w在8第2章语言与字符串例如:a3 = aaa(bye)2 = byebyea0b3 = bbb最后,我们定义字符串的逆(reversal)。
对每个字符串w,字符串的逆写成W R,定义为如果|w| = 0,则W R = w = ε。
如果|w|≥1,则∃a∈∑ (∃u∈∑* (w = ua)),(即w最后一个字符为a。
)然后定义W R=au R。
定理2.1 字符串的接合与逆定理:如果w与x为字符串,则(wx)R=x R w R。
例如,(nametag)R = (tag)R(name)R = gateman。
证明:我们对|x|进行了归纳:基本case:|x| = 0。
则x=ε,(wx)R = (wε)R= (w)R = εw R=εR w R=x R w R。
证明:∀n≥0 (((|x| = n)→ ((wx)R= x R w R))→((|x| = n+1) →((wx)R = x R w R)))。
对任意字符串x,其中|x| = n+1,则x=ua,其中a为字符,|u|=n。
因此:(wx)R = (w(ua))R将x写成ua= ((wu)a)R接合的结合律= a(wu) R逆的定义= a(u R w R) 归纳假设=(au)R w R接合的结合律=(ua)R w R逆的定义=x R w R将ua写成x2.1.2 字符串的关系字符串s为t的子串(substring)的充分必要条件为s在t中连续出现。
例如:aaa是 aaabbbaaa的子串aaaaaa不是 aaabbbaaa的子串字符串s为t的正子串(proper substring)的充分必要条件为s是t的子串,且s≠t。
每个字符串是自己的子串,但不是其正子串。
空串ε是任何字符串的子串。
字符串s是t的前缀(prefix)的充分必要条件为∃x∈∑*(t = sx)。
字符串s是t的正前缀(proper prefix)的充分必要条件为s是t的前缀,且s≠t。
每个字符串是自己的前缀,但不是其正前缀。
空串ε是任何字符串的前缀。
例如,abba的前缀为ε,a,ab,abb,abba。
字符串s是t的后缀(suffix)的充分必要条件为∃x∈∑* (t = xs)。
字符串s是t的正后缀(proper suffix)的充分必要条件为s是t的后缀,且s≠t。
每个字符串是自己的后缀,但不是其正后缀。
空串ε是任何字符串的后缀。
例如,abba的后缀为ε,a,ab,abb,abba。
2.2 语言 92.2 语言语言(language)是有限字母表∑上的(有限或无限)字符串集。
介绍多种语言时,可以用∑L表示语言L的字符串采用哪个字母表。
例2.2给定字母表定义语言设∑ = {a,b}. ∑* = {ε,a,b,aa,ab,ba,bb,aaa,aab,...}.∑上的语言例子包括:Ø,{ε},{a,b},{ε,a,aa,aaa,aaaa,aaaaa},{ε,a,aa,aaa,aaaa,aaaaa,...}2.2.1 定义语言的方法我们用各种方法定义语言。
由于语言是集合,因此可以用任何时候集合定义方法定义。
例如,可以指定特征函数,即对集合中每个元素为真而对其他元素为假的谓词。
例2.3所有a在所有b之前设L={w{a∈,b}*:,w中所有a在所有b之前},则字符串ε,a,aa,aaa,aabbb和bb属于L,而aba,ba与abc不属于L。
注意有些字符串平凡满足L成员的要求。
规则没有要求其中有a或b,只是说所有a在所有b之前(如果有)。
如果没有a或没有b,则不会违反这个规则,因此字符串ε,a,aa与bb平凡满足L成员的要求。
例2.4字符串以a结尾∈,b}*(x =ya)},则字符串a,aa,aaa,bbaa与ba属于L,而ε,bab 设L={x: ∃y{a与bca不属于L。
L中的所有字符串可以表示为{a,b}*中的字符串接合一个a到末尾。
例2.5用英语描述语言的问题∈ 1, 2, 3, 4, 5, 6, 7, 8, 9}*,且x、y看成自然数的十进制表示时,设L={x#y:x,y{0,square(x)=y}。
字符串3#9和12#144属于L,而3#18、12与12#12#12不属于L。
字符串#?是不是属于L?取决于怎么理解“x、y看成自然数的十进制表示”。
ε是不是某个自然数的十进制表示?将字符串变成数字的算法可能将ε换算为0,则0是0的平方,因此#属于L。
反过来,如果将字符串变成数字的算法认为ε是无效输入,则#不属于L。
这个例子说明存在用英语描述语言的问题,即歧义性。
我们只能使用无歧义的术语,下面将介绍其他避免这个问题的定义方法。
例2.6空语言设L = {} = ∅,L是空语言,不包含任何字符串。
例2.7空语言不同于空串L = {ε}是包含空串ε的语言,不同于空语言。
10第2章语言与字符串上面介绍的所有例子符合语言的定义,即字符串集合,但不同于日常用法。
日常语言也符合这个定义。
例2.8英语不是定义合理的语言设L={w:w英语句子}例如:Kerry hit the ball. /*显然属于LColorless green ideas sleep furiously4. /*语法正确,但是什么意思呢The window needs fixed. /*L的方言Ball the Stacy hit blue. /*显然不属于L像英语之类语言的问题是没有明确规定包含什么字符串。
如果事先无法产生形式规范,就无法建立语言。
英语、中文、西班牙语之类的自然语言虽然很难指定,但非常重要。
因此,人们投入巨大精力创建形式和计算有效的描述,以便在文法检查、文本数据库抽取之类应用程序中运用。
在创建英语之类自然语言的形式描述时,可以使用我们开发的理论,见第2部分和第3部分。
例2.9停止问题语言∈ b}*:all a’s precede all b’s}设L = {w: w是对所有输入停止的C语言程序}。
L比{x{a,之类更复杂。
但和英语不同,它具有明确的形式规范。
我们要介绍的理论指出了L的许多重要特性。
可以用字符串定义的关系定义语言。
例2.10使用前缀关系我们用字符串定义的前缀关系定义如下语言:L1 ={w∈ {a,b}*: no prefix of w contains b}={ε,a,aa,aaa,aaaa,aaaaa,aaaaaa,...}L2 ={w∈ {a,b}*: no prefix of w starts with b}={w∈ {a,b}*: the first character of w is a }∪ {ε}L3 ={w∈ {a,b}*: every prefix of w starts with b}= ∅L3等于∅,因为ε是每个字符串的前缀。
由于ε不以b开头,因此没有一个字符串符合L3要求。
前面曾介绍过,我们定义了字符串的复制运算符:对任何时候字符串s和整数n,s n=n 的n个副本接合。
例如,(bye)2=byebye。
可以用复制定义语言而不是定义各个字符串,只要n用变量而不是特定常量。
例2.11用复制定义语言设L={a n:n≥0},L={ε,a,aa,aaa,aaaa,aaaaa, ...}.2.2 语言 11语言是集合,因此如果要提供语言的计算定义,可以指定:y语言生成器,枚举这个语言的元素,或者,y语言识别器,确定某个字符串是否属于这个语言,是返回真值,不是返回假值。
例如,逻辑定义L={x:∃y{a∈,b}*(x=ya)}可以返回语言生成器(枚举器)或语言识别器。
考虑一个语言L的枚举器时,有时可能要考虑L生成元素的顺序。
如果∑L的元素是D 的顺序(例如写字母或数字0~9),则可以用D定义L的总的辞典顺序(lexicographic order,写成<L):y短字符串在长字符串之前,即∀x(∀y((|x|<|y|)→(x<L y)))。
y长度相同时,用D按辞典顺序排列。
本书使用辞典顺序时,假设D是字母和数字的标准顺序。
如果D不明确,我们会指出。
程序辞典式枚举(lexicographically enumerates)L的元素的充分必要条件为按辞典顺序枚举。
例2.12辞典式枚举∈,b}*:all a’s precede all b’s},则L的辞典式枚举如下:设L={x {aε, a, b, aa, ab, bb, aaa, aab, abb, bbb, aaaa, aaab, aabb, abbb, bbbb, aaaaa, ...本书第2部分、第3部分、第4部分用各种形式方法指定各类语言的语言生成器(枚举器)或语言识别器。
2.2.2 语言的势一种语言有多大?任何时候字母表的最小语言是∅,其势(Cardinality)为0。
任何字母表∑的最大语言是∑*。
什么是|∑*|?假设∑=∅,则∑*={ε},|∑*|=1。
如果∑不是空呢?定理2.2 ∑*的势定理:如果∑≠∅,则∑*是可计数的无限集。