在一个数组中首先判断里的自符是否为回文字符,如果是在按其长度排序,若相同长度的则按ASCII码排序(用c++)求大神解救.......
花了一小时弄的,,,亲测。
#include<iostream>
using namespace std;
bool judge(char *str);
void sort(char *Selected[],int n);
int Length(char *str);
void print(char *Selected[],int n);
int main()
{
const int N=6;
char *p[N]={"f3dfg","1234321","232","sdfds","asdsa","asfxx"};
char *Selected[N];
int n=0;
int i=0;
for(i=0;i<N;i++)
{
if(judge(p[i])==false)
{
cout<<p[i]<<"不是回文字符!"<<endl;
}
else
{
cout<<p[i]<<"是回文字符!"<<endl;
Selected[n]=p[i];
n++;
}
}
sort(Selected,n);
print(Selected,n);
return 0;
}
//判断字符串是否为回文字符函数
bool judge(char *str)
{
bool flat=true;
int acount=0;
for(int i=0;*(str+i)!='\0';i++)
{
acount++;
}
for(int i=0;i<=(acount-1)/2;i++)
{
if(*(str+i)!=*(str+(acount-1)-i))
{
flat=false;
}
}
return flat;
}
//排序函数
void sort(char *Selected[],int n)
{
char* temp;
int i,j,k;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
if(Length(Selected[k])>Length(Selected[j]))k=j;
if(k!=i)
{temp=Selected[i];Selected[i]=Selected[k];Selected[k]=temp;}
}
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;Length(Selected[j-1])==Length(Selected[j]);j++)
if(strcmp(Selected[k],Selected[j]))k=j;
if(k!=i)
{temp=Selected[i];Selected[i]=Selected[k];Selected[k]=temp;}
}
}
//计算字符串长度的函数
int Length(char *str)
{
int acount=0;
for(int i=0;*(str+i)!='\0';i++)
{
acount++;
}
return acount;
}
//输出函数
void print(char *Selected[],int n)
{
int i;
for(i=0;i<n;i++)
{
cout<<Selected[i]<<endl;
}
}