版权声明:此文章为作者筱睿_原创文章,转载请附上博客链接 https://blog.csdn.net/qq_43756486/article/details/86745413
多行字符按字典序排序
多行字符用二维数组存储,排序用选择排序,字符串按字典序排序(选择排序和字典序,前面的博客有介绍)
函数
这里用到的几种函数,在此做一点介绍
1.std :: strcmp
C ++ 字符串库 空终止的字节串
在标题中定义
int strcmp ( const char * lhs,const char * rhs );
按字典顺序比较两个以空值终止的字节字符串。
结果的符号是第一对字符(均被解释为unsigned char)的值之间的差异的符号,这些字符在被比较的字符串中不同。
如果lhs或rhs不是指向以null结尾的字符串的指针,则行为是未定义的。
参数
lhs,rhs - 指向要以比较的空终止字节字符串的指针
返回值
如果在字典顺序中lhs出现,则为负值rhs。
如果lhs和rhs比较相等,则返回0.
如果按字典顺序lhs出现,则为正值rhs。
2.std :: strcpy
C ++ 字符串库 空终止的字节串
在标题中定义
char strcpy(char str1, const char* str2); 将str2拷贝给str1
3.
gets()相当于输入字符串并换行
puts()输出字符串并换行
代码 (c++实现)
#include<iostream>
#include<string.h>
using namespace std;
int main(){
int i,j;
char a[5][10],t[11];
cout<<"请输入6排字符串,每个字符串不超过5字节"<<endl;
for(i=0;i<6;i++)
gets(a[i]); //输入6排数
for(i=0;i<5;i++) //选择排序 for(i)表示排4趟
{
for (j=i+1;j<5;j++) //for(j) 从i+1向后比较
if(strcmp(a[i],a[j])>0) //如果不是字典序,就交换
{
strcpy(t,a[i]); //这里字符串交换需用strcpy函数
strcpy(a[i],a[j]);
strcpy(a[j],t);
}
}
cout<<"排序后的五排字符串为:"<<endl;
for(i=0;i<5;i++)
puts(a[i]);
system("pause");
return 0;
}