『壹』 c語言,一個字元串按字母排序
排序演算法有問題,而且,你最好確定一下你輸入字元串的長度:
#include<stdio.h>
#include<string.h>
voidmain()
{
charc[10];
inti;
intj;
inttemp;
intlength;
gets(c);
length=strlen(c);//你可能輸入不到10個字元,所以確定總共字元數
for(i=0;i<length-1;i++)//for(i=0;i<9;i++)
for(j=0;j<length-1-i;j++)//這兒問題最大for(j=0;j<9;j++)
if(c[j]>c[j+1])
{
temp=c[j];
c[j]=c[j+1];
c[j+1]=temp;
}
puts(c);
}
『貳』 C語言字元串排序
#include<stdio.h>
#include<string.h>
int main(void)
{
char str[128], ch;
int i, j;
printf("input the string:\n ");
for (i=0; i<127; i++)
{
scanf("%c", &str[i]);//不會是因為這里你沒寫取地址符吧o_O???!
if (str[i] == '\n')
{
break;
}
}
str[i] = '\0';
for (i=0; str[i]; i++)
{
for (j=i+1; str[j]; j++)
{
if (str[i] > str[j])
{
ch = str[i];
str[i] = str[j];
str[j] = ch;
}
}
}
printf("\nResult:%s\n", str);
return 0;
}
『叄』 c語言字元排序
c語言字元排序:
輸入:abc 輸出:abc acb bac bca cab cba
#include<stdio.h>
#include<stdlib.h>
#include<string.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
package dataStruct;
import java.util.LinkedList;
import java.util.List;
public class PaiLie {
private static List<String> result = new LinkedList<String>();
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;
}
}
『肆』 c語言字元串排序是什麼
#include <string.h>
#include <stdio.h>
void Swap1(char s[3][128])
{
char tmp[128] = {0};
int i, j;
for (i = 0; i < 2; ++i)
{
for (j = 0; j < 2; ++j)
{
if (strcmp(s[j], s[j+1]) > 0)
{
strcpy(tmp, s[j]);
strcpy(s[j], s[j+1]);
strcpy(s[j+1], tmp);
}
}
}
}
int main(void)
{
char s[3][128];
scanf(" %s %s %s", s[0], s[1], s[2]);
Swap1(s);
printf("%s %s %s\n", s[0], s[1], s[2]);
return 0;
}
『伍』 字元串排序 C語言編程
#include<stdio.h>
#include<string.h>
#define SIZE 91
#define LIM 31
#define HALT""
void stsrt(char*strings[],int num);
int main(void)
{
char input[LIM][SIZE];
char*ptstr[LIM];
int ct=0;
int k=0;
printf("input up to%d lines,and I will sort them. ",LIM);
printf("To stop,press the enter key at a line's start. ");
while(ct<LIM&&gets_s(input[ct],100)!=NULL&&input[ct][0]!='