计算机技术基础C语言 (22).pdf
计算机技术基础(计算机技术基础(C语言)语言)电子信息系电子信息系计算机技术基础(计算机技术基础(C语言)语言)字符数组2如何处理一行或者多行文字?如何处理一行或者多行文字?例如:例如:通讯录通讯录排序(姓氏排序)排序(姓氏排序)Zhao yiDeng huaLi beiZhang long用来存放字符数据的数组用来存放字符数据的数组,称为,称为字符数组字符数组,它的每个数组元素都,它的每个数组元素都是一是一个个 字符。字符。字符数组分为一维数组和二维数组。字符数组分为一维数组和二维数组。Deng huaLi beiZhang longZhao yi计算机技术基础(计算机技术基础(C语言)语言)字符数组3字符数组字符数组定义定义char数组名数组名常量表达式常量表达式;定义定义char数组名数组名常量表达式常量表达式 常量表达式常量表达式;字符数组的初始化字符数组的初始化逐个字符赋值逐个字符赋值用字符串常量用字符串常量例例 char c10,ch34;例例 char ch5=H,e,l,l,o;ch0Hello逐个字符赋值逐个字符赋值ch1ch2ch3ch4一一维字符数组维字符数组二维字符数组二维字符数组计算机技术基础(计算机技术基础(C语言)语言)字符数组4字符数组字符数组定义定义char数组名数组名常量表达式常量表达式;定义定义char数组名数组名常量表达式常量表达式 常量表达式常量表达式;字符数组的初始化字符数组的初始化逐个字符赋值逐个字符赋值用字符串常量用字符串常量一一维字符数组维字符数组二维字符数组二维字符数组例例 char ch5=B,o,y;ch0Boy00逐个字符赋值逐个字符赋值ch1ch2ch3ch4计算机技术基础(计算机技术基础(C语言)语言)字符数组5字符数组字符数组定义定义char数组名数组名常量表达式常量表达式;定义定义char数组名数组名常量表达式常量表达式 常量表达式常量表达式;字符数组的初始化字符数组的初始化逐个字符赋值逐个字符赋值用字符串常量用字符串常量说明说明如果括号中初值个数大于数组长度,语法错误如果括号中初值个数大于数组长度,语法错误如果括号中初值个数小于数组长度,其余元素如果括号中初值个数小于数组长度,其余元素赋赋值为值为“0”字符数组的长度可以通过赋初值的方式隐含定义字符数组的长度可以通过赋初值的方式隐含定义char ch=H,e,l,l,o;h h e e l l l lo o02314计算机技术基础(计算机技术基础(C语言)语言)字符数组6字符数组字符数组定义定义char数组名数组名常量表达式常量表达式;定义定义char数组名数组名常量表达式常量表达式 常量表达式常量表达式;字符数组的初始化字符数组的初始化逐个字符赋值逐个字符赋值用字符串常量用字符串常量例例 char c10,ch34;例例 char ch5=H,e,l,l,o;ch0Hello逐个字符赋值逐个字符赋值ch1ch2ch3ch4一一维字符数组维字符数组二维字符数组二维字符数组说明说明如果括号中初值个数大于数组长度,语法错误如果括号中初值个数大于数组长度,语法错误如果括号中初值个数小于数组长度,其余元素如果括号中初值个数小于数组长度,其余元素赋赋值为值为“0”字符数组的长度可以通过赋初值的方式隐含定义字符数组的长度可以通过赋初值的方式隐含定义例例 char ch5=B,o,y;ch0Boy00逐个字符赋值逐个字符赋值ch1ch2ch3ch4char ch=H,e,l,l,o;h h e e l l l lo o02314例例 char fruit7=A,p,p,le,O,r,a,n,g,e,G,r,a,p,e,P,e,a,r,P,e,a,c,h;二维字符数组初始化二维字符数组初始化fruit0fruit1fruit2fruit3fruit4Apple00Orange0Grape00Pear000Peach00计算机技术基础(计算机技术基础(C语言)语言)字符数组7字符串字符串 字符串及其结束标志字符串及其结束标志 无字符串变量,用字符数组处理字符串无字符串变量,用字符数组处理字符串 字符串结束字符串结束标志标志为为 00:0 0例例“hello”共共5个字符,在内存占个字符,在内存占6个字节个字节 字符串长度字符串长度5h h e l e l l lo o 0 0104 104 101 101 108 108 108 108 111 111 0 0内存存放字符内存存放字符ASCII码码计算机技术基础(计算机技术基础(C语言)语言)字符数组8字符串字符串 字符串及其结束标志字符串及其结束标志 无字符串变量,用字符数组处理字符串无字符串变量,用字符数组处理字符串 字符串结束字符串结束标志标志为为 00:0 0char ch=“Hello”;char ch=H,e,l,l,o;h h e e l l l lo o02314h e h e l l l lo o 0 0023145计算机技术基础(计算机技术基础(C语言)语言)字符数组9字符串字符串 字符串及其结束标志字符串及其结束标志 无字符串变量,用字符数组处理字符串无字符串变量,用字符数组处理字符串 字符串结束字符串结束标志标志为为 00:0 0例例 char ch6=“Hello”;char ch6=“Hello”;用字符串用字符串常量初始化常量初始化ch0Helloch1ch2ch3ch40ch5计算机技术基础(计算机技术基础(C语言)语言)字符数组10字符串字符串 字符串及其结束标志字符串及其结束标志 无字符串变量,用字符数组处理字符串无字符串变量,用字符数组处理字符串 字符串结束字符串结束标志标志为为 00:0 0例例 char ch5=“Boy”;ch0Boy00用字符串常量用字符串常量ch1ch2ch3ch4计算机技术基础(计算机技术基础(C语言)语言)字符数组11字符串字符串 字符串及其结束标志字符串及其结束标志 无字符串变量,用字符数组处理字符串无字符串变量,用字符数组处理字符串 字符串结束字符串结束标志标志为为 00:0 0例例 char fruit7=“Apple”,”Orange”,”Grape”,”Pear”,”Peach”;二维字符数组初始化二维字符数组初始化fruit0fruit1fruit2fruit3fruit4Apple00Orange0Grape00Pear000Peach00计算机技术基础(计算机技术基础(C语言)语言)字符数组12字符字符数组数组的输入输出的输入输出逐个逐个字符字符I/O:%c 整个字符串整个字符串I/O:%s例例用用%s%s int main()char str6;scanf(“%s”,str);printf(“%s”,str);return 0;输入:输入:ab de输出:输出:ab用字符数组名用字符数组名,不要加不要加&,输入串长度输入串长度数组维数数组维数遇空格或回车结束遇空格或回车结束自动加自动加0遇遇0结束结束计算机技术基础(计算机技术基础(C语言)语言)字符数组13字符字符数组数组的输入输出的输入输出逐个逐个字符字符I/O:%c 整个字符串整个字符串I/O:%s例例用用%c%c int main()char str5;int i;for(i=0;i5;i+)scanf(“%c”,&stri);for(i=0;i5;i+)printf(“%c”,stri);return 0;输入:输入:ab de输出:输出:ab de例例用用%s%s int main()char str6;scanf(“%s”,str);printf(“%s”,str);return 0;计算机技术基础(计算机技术基础(C语言)语言)字符数组14字符字符数组数组的输入输出的输入输出逐个逐个字符字符I/O:%c 整个字符串整个字符串I/O:%s输入:输入:ab de输出:输出:ab例例 char ch5=H,e,l,l,o;printf(“%s”,ch);h e l l oh e l l o02314有问题有问题!计算机技术基础(计算机技术基础(C语言)语言)字符数组15字符字符数组数组的输入输出的输入输出逐个逐个字符字符I/O:%c 整个字符串整个字符串I/O:%s输入:输入:ab de输出:输出:ab例例 char ch5=H,e,l,l,o;printf(“%s”,ch);h e l l oh e l l o02314例例 char ch=“hello”;printf(“%s”,ch);h e l h e l l lo o 0 0023145计算机技术基础(计算机技术基础(C语言)语言)字符数组16int main()char a=h,e,l,0,l,o,0;printf(%s,a);return 0;【例例】输出:输出:helh e l 0 l o 0数组中有多个数组中有多个 0 0时时,遇第一个结束遇第一个结束计算机技术基础(计算机技术基础(C语言)语言)字符数组17【例例】字符串输入举例字符串输入举例#include int main()char a15,b5,c5;scanf(%s%s%s,a,b,c);printf(a=%snb=%snc=%sn,a,b,c);scanf(%s,a);printf(a=%sn,a);return 0;运行情况:运行情况:输入:输入:How are you?y o u?0H o w 0a r e 0计算机技术基础(计算机技术基础(C语言)语言)字符数组18【例例】字符串输入举例字符串输入举例#include int main()char a15,b5,c5;scanf(%s%s%s,a,b,c);printf(a=%snb=%snc=%sn,a,b,c);scanf(%s,a);printf(a=%sn,a);return 0;运行情况:运行情况:输入:输入:How are you?输出:输出:a=Howb=arec=you?输入:输入:How are you?输出:输出:a=Howscanfscanf中中%s s输入时输入时,遇遇空格或回车结束空格或回车结束运行情况:运行情况:输入:输入:How are you?如何处理带空格的字符串呢?如何处理带空格的字符串呢?H o w 0计算机技术基础(计算机技术基础(C语言)语言)字符数组19如何如何输入这些带空格的姓名输入这些带空格的姓名?使用字符串处理函数使用字符串处理函数例如:例如:通讯录通讯录排序(姓氏排序)排序(姓氏排序)Zhao yiDeng huaLi beiZhang longDeng huaLi beiZhang longZhao yi如何如何比较字符串的大小比较字符串的大小?使用字符串处理函数使用字符串处理函数