重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
void fun(char a[])
创新互联公司长期为近1000家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为丛台企业提供专业的成都网站设计、做网站,丛台网站改版等技术服务。拥有10余年丰富建站经验和众多成功案例,为您定制开发。
{ int k=0,i,j;
char t;
while(a[k])
k++;//计算字符串长度
for(i=0;ik;i++)//冒泡排序
for(j=0;jk-1-i;j++)
if(a[j]a[j+1])
{t=a[j];
a[j]=a[j+1];
a[j+1]=t;}
}
你有两个错误,一是C的变量定义必须在所有语句之前,二是字符串不能赋值,必须使用strcpy函数,修改后的程序代码和运行结果如下:
$ cat a.c
#includestdio.h
#includestring.h
void Solve();
void sort(char *name[], int n);
int main()
{
Solve();
return 0;
}
void Solve()
{
int i,n;
char name[100][100];
scanf("%d",n);
for(i=0;in;i++)
{
gets(name[i]);
}
sort(name,n);
for(i=0;in;i++)
{
puts(name[i]);
}
}
void sort(char *name[100], int n)
{
int i,j,k;
char *temp;
for(i=0;in-1;i++)
{
k=i;
for(j=i+1;jn;j++) if(strcmp(name[k],name[j])0) k=j;
if (k!=i)
{
{
strcpy(temp,name[i]);
strcpy(name[i],name[k]);
strcpy(name[k],temp);
}
}
}
}
$ cc a.c
"a.c", line 19: warning #2167-D: argument of type "char (*)[100]" is
incompatible with parameter of type "char **"
sort(name,n);
^
$ a.out
6dkjlfhgjkshdfjkgh
1kdfghj
3dkjfhghd
2dlkfjgklj
5ldfkhlkj
4dflkghklj
1kdfghj
3dkjfhghd
2dlkfjgklj
5ldfkhlkj
4dflkghklj
$ cc -V
cc: HP C/aC++ B3910B A.06.25 [Nov 30 2009]
/cq/u/cqjsdba/ygb
#include stdio.h
#includestdlib.h
#includestring.h
int comp(char *a,char *b)
{
while(*a==*b*a*b){a++;b++;}
return (int)*a-(int)*b;
}
int main(void)
{
char s[1000][20];
int i,n;
scanf("%d\n",n);
for(i=0;in;i++)
gets(s[i]);
qsort(s,n,sizeof(s[0]),comp);
printf("\n");
for(i=0;in;i++)
puts(s[i]);
system("pause");
return 0;
}
c语言字符排序:
输入:abc 输出:abc acb bac bca cab cba
#includestdio.h
#includestdlib.h
#includestring.h
void mySwap(char *a,char *b)
{
char temp;
temp = *a;
*a = *b;
*b = temp;
}
void PaiLie(char *list,int begin,int end)
{
int i;
if(list == NULL)
return;
if(begin == end)
{
printf("%s ",list);
printf("\n");
}else{
for(i = begin ; i=end ;i++)
{
mySwap(list[i],list[begin]);
PaiLie(list,begin+1,end);
mySwap(list[i],list[begin]);
}
}
}
void main()
{
char list[] = "abc";
char out [4];
PaiLie(list,0,2);
//ZuHe(list,out,3,0,0);
}
如果有重复,去掉重复的,然后满足一些特定的要求(如:第3个位置不可以是4,3和5不可以相邻)
Java实现。
此方法需要输入数字从小到大排列,若不是只需在排列之前预处理一下即可。
关键是compareTo方法
[java] view plain copy
package dataStruct;
import java.util.LinkedList;
import java.util.List;
public class PaiLie {
private static ListString result = new LinkedListString();
private static String lastResult = "";
public static void main(String[] args) {
String s = "1223";
char[] c = s.toCharArray();
paiLie(c, 0, c.length - 1);
for (int i = 0; i result.size(); i++)
System.out.println(result.get(i));
}
public static boolean validator(String s) {
if (s.compareTo(lastResult) = 0) //去重复的关键
return false;
if (s.charAt(2) == '4')
return false;
if (s.indexOf("35") = 0)
return false;
if (s.indexOf("53") = 0)
return false;
return true;
}
public static void paiLie(char[] c, int begin, int end) {
if (begin == end) {
String s = new String(c);
if (validator(s)) {
lastResult = s;
result.add(s);
}
}
for (int i = begin; i = end; i++) {
swap(c, begin, i);
paiLie(c, begin + 1, end);
swap(c, begin, i);
}
}
public static void swap(char[] c, int i, int j) {
char temp;
temp = c[i];
c[i] = c[j];
c[j] = temp;
}
}