当前位置:
文档之家› 清华大学程序设计课件-------第6章
清华大学程序设计课件-------第6章
将单个字符转换为字符串
原型:STRING TransformCharIntoString(char c); 意义:将单个字符 c 转换为字符串后返回 示例:若字符为 ‘a’,则转换后的字符串为”a”
字符串与数字之间的转换
原型:STRING TransformIntegerIntoString( int n ); 意义:将整数转换为字符串,如整数 12 转换为”12” 原型:int TransformStringIntoInteger( STRING s ); 意义:将字符串转换为整数,如”12”转换为 12 原型:STRING TransformRealIntoString( double d ); 意义:将实数转换为字符串,如 -1.2 转换为”-1.2”
字符串的复制
字符串的复制操作 函数原型:STRING DuplicateString( STRING s ); 意义:接受字符串参数 s,返回该字符串的副本 字符串复制示例 STRING s1, s2 = "Hello"; s1 = DuplicateString( s2 );
STRING s1, s2 = "Hello"; s1 = s2;
字符串的合并
字符串的合并操作
原型: STRING ConcatenateString( STRING s1, STRING s2 ); 意义:接受字符串参数 s1、s2,返回合并后的字符串 合并结果:s1 在前,s2 在后
字符串合并示例
STRING s, s1 = "Hello", s2 = "World"; s = ConcatenateString( s1, s2 ); 合并后的字符串为“HelloWorld”
原型:double TransformStringIntoReal( STRING s ); 意义:将字符串转换为实数,如”-1.2”转换为 -1.2
字符串的查找
查找单个字符
原型:unsigned int FindCharFirst( char key, STRING s ); 意义:在字符串 s 中从前向后查找指定字符 key 返回值:key 在字符串中的第一次出现位置(从 0 开始编号) 注意:若指定字符不存在,返回 inexistent_index
原型:
意义:在字符串 s 中从位置 pos 处(包含位置 pos 本身的字 符)开始从前向后查找指定字符 key 返回值:key 在字符串中的下一次出现位置 注意:若指定字符不存在,返回 inexistent_index
extern const unsigned int inexistent_index = 0xFFFFFFFF;
←
% / 9 C M W a k u
┗
& 0 : D N X b l v
↔
' 1 ; E O Y c m w
x
y
z
{
|
}
~
DEL
字符量的数学运算
编写函数,判断某个字符是否为数字
BOOL IsDigit( char c ) { if( c >= 48 && c <= 57 ) return TRUE; else return FALSE; }
……
……
数组的定义
定义格式:元素类型 数组名称[常数表达式]; 示例一:int a[8]; /* 定义包含 8 个整数元素的数组 */ 示例二:STRING strs[4]; /* 定义包含 4 个字符串元素的数组 */
说明
常数表达式必须是常数,不允许为常量或变量 错误示例一:const int counts = 8; int b[counts]; 错误示例二:int numbers = 8; int c[numbers]; 数组元素编号从 0 开始计数,元素访问格式为 a[0]、a[1]、…… 不允许对数组进行整体赋值操作,只能使用循环逐一复制元素 错误示例三:const int a[8], b[8]; a = b;
BOOL IsDigit( char c ) { if( c >= '0' && c <= '9' ) return TRUE; else return FALSE; }
编写函数,将小写字母转换为大写字母
char TransformIntoUpperCase( char c ) { if( c >= 'a' && c <= 'z' ) return c – 'a' + 'A'; else return c; }
字符表示的等价性
char a = 'A'; char a = 65; char a = 0101; char a = 0x41;
ASCII 码表
0 0 10 20 30 40 50 60 70 80 90 100 110 120
\0 \n
1
☺ \v
2
☻ \f
3
♥ \r
4
♦ ♫
5
♣ ☼
标准字符特征库
C 标准字符特征库:ctype.h 标准字符特征库常用函数
BOOL isalnum( char c ); BOOL isalpha( char c ); BOOL isdigit( char c ); BOOL islower( char c ); BOOL isspace( char c ); BOOL isupper( char c ); char tolower( char c ); char toupper( char c );
6
♠ ►
7
\a ◄
8
\b ↕
9
\t ‼
¶ ▲
( 2 < F P Z d n
§
▼ ) 3 = G Q [ e o
_
(Space) * 4 > H R \ f p
↖
! 5 ? I S ] g q
↑
" , 6 @ J T ^ h r
↓
# 7 A K U _ i s
→
$ . 8 B L V ` j t
unsigned int FindCharNext(char key,STRING s,unsigned int pos);
在字符串中查找指定字符,记录其在字符串中的出现次数
unsigned int GetOccurrencesOfCharInString(char c,STRING s) { unsigned int pos = 0, count = 0; pos = FindCharFirst( c, s ); while( pos != inexistent_index ) { count++; pos = FindCharNext( c, s, pos + 1 ); } return count; }
字符串的比较
字符串的比较操作 原型:int CompareString( STRING s1, STRING s2 ); 意义:接受字符串参数 s1、s2,按照字典顺序比较两个字 符串的大小 返回值:若 s1 在前返回负值;相等返回 0;否则返回正值 必须使用此函数比较两个字符串的大小关系,不能直接使 用关系操作符 字符串比较示例 STRING s1 = "Hello", s2 = "World"; if( CompareString( s1, s2 ) < 0 ) …… 并不仅限字典顺序,确切地讲……
第6章 复合数据类型
学习目标
字符 字符串 数组 结构体 数据集
6.1 字 符
字符类型、字符文字与量
定义格式:char ch; const char cch = 'C'; 字符文字使用单引号对 实际存储时字符类型量存储字符的对应 ASCII 值 可使用 signed 与 unsigned 修饰字符类型
字符串的内容
获取字符串的特定字符
原型:char GetIthChar( STRING s, unsigned int pos ); 意义:获取字符串 s 中位置为 pos 处的字符 注意:字符位置从 0 开始编号
获取字符串的子字符串
原型:
STRING GetSubString(STRING s,unsigned int pos,unsigned int n);
6.3 数 组
数组的意义与性质 数组的存储表示 数组元素的访问 数组与函数 多维数组
数组的意义与性质
数组是具有相同数据类型且按一定次序排列的一组 变量的集合体。
内存
a[0]
a[1]
例: float array[10]; int a[8];
// 数值型数组
a[2] a[3] a[4]
a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7]
意义:获取字符串 s 中从 pos 处开始的连续 n 个字符构成的 子字符串 注意:字符位置从 0 开始编号;若不存在连续 n 个字符,
字符串大小写转换