重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
如果使用的是冒泡排序,那么和整数排序唯一的不同就是这个部分:
创新互联长期为成百上千家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为苏尼特右企业提供专业的成都网站设计、成都做网站,苏尼特右网站改版等技术服务。拥有十年丰富建站经验和众多成功案例,为您定制开发。
if(a[j]a[j+1])
swap(a[j],a[j+1]);
那么在字符串排序的时候,需要用到一个库函数叫strcmp(char a[],char b[]);
这个函数在cstring库中[或者c语言中在string.h库中]
这个函数的用法就是输入字符串a,b,判断a,b的字典序大小.
若a的字典序小返回负值
若a的字典序和b相同返回0
若a的字典序大于b的字典序返回正数
然后你将上面冒泡的部分改一下的话就是:
if(strcmp(a[j],a[j+1])0)
swap(a[j],a[j+1]);
这样的话就可以实现冒泡排序了.
如果你使用的是系统快排的话,你可以用string,也可以定义一个结构体
struct Node{
char ch[1000];
}s[12];
bool cmp(const Node A,const Node B){
return strcmp(A.ch,B.ch)0;
}
int main(){
...
sort(s+1,s+10+1,cmp);
...
}
这样的话也是可以实现的.
将一组字符串按字典顺序输出的源代码如下:
#include stdio.h
int main ()
{
char name[40] ; //声明一个叫name的储存空间,数组的元素数目是40
printf("what is your name ?\n");//转化说明字符/n换行
scanf("%s,name");//输入一个字符串,使用了%s的转化修饰符,表示输入字符串
printf("hello,%s.\n",name);//输出字符串
return 0;
}
扩展资料
1、两个字符串,如果两个字符串相等,则返回0;若str1大于str2(对于大于的理解,是指从两个字符串的第一个字符开始比较,若两个字符相同,则继续比较,若发现两个字符不相等。
2、对于将数字转换为字符串,c标准中并没有定义。c标准中没有定义的原因我觉得是数字转成字符串可以使用sprintf格式化输出函数来完成。
#include stdio.h
#include string.h
const int MAXLEN = 100;
const int MAXSIZE = 10;
void sort(char title[][MAXLEN],int n) {//排序
int i,j,k;
char tstr[MAXLEN];
for(i = 0; i n - 1; ++i) {
k = i;
for(j = i + 1; j n; ++j) {
if(strcmp(title[k],title[j]) 0)
k = j;
}
if(k != i) {
strcpy(tstr,title[k]);
strcpy(title[k],title[i]);
strcpy(title[i],tstr);
}
}
}
void show(char s[][MAXLEN],int n) {
int i;
for(i = 0; i n; ++i)
printf("%s",s[i]);
puts(" ");
}
int main(void) {
char s[MAXSIZE][MAXLEN];
int i;
for(i = 0; i MAXSIZE; ++i) {
printf("string(%02d/%d):",i + 1,MAXSIZE);
fgets(s[i],MAXLEN,stdin);
}
printf("排序前:\n");
show(s,MAXSIZE);
sort(s,MAXSIZE);
printf("排序后:\n");
show(s,MAXSIZE);
return 0;
}