版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第6 6章章 字符串字符串字符串基础(概念、表示、输入输出)字符串基础(概念、表示、输入输出)字符串的基本运算字符串的基本运算字符串应用举例(数值与字符串的转换、字符串应用举例(数值与字符串的转换、单词分离)单词分离)&字符常量字符常量v定义定义: :用用单引号单引号括起来的单个括起来的单个普通字符普通字符或或转义字符转义字符. v字符常量的字符常量的值值:该字符的:该字符的ASCIIASCII码码值值转义字符及其含义:转义字符及其含义:转义字符含义nvradddtbf“xhh转义字符含义换行垂直制表回车响铃单引号3位8进制数代表的字符水平制表退格换页反斜线双引号2位16进制数代表的
2、字符例:A-101-x41-65如 A65, a97, 048 , n10如 a A ? n 101v转义字符转义字符: :反斜线后面跟一个字符或一个代码值表示反斜线后面跟一个字符或一个代码值表示6.1 6.1 字符数据字符数据v字符常量与字符串常量不同字符常量与字符串常量不同&字符串常量字符串常量v定义:用双引号定义:用双引号( () )括起来的字符序列括起来的字符序列v存储:存储:每个字符串尾每个字符串尾自动自动加一个加一个 00 作为字符串作为字符串结束标志结束标志h e l l o 0例例 字符串字符串hellohello在内存中在内存中a a 0例 aa例例 空串空串 0例:
3、 char ch; ch=A; 例: char ch; ch=A; 【例【例6-16-1】观察下面程序的运行结果】观察下面程序的运行结果,注意转义字符的使用注意转义字符的使用 #include void main( ) printf(%d,%cn,a,a); printf(%d,%cn,A+1,A+1); printf(%dn,a-A); printf(%d,%dn,1,x1); printf(%d,%cn,25,x15); printf(I am OKn );字符型变量字符型变量字符的输入与输出字符的输入与输出scanfscanf和和printfprintfscanf(%c,&ch)
4、;从键盘输入一个字符,并将输入的字符存从键盘输入一个字符,并将输入的字符存放在变量放在变量ch之中。之中。printf(%c,ch);将字符型变量将字符型变量ch的在屏幕上输出。的在屏幕上输出。 字符的输入与输出字符的输入与输出getcgetc和和putcputc字符输入函数:字符输入函数:函数原型:函数原型:char getc() 或者或者 char getchar()使用方法:使用方法:ch = getc() 或者或者 ch = getchar()字符输出函数字符输出函数:函数原型:函数原型:putc(char ch) 或者或者 putchar(char ch)使用方法:使用方法:putc
5、(ch) 或者或者 putchar(ch)6.2 6.2 字符串字符串 字符串的存储字符串的存储 依次存储每个字符依次存储每个字符ASCII码码 例如字符串例如字符串”Strings.n” C C语言并没有为字符串提供任何专门的表示语言并没有为字符串提供任何专门的表示法,完全使用法,完全使用字符数组字符数组和和字符指针字符指针来处理来处理字符串就是一串以用字符串就是一串以用”引起来的字符引起来的字符, , C C语言自动为其添加语言自动为其添加00结束符结束符Hello China 字符表示:字符表示:Strings.n0ASCII码表示码表示:831161141051101031154610
6、0用一维数组表示字符串用一维数组表示字符串字符数组字符数组: :每个元素都是字符类型的数组每个元素都是字符类型的数组vchar str80;是字符数组,但不代表字符串是字符数组,但不代表字符串数组的最后一个元素必须是数组的最后一个元素必须是06.36.3 字符串的表示字符串的表示字符数组的初始化字符数组的初始化 逐个元素初始化逐个元素初始化 char str6 = C,h,i,n,a,0; 用字符串常量直接对数组初始化用字符串常量直接对数组初始化 char str11 = China; char str11 = China;必不可少的,必须自己写上去必不可少的,必须自己写上去系统会自动加上系统
7、会自动加上 0 用指针表示字符串变量用指针表示字符串变量 char *str=Hello China;只能进行整体初始化 或者或者,在需要时给字符型指针赋值:在需要时给字符型指针赋值:char *cp,str =” Hello china!”; cp=str;字符指针就是指向字符类型数据的指针字符指针就是指向字符类型数据的指针str或者或者cp=Hello China;字符数组与字符指针的区别字符数组与字符指针的区别定义和初始化方法不同定义和初始化方法不同 char *pStr = Hello China;Hello ChinapStrchar str12 = Hello China; cha
8、r *pStr;pStr = Hello China;strpStr = &str0;赋值方法不同赋值方法不同 str = Hello China;Hello Chinachar str12 = Hello China; char *pStr;pStr = Hello China;数组名数组名str是地址常量是地址常量 字符指针字符指针pStr是变量是变量 字符数组与字符指针的区别字符数组与字符指针的区别 char *cp; 与与 char str20;vchar str20; str=“I love China!”; ( ) char *cp; cp=“I love China!”;
9、 ( )vcp接受键入字符串时接受键入字符串时,必须必须先开辟存储空间先开辟存储空间例例 char str10; scanf(“%s”,str); ( )而而 char *cp; scanf(“%s”, cp); ( )改为改为: char *cp,str10; cp=str; scanf(“%s”,cp); ( )字符数组与字符针的区别字符数组与字符针的区别 6.4 6.4 字符串数组字符串数组(1) 用用字符型二维数组字符型二维数组表示字符串数组表示字符串数组(2) 用用字符型指针数组字符型指针数组表示字符串数组表示字符串数组6.4.1 6.4.1 用字符型二维数组表示字符串数组用字符型二
10、维数组表示字符串数组char astrMN;astr可以看做一个字符串数组。可以看做一个字符串数组。存储存储M个字符串,每一行就是一个字符串。个字符串,每一行就是一个字符串。每一个字符串最多可以存储每一个字符串最多可以存储N-1个字符。个字符。char a74=”SUN”,”MON”,”TUE”,”WED”,”THU”,”FRI”,”SAT”; 定义了定义了7个字符串,每个字符串最多可以有三个有效字符。个字符串,每个字符串最多可以有三个有效字符。char b 8=”well”,”good”,”middle”,”pass”,”bad”; 定义了定义了5个字符串,每个字符串最多可以有个字符串,每个
11、字符串最多可以有7个字符。个字符。.2用字符型指针数组表示字符串数组用字符型指针数组表示字符串数组char *pstr3 = Wuhan, Beijing, Shanghai;astr0Wuhan00000astr1Beijing000astr2Shanghai00char astr310=Wuhan, Beijing, Shanghai;pstr0Wuhan 0 pstr1Beijing 0 pstr2Shanghai0逐个输入输出逐个输入输出for (i=0; stri!=0; i+) putchar(stri);putchar(n);一般不用字符串长度控制一般不用字符串长
12、度控制6.5 6.5 字符串的输入输出字符串的输入输出 char str10;一次性输入输出一次性输入输出scanf(%s,str); printf(%s,str);char str10;gets(str); puts(str);不能输入带空格的字符串不能输入带空格的字符串可以输入带空格的字符串可以输入带空格的字符串6.5 6.5 字符串的输入输出字符串的输入输出 scanf(%s,str); printf(%s,str);char str10;gets(str); puts(str);空格、回车或跳空格、回车或跳格(格(TabTab)符作为)符作为输入数据的分隔输入数据的分隔符,因而不能被符
13、,因而不能被读入,输入遇到读入,输入遇到这些字符时,系这些字符时,系统认为字符串输统认为字符串输入结束入结束strstr本身是指针,所以本身是指针,所以strstr前就不前就不应该再加取地址运算符应该再加取地址运算符“&”&”了了 6.5 6.5 字符串的输入输出字符串的输入输出 scanf()函数函数格式:格式:scanf(%s, str) 功能:从键盘输入一以空格或回车结束的字符串放入字符串中,功能:从键盘输入一以空格或回车结束的字符串放入字符串中,并自动加并自动加0说明:说明: 输入串长度应小于字符数组维数,输入串长度应小于字符数组维数,str可以是字符数组名,也可以是字
14、符数组名,也可以是字符指针名可以是字符指针名。如果是字符指针名,必须先为字符指针分配。如果是字符指针名,必须先为字符指针分配空间。空间。 输入串中的前导空格忽略,中间的空格作为输入结束标志输入串中的前导空格忽略,中间的空格作为输入结束标志例如:例如:char str80; scanf (%s, str);当输入:当输入:hellochina 时,时,str将是:将是:hello说明:说明: (3 3)如果利用一个)如果利用一个scanfscanf函数输入多个字符串,则函数输入多个字符串,则在输入时以空格分隔。在输入时以空格分隔。例如:例如:char strlchar strl5 5,str2s
15、tr25 5,str3str35 5; ;scanfscanf(%s%s%s(%s%s%s,str1str1,str2str2,str3);str3);输入数据:输入数据:How are you? How are you? 数组中未被赋值的元素的值自动置数组中未被赋值的元素的值自动置00。(4 4)使用)使用%ns%ns格式控制符限制输入的字符个数格式控制符限制输入的字符个数 注意:注意:scanfscanf函数中的输入项如果字符数组名。不要函数中的输入项如果字符数组名。不要再加地址符再加地址符& &,因为在,因为在C C语言中数组名代表该数组的语言中数组名代表该数组的起始地址
16、。起始地址。下面写法不对:下面写法不对:scanf(%sscanf(%s,&str&str) );getsgets函数函数格式:格式:gets(str) 头文件:头文件:stdio.h 功能:从键盘输入一以回车结束的字符串放入字符功能:从键盘输入一以回车结束的字符串放入字符数组中,并自动加数组中,并自动加0说明:输入串长度应小于字符数组长度说明:输入串长度应小于字符数组长度例如:例如:char str80; gets (str);输入:输入:Ilovechina! str中的字符串将是:中的字符串将是:I love china!字符串输入函数的比较字符串输入函数的比较getsg
17、etsscanfscanf输入的字符串中可包含空格字符输入的字符串中可包含空格字符输入的字符串中不可包含空格字符输入的字符串中不可包含空格字符只能输入一个字符串只能输入一个字符串可连续输入多个字符串(使用可连续输入多个字符串(使用%s%s%s%s)不可限定字符串的长度不可限定字符串的长度可限定字符串的长度(使用可限定字符串的长度(使用%ns%ns)遇到回车符结束遇到回车符结束遇到空格符或回车符结束遇到空格符或回车符结束putsputs函数函数格式:格式:puts(字符串地址字符串地址) 头文件:头文件:stdio.h 功能:向显示器输出字符串(输出完,自动换行)功能:向显示器输出字符串(输出完
18、,自动换行)说明:如果是字符数组,则必须以说明:如果是字符数组,则必须以0结束结束char str = I love china! ;puts (str);puts (I love Nanjin! ); 输出结果输出结果: I love china! I love Nanjin!printfprintf()()函数函数格式:格式:printf(%s, 字符串地址字符串地址) 功能:依次输出字符串中的每个字符直到遇到字符功能:依次输出字符串中的每个字符直到遇到字符0 (0不会被输出)不会被输出)说明:说明:(1 1)用用“%s”%s”格式符输出字符串时,格式符输出字符串时,printfprint
19、f函数中的函数中的输出项是字符数组名。输出项是字符数组名。(2 2)如果数组长度大于字符串实际长度,也只输出到如果数组长度大于字符串实际长度,也只输出到遇遇00结束。结束。(3 3)输出字符不包括结束符输出字符不包括结束符00。(4 4)如果一个字符数组中包含一个以上如果一个字符数组中包含一个以上00,则,则遇第一个遇第一个00时输出就结束。时输出就结束。 指针数组赋值与初始化指针数组赋值与初始化赋值赋值:main() int b23,*pb2; pb0=b0; pb1=b1; .int *pb2pb0pb1int b23123246 初始化初始化: main() int b23,*pb =b
20、0,b1; . int *pb2pb0pb1int b23123246main() int b23,*pb2; int i,j; for(i=0;i2;i+) for(j=0;j3;j+) bij=(i+1)*(j+1); pb0=b0; pb1=b1; for(i=0;i2;i+) for(j=0;j3;j+,pbi+) printf(b%d%d:%2dn,i,j,*pbi);例例 用指针数组处理二维数组用指针数组处理二维数组int *pb2pb0pb1int b23b00 *pb0b01 *(pb0+1)b02 *(pb0+2)b10 *pb1b11 *(pb1+1)b12 *(pb1+2
21、)123246例例 用二级指针处理字符串用二级指针处理字符串#define NULL 0void main() char *p; char *name=hello,good,world,bye,; p=name+1; printf(%o : %s , *p,*p); p+=2; while(*p!=NULL) printf(%sn,*p+);name0name1name2name3name4char *name5worldbye0hellogoodnamep运行结果:运行结果:644 : good bye用*p可输出地址(%o或%x), 也可用它输出字符串(%s)p*(p+)PascalBas
22、icFortranJavaptr指针数组指针数组字符串字符串pVisual Cv二级指针与指针数组的关系二级指针与指针数组的关系 int *p 与与 int *q10 l指针数组名是二级指针指针数组名是二级指针常量常量lp=q; p+i 是是qi的地址的地址l指针数组作形参,指针数组作形参,int *q 与与int *q完全等价完全等价; 但但作为变量定义两者不同作为变量定义两者不同l系统只给系统只给p分配能保存一个指针值的内存区;而分配能保存一个指针值的内存区;而给给q分配分配10块内存区,每块可保存一个指针值块内存区,每块可保存一个指针值带参数的带参数的main函数和命令行参数函数和命令行
23、参数 带参带参main函数的形式:函数的形式: main( int argc,char *argv )其中:其中: argc和指针数组和指针数组argv是两个内设参量是两个内设参量 argc 代表在命令行输入的参数个数,由于程代表在命令行输入的参数个数,由于程序名也计算在内,所以,序名也计算在内,所以, argc的值最小为的值最小为1 指针数组指针数组argv中的各元素依次指向用户输入中的各元素依次指向用户输入的各个命令行参数。的各个命令行参数。功能:将命令行参数传递给程序功能:将命令行参数传递给程序main(int argc,char *argv) if( argc!=3) printf(y
24、ou forget to type the namen); else printf(hello %s and %s n,argv1,argv2); 例:例: mymain.c可执行文件名为可执行文件名为mymain.exe,在命令行输入:,在命令行输入:mymain Tom Jerry屏幕上输出结果为:屏幕上输出结果为: hello Tom and Jerry 因此:因此:1. 所有的命令行参数都是字符串形式,各命令行所有的命令行参数都是字符串形式,各命令行参数之间必须用空格或制表符分隔,逗号和分参数之间必须用空格或制表符分隔,逗号和分号将视为有效字符。号将视为有效字符。上例上例 :若输入:若
25、输入 mymain Tom,Jerry则显示:则显示: you forget to type the name若输入若输入 mymain Tom,Jerry Jeck则显示:则显示: hello Tom ,Jerry and Jeck2. argc 代表在命令行输入的参数个数,由于程代表在命令行输入的参数个数,由于程序名也计算在内,所以,序名也计算在内,所以, argc的值最小为的值最小为16.6 6.6 字符串的基本运算字符串的基本运算 字符类型判定函数(头文件字符类型判定函数(头文件 ctype.hctype.h)判断字符的类型,如英文字母,数字,控制符,大小写判断字符的类型,如英文字母,
26、数字,控制符,大小写 字符串处理函数字符串处理函数( (头文件头文件 string.hstring.h) )求字符串长度,字符串复制、字符串拼接、字符串比较求字符串长度,字符串复制、字符串拼接、字符串比较(3)(3)字符串与数字转换函数字符串与数字转换函数(stdlib.h(stdlib.h) )字符串转换为整数、字符串转换为浮点数字符串转换为整数、字符串转换为浮点数整数、浮点数等转换为字符串等。整数、浮点数等转换为字符串等。字符串处理函数字符串处理函数#include strcpy(目的字符串目的字符串,源字符串源字符串);string copystrlen(字符串字符串);string l
27、engthstrcat(目的字符串目的字符串,源字符串源字符串);string combinationstrcmp(字符串字符串1,字符串字符串2);string comparison1. 1.求字符串长度求字符串长度函数原型:函数原型:int strlen(const char s) 头文件:头文件:string.h 功能:计算字符串长度功能:计算字符串长度返回值:返回字符串实际长度,不包括返回值:返回字符串实际长度,不包括0在内在内char str10 = China;printf(%d, strlen(str);打印结果是打印结果是 5 5,6 6,还是,还是1010?不包括不包括00的
28、实际字符的个数的实际字符的个数字符串操作的基本库函数字符串操作的基本库函数【例【例6-76-7】( (strlenstrlen函数函数与与sizeofsizeof运算符运算符的比较的比较) )对照下面的程序及结果,分析原因。对照下面的程序及结果,分析原因。#include#includevoid main()char str1 = 0123456789;char str2 = A0BC0D;char str3 = 01230456789;char *str4 = 01230846759;printf (%4d, %4dn, strlen(str1),sizeof(str1); printf (
29、%4d, %4dn, strlen(str2),sizeof(str2); printf (%4d, %4dn, strlen(str3),sizeof(str3); printf (%4d, %4dn, strlen(str4),sizeof(str4); 运行结果运行结果 10, 11 1, 7 9, 10 4, 4/*045作为一个整体作为作为一个整体作为8进制数对待进制数对待*/ /*遇到结束符遇到结束符0,就结束,就结束*/ 2. 2.字符串复制字符串复制#include strcpy(目的字符串目的字符串,源字符串源字符串);字符串能否用字符串能否用= =整体复制?整体复制?str
30、2 = str1;strcpy(str2, str1);注意复制的方向!注意复制的方向!str2必须足够大!必须足够大!字符串复制字符串复制char str120, str220=China ,*str3;strcpy(str1, str2); strcpy(str3,str2); str3 = str2;char* strncpy(char* dest, const char* src,int n); 将字符串将字符串src的前的前n个字符复制到字符数组个字符复制到字符数组dest中去,中去,并在末尾加并在末尾加0 strncpy(str1, str2, 3); 3. 3.字符串比较字符串比
31、较#include strcmp(字符串字符串1,字符串字符串2);字符串能否用字符串能否用,=比较大小?比较大小?if (str2 = str1)if (strcmp(str2, str1) = 0)字符串比较字符串比较#include strcmp(s1,s2);字符串是如何比较大小的?字符串是如何比较大小的?当出现第一对不相等的字符时,就当出现第一对不相等的字符时,就由这两个字符决定所在字符串的大由这两个字符决定所在字符串的大小,返回其小,返回其ASCIIASCII码比较的结果值码比较的结果值comparecomputerstrcmp(compare, computer)返回负整数返回负
32、整数若若s1 s2, 返回正整数返回正整数若若s1 = s2, 返回零返回零compare computer 表示为表示为strcmp(str1, str2) 0为真为真4. 4.字符串连接字符串连接#include strcat(目的字符串目的字符串,源字符串源字符串);strcat(str2, str1);str2必须足够大!必须足够大!5. 5.从字符串中查找字符从字符串中查找字符函数原型:函数原型:char* strchr(const char* s, int c);功能功能: 在字符串在字符串s中查找指定的字符中查找指定的字符c。返回值:返回值:如果字符如果字符c在串在串s中,返回一
33、个指针,指向字中,返回一个指针,指向字符符c在串在串s中首次出现的位置。如果字符中首次出现的位置。如果字符c不在不在s中,中,返回空指针。返回空指针。char* strrchr(const char* s, int c); 从从s所指字符串的最后一个字符起顺序向前查找所指字符串的最后一个字符起顺序向前查找 6. 6.从字符串中查找子串从字符串中查找子串函数原型:函数原型:char* strstr(const char* s1, const char* s2)功能:功能:从第一个参数从第一个参数s1所指字符串中第一个字符起,顺所指字符串中第一个字符起,顺序向后查找出与第二个参数序向后查找出与第二
34、个参数s2所指字符串相同的子串,所指字符串相同的子串,若查找成功则返回该子串的首地址,否则返回若查找成功则返回该子串的首地址,否则返回NULL。 char a20=abcdabxcdabxy;char b4=abx;char c4=axy;printf(“%sn”,strstr(a,b);if(strstr(a,c)=NULL) printf(“Not found!n);printf(“%sn”,strstr(学习文化知识学习文化知识,文化文化); 运行结果运行结果abxcdabxyNot found!文化知识文化知识7. 7.整数转换成字符串整数转换成字符串函数原型:函数原型:char *i
35、toa(int value, char *str, int radix);参数:参数:value 要转化的数值,要转化的数值,radix 转换的进制,如转换的进制,如10表表示按十进制转换,示按十进制转换,str保存转换后的字符串。保存转换后的字符串。返回值:返回值:返回指向返回指向str的指针。的指针。#include 字符串转换成整数字符串转换成整数函数原型:函数原型: int atoi(char *str);参数:参数:str为待转换的字符串,为待转换的字符串,str必须是数字必须是数字组成的字符串,如组成的字符串,如“235”等。等。返回值:返回值:转换后的整数。转换后的整数。 #in
36、clude 字符串逆置字符串逆置数制转换数制转换字符串排序字符串排序整数转换成字符串整数转换成字符串单词分离单词分离6.7 6.7 字符串应用举例字符串应用举例字符串逆置字符串逆置对于给定的字符串对于给定的字符串s,将其逆序,即如果将其逆序,即如果s=”abcdef”,则逆,则逆序后的字符串是序后的字符串是s=”fedcba”算法算法1:数组方式实现:数组方式实现void str_reverse(char *s) char t; int low=0,high; high=strlen(s)-1; while(lowhigh) t=slow; slow=shigh; shigh=t; low+;
37、 high-; 算法算法2:指针方式实现:指针方式实现void str_reverse(char *s) char *p,*q,t; int n; n=strlen(s); p=s; q=&sn-1; while(pq) t=*p; *p=*q; *q=t; p+; q-; Ba0427 MOD 16 = B 427 16 =2626 MOD 16 = A26 16= 1A a11 a2 1 MOD 16 = 11 16 = 0C0C1C2C3C4C5C6C7C8C9C10C11C12C13C14C15S0S1S2S3S4S5S6S7S8S9S10S11S12S13S14S151642
38、7261010111(427)10=(1AB)1616BA116数制转换数制转换把一个十进制整数转换为对应的十六进制数字把一个十进制整数转换为对应的十六进制数字符串输出。符串输出。 此函数用于把十进制整数此函数用于把十进制整数x x转换为十六进制数字符串输出转换为十六进制数字符串输出char *dec2hex(int x,char a ) int i=0,rem; do rem=x%16;x=x/16;if(rem10) ai=48+rem; /0字符的字符的ASCII码为码为48else ai=55+rem; /A字符的字符的ASCII码为码为65i+;while(x!=0);ai=0; /
39、字符串结束标记字符串结束标记str_reverse(a); /倒序输出,倒序输出,调用调用串逆置函数串逆置函数 return a;void main(void)char *str=Follow me,BASIC,Great wall,FORTRAN , Computer ; char *p; int i,j,k;for(i=0;i4;i+) k=i;for(j=i+1;j0)k=j;if(k!=i) p=strk; strk = stri; stri=p; for(i=0;i5;i+)printf(%s n,stri); 例:将若干个字符串升序排序后输出例:将若干个字符串升序排序后输出例例 对
40、字符串排序(简单选择排序)对字符串排序(简单选择排序)#include #include main() void sort(char *name,int n); void print(char *name,int n); char *name=Follow me,BASIC, Great Wall,FORTRAN,Computer ; int n=5; sort(name,n); print(name,n);void sort(char *name,int n) char *temp; int i,j,k; for(i=0;in-1;i+) k=i; for(j=i+1;j0) k=j; if
41、(k!=i) temp=namei; namei=namek; namek=temp; name0name1name2name3name4nameGreat WallFORTRANComputerFollow meBASICkjkjjji=0例例 对字符串排序(简单选择排序)对字符串排序(简单选择排序)namename0name1name2name3name4Great WallFORTRANComputerFollow meBASICkkjjji=1k#include #include main() void sort(char *name,int n); void print(char *
42、name,int n); char *name=Follow me,BASIC, Great Wall,FORTRAN,Computer ; int n=5; sort(name,n); print(name,n);void sort(char *name,int n) char *temp; int i,j,k; for(i=0;in-1;i+) k=i; for(j=i+1;j0) k=j; if(k!=i) temp=namei; namei=namek; namek=temp; 例例 对字符串排序(简单选择排序)对字符串排序(简单选择排序)namename0name1name2name
43、3name4Great WallFORTRANComputerFollow meBASICkkjji=2#include #include main() void sort(char *name,int n); void print(char *name,int n); char *name=Follow me,BASIC, Great Wall,FORTRAN,Computer ; int n=5; sort(name,n); print(name,n);void sort(char *name,int n) char *temp; int i,j,k; for(i=0;in-1;i+) k
44、=i; for(j=i+1;j0) k=j; if(k!=i) temp=namei; namei=namek; namek=temp; 例例 对字符串排序(简单选择排序)对字符串排序(简单选择排序)namename0name1name2name3name4Great WallFORTRANComputerFollow meBASICi=3kjk#include #include main() void sort(char *name,int n); void print(char *name,int n); char *name=Follow me,BASIC, Great Wall,FOR
45、TRAN,Computer ; int n=5; sort(name,n); print(name,n);void sort(char *name,int n) char *temp; int i,j,k; for(i=0;in-1;i+) k=i; for(j=i+1;j0) k=j; if(k!=i) temp=namei; namei=namek; namek=temp; name0name1name2name3name4void print(char *name ,int n) int i; char *p; p = name; for (i=0; in; i+) printf(%sn, *p); p+; 例例 对字符串排序(简单选择排序)对字符串排序(简单选择排序)char *Int2Str(int x,char *istr) char sign,ch; char *p,*t; int r; p=t=istr; if(x0) r=x%10; x=x/10; *p+=48+r;/*数字数字0的的ascII码值码值 */ 整数转换成字符串整数转换成字符串 if(sign=-) *p+=-; *p=0; p-; while(tp) /*将将p中的数字符串倒序排列中的数字符串倒序排列 */ ch
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论